Skip to content
This repository was archived by the owner on Jul 10, 2023. It is now read-only.

Commit 89d6854

Browse files
committed
Merge pull request #13 from ILyoan/css_class
Add support for clss selection
2 parents ca4e2c6 + 6831381 commit 89d6854

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

select.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,11 @@ Callbacks used to query the implementation-specific DOM
8585
*/
8686
pub trait SelectHandler<N> {
8787
fn with_node_name<R>(&self, node: &N, f: &fn(&str) -> R) -> R;
88+
fn with_node_classes<R>(&self, node: &N, f: &fn(Option<&str>) -> R) -> R;
8889
fn with_node_id<R>(&self, node: &N, f: &fn(Option<&str>) -> R) -> R;
8990
fn named_parent_node(&self, node: &N, name: &str) -> Option<N>;
9091
fn parent_node(&self, node: &N) -> Option<N>;
92+
fn node_has_class(&self, node: &N, &str) -> bool;
9193
fn node_has_id(&self, node: &N, &str) -> bool;
9294
fn named_ancestor_node(&self, node: &N, name: &str) -> Option<N>;
9395
fn node_is_root(&self, node: &N) -> bool;
@@ -113,6 +115,21 @@ impl<N, H: SelectHandler<N>> n::s::CssSelectHandler<N> for SelectHandlerWrapper<
113115
}
114116
}
115117

118+
fn node_classes(&self, node: &N) -> Option<~[LwcString]> {
119+
do self.inner_ref().with_node_classes(node) |node_classes_opt| {
120+
do node_classes_opt.map |s| {
121+
debug!("SelectHandlerWrapper::node_classes - classes: %?", *s);
122+
let mut v = ~[];
123+
for str::each_split_char(*s, ' ') |s| {
124+
debug!("SelectHandlerWrapper::node_classes - class: %?", s);
125+
if s != ~"" { v.push(lwcstr_from_rust_str(s)) }
126+
}
127+
debug!("SelectHandlerWrapper::classes: %?", v);
128+
v
129+
}
130+
}
131+
}
132+
116133
fn node_id(&self, node: &N) -> Option<LwcString> {
117134
do self.inner_ref().with_node_id(node) |node_id_opt| {
118135
node_id_opt.map(|s| lwcstr_from_rust_str(*s))
@@ -127,6 +144,10 @@ impl<N, H: SelectHandler<N>> n::s::CssSelectHandler<N> for SelectHandlerWrapper<
127144
self.inner_ref().parent_node(node)
128145
}
129146

147+
fn node_has_class(&self, node: &N, name: LwcString) -> bool {
148+
self.inner_ref().node_has_class(node, name.to_str_slice())
149+
}
150+
130151
fn node_has_id(&self, node: &N, name: LwcString) -> bool {
131152
self.inner_ref().node_has_id(node, name.to_str_slice())
132153
}

0 commit comments

Comments
 (0)