css, sub: Don't copy so much

This commit is contained in:
Patrick Walton 2012-11-18 18:59:05 -08:00
parent 2a1e97c80f
commit 230ac2dd17
3 changed files with 16 additions and 12 deletions

@ -1 +1 @@
Subproject commit 679e6319ab771b9b2a676f4be39e72aa7a8e7b8e
Subproject commit b1ac22d98de7c6e622709ebd3ae2bd63a762b2b2

@ -1 +1 @@
Subproject commit b23d902eccdae25fef9e71e6cc42c8d2b943f2ab
Subproject commit d7b9920a1cd5b3a8ad383051c8ddce500e46ab23

View file

@ -6,17 +6,17 @@ pub struct NodeSelectHandler {
node: Node
}
fn node_name(data: &NodeData) -> ~str {
fn with_node_name<R>(data: &NodeData, f: &fn(&str) -> R) -> R {
match *data.kind {
Element(ref data) => copy data.tag_name,
Element(ref data) => f(data.tag_name),
_ => fail ~"attempting to style non-element node"
}
}
impl NodeSelectHandler: SelectHandler<Node> {
fn node_name(node: &Node) -> ~str {
fn with_node_name<R>(node: &Node, f: &fn(&str) -> R) -> R {
do node.read |data| {
node_name(data)
with_node_name(data, f)
}
}
@ -25,10 +25,12 @@ impl NodeSelectHandler: SelectHandler<Node> {
match parent {
Some(parent) => {
do parent.read |data| {
if name == node_name(data) {
Some(parent)
} else {
None
do with_node_name(data) |node_name| {
if name == node_name {
Some(parent)
} else {
None
}
}
}
}
@ -49,8 +51,10 @@ impl NodeSelectHandler: SelectHandler<Node> {
Some(parent) => {
let mut found = false;
do parent.read |data| {
if name == node_name(data) {
found = true;
do with_node_name(data) |node_name| {
if name == node_name {
found = true;
}
}
}
if found {