mirror of
https://github.com/servo/servo.git
synced 2025-06-25 09:34:32 +01:00
Add a with_imm_element_like() method.
… gives a generic element from a generic node.
This commit is contained in:
parent
62f1f03c16
commit
6c41be9c13
3 changed files with 19 additions and 7 deletions
|
@ -120,12 +120,12 @@ pub enum ElementTypeId {
|
|||
// Element methods
|
||||
//
|
||||
|
||||
impl<'self> ElementLike<'self> for Element {
|
||||
fn get_local_name(&'self self) -> &'self str {
|
||||
impl ElementLike for Element {
|
||||
fn get_local_name<'a>(&'a self) -> &'a str {
|
||||
self.tag_name.as_slice()
|
||||
}
|
||||
|
||||
fn get_attr(&'self self, name: &str) -> Option<&'self str> {
|
||||
fn get_attr<'a>(&'a self, name: &str) -> Option<&'a str> {
|
||||
// FIXME: Need an each() that links lifetimes in Rust.
|
||||
for attr in self.attrs.iter() {
|
||||
// FIXME: only case-insensitive in the HTML namespace (as opposed to SVG, etc.)
|
||||
|
|
|
@ -25,7 +25,7 @@ use extra::arc::Arc;
|
|||
use js::jsapi::{JSObject, JSContext};
|
||||
use netsurfcss::util::VoidPtrLike;
|
||||
use newcss::complete::CompleteSelectResults;
|
||||
use servo_util::tree::{TreeNode, TreeNodeRef};
|
||||
use servo_util::tree::{TreeNode, TreeNodeRef, TreeNodeRefAsElement};
|
||||
use servo_util::range::Range;
|
||||
use gfx::display_list::DisplayList;
|
||||
|
||||
|
@ -156,6 +156,14 @@ impl<View> TreeNodeRef<Node<View>> for AbstractNode<View> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<View> TreeNodeRefAsElement<Node<View>, Element> for AbstractNode<View> {
|
||||
#[inline]
|
||||
fn with_imm_element_like<R>(self, f: &fn(&Element) -> R) -> R {
|
||||
self.with_imm_element(f)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
impl<View> TreeNode<AbstractNode<View>> for Node<View> { }
|
||||
|
||||
impl<'self, View> AbstractNode<View> {
|
||||
|
|
|
@ -250,6 +250,10 @@ pub trait TreeNodeRef<Node>: Clone {
|
|||
}
|
||||
}
|
||||
|
||||
pub trait TreeNodeRefAsElement<Node, E: ElementLike>: TreeNodeRef<Node> {
|
||||
fn with_imm_element_like<R>(self, f: &fn(&E) -> R) -> R;
|
||||
}
|
||||
|
||||
fn gather<Node, Ref: TreeNodeRef<Node>>(cur: &Ref, refs: &mut ~[Ref],
|
||||
postorder: bool, prune: &fn(&Ref) -> bool) {
|
||||
// prune shouldn't mutate, so don't clone
|
||||
|
@ -326,7 +330,7 @@ pub trait TreeNode<Ref: TreeNodeRef<Self>> {
|
|||
}
|
||||
|
||||
|
||||
pub trait ElementLike<'self> {
|
||||
fn get_local_name(&'self self) -> &'self str;
|
||||
fn get_attr(&'self self, name: &str) -> Option<&'self str>;
|
||||
pub trait ElementLike {
|
||||
fn get_local_name<'a>(&'a self) -> &'a str;
|
||||
fn get_attr<'a>(&'a self, name: &str) -> Option<&'a str>;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue