diff options
author | Patrick Walton <pcwalton@mimiga.net> | 2012-05-24 16:57:58 -0700 |
---|---|---|
committer | Patrick Walton <pcwalton@mimiga.net> | 2012-05-24 16:57:58 -0700 |
commit | 8e60fb4dee5818ab4df0f2f4e30a8a41b378df49 (patch) | |
tree | 4e56b1f2d21b183dd328b29232efb4595a9363e4 /src | |
parent | 47f618bac2ca2dc34ab121dbdfff778982b689de (diff) | |
download | servo-8e60fb4dee5818ab4df0f2f4e30a8a41b378df49.tar.gz servo-8e60fb4dee5818ab4df0f2f4e30a8a41b378df49.zip |
Parse generic attributes; add an image test case
Diffstat (limited to 'src')
-rw-r--r-- | src/servo/dom/base.rs | 13 | ||||
-rw-r--r-- | src/servo/parser/html_builder.rs | 5 | ||||
-rw-r--r-- | src/test/test-image.html | 10 | ||||
-rw-r--r-- | src/test/test.jpeg | bin | 0 -> 88129 bytes |
4 files changed, 26 insertions, 2 deletions
diff --git a/src/servo/dom/base.rs b/src/servo/dom/base.rs index 18341096fb4..f1a1ace01f6 100644 --- a/src/servo/dom/base.rs +++ b/src/servo/dom/base.rs @@ -2,6 +2,7 @@ import dom::rcu::{writer_methods}; import gfx::geom::{au, size}; import layout::base::layout_data; import util::tree; +import dvec::dvec; enum node_data = { tree: tree::fields<node>, @@ -16,10 +17,22 @@ enum node_kind { class element { let tag_name: str; let subclass: ~element_subclass; + let attrs: dvec<~attr>; new(tag_name: str, -subclass: ~element_subclass) { self.tag_name = tag_name; self.subclass = subclass; + self.attrs = dvec(); + } +} + +class attr { + let name: str; + let value: str; + + new(name: str, value: str) { + self.name = name; + self.value = value; } } diff --git a/src/servo/parser/html_builder.rs b/src/servo/parser/html_builder.rs index ade6275ce41..8ea396b040f 100644 --- a/src/servo/parser/html_builder.rs +++ b/src/servo/parser/html_builder.rs @@ -1,13 +1,14 @@ #[doc="Constructs a DOM tree from an incoming token stream."] import dom::rcu::writer_methods; -import dom::base::{element, element_subclass, es_div, es_head, es_img}; +import dom::base::{attr, element, element_subclass, es_div, es_head, es_img}; import dom::base::{es_unknown, methods, nk_element, nk_text, rd_tree_ops}; import dom::base::{wr_tree_ops}; import dom = dom::base; import parser = parser::html; import html::token; import gfx::geom; +import dvec::extensions; fn link_up_attribute(scope: dom::node_scope, node: dom::node, key: str, value: str) { @@ -17,6 +18,7 @@ fn link_up_attribute(scope: dom::node_scope, node: dom::node, key: str, |node_contents| alt *node_contents.kind { dom::nk_element(element) { + element.attrs.push(~attr(key, value)); alt *element.subclass { es_img(dimensions) if key == "width" { alt int::from_str(value) { @@ -32,7 +34,6 @@ fn link_up_attribute(scope: dom::node_scope, node: dom::node, key: str, } es_div | es_img(*) | es_head | es_unknown { // Drop on the floor. - // FIXME: Implement attributes in a generic way. } } } diff --git a/src/test/test-image.html b/src/test/test-image.html new file mode 100644 index 00000000000..587ac581203 --- /dev/null +++ b/src/test/test-image.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html> +<head> +<title>test</title> +</head> +<body> +<img src="test.jpeg" width="500" height="378"/> +</body> +</html> + diff --git a/src/test/test.jpeg b/src/test/test.jpeg Binary files differnew file mode 100644 index 00000000000..3314a53600b --- /dev/null +++ b/src/test/test.jpeg |