Parse generic attributes; add an image test case

This commit is contained in:
Patrick Walton 2012-05-24 16:57:58 -07:00
parent 47f618bac2
commit 8e60fb4dee
4 changed files with 26 additions and 2 deletions

View file

@ -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;
}
}

View file

@ -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.
}
}
}

10
src/test/test-image.html Normal file
View file

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<img src="test.jpeg" width="500" height="378"/>
</body>
</html>

BIN
src/test/test.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB