mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Parse generic attributes; add an image test case
This commit is contained in:
parent
47f618bac2
commit
8e60fb4dee
4 changed files with 26 additions and 2 deletions
|
@ -2,6 +2,7 @@ import dom::rcu::{writer_methods};
|
||||||
import gfx::geom::{au, size};
|
import gfx::geom::{au, size};
|
||||||
import layout::base::layout_data;
|
import layout::base::layout_data;
|
||||||
import util::tree;
|
import util::tree;
|
||||||
|
import dvec::dvec;
|
||||||
|
|
||||||
enum node_data = {
|
enum node_data = {
|
||||||
tree: tree::fields<node>,
|
tree: tree::fields<node>,
|
||||||
|
@ -16,10 +17,22 @@ enum node_kind {
|
||||||
class element {
|
class element {
|
||||||
let tag_name: str;
|
let tag_name: str;
|
||||||
let subclass: ~element_subclass;
|
let subclass: ~element_subclass;
|
||||||
|
let attrs: dvec<~attr>;
|
||||||
|
|
||||||
new(tag_name: str, -subclass: ~element_subclass) {
|
new(tag_name: str, -subclass: ~element_subclass) {
|
||||||
self.tag_name = tag_name;
|
self.tag_name = tag_name;
|
||||||
self.subclass = subclass;
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
#[doc="Constructs a DOM tree from an incoming token stream."]
|
#[doc="Constructs a DOM tree from an incoming token stream."]
|
||||||
|
|
||||||
import dom::rcu::writer_methods;
|
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::{es_unknown, methods, nk_element, nk_text, rd_tree_ops};
|
||||||
import dom::base::{wr_tree_ops};
|
import dom::base::{wr_tree_ops};
|
||||||
import dom = dom::base;
|
import dom = dom::base;
|
||||||
import parser = parser::html;
|
import parser = parser::html;
|
||||||
import html::token;
|
import html::token;
|
||||||
import gfx::geom;
|
import gfx::geom;
|
||||||
|
import dvec::extensions;
|
||||||
|
|
||||||
fn link_up_attribute(scope: dom::node_scope, node: dom::node, key: str,
|
fn link_up_attribute(scope: dom::node_scope, node: dom::node, key: str,
|
||||||
value: str) {
|
value: str) {
|
||||||
|
@ -17,6 +18,7 @@ fn link_up_attribute(scope: dom::node_scope, node: dom::node, key: str,
|
||||||
|node_contents|
|
|node_contents|
|
||||||
alt *node_contents.kind {
|
alt *node_contents.kind {
|
||||||
dom::nk_element(element) {
|
dom::nk_element(element) {
|
||||||
|
element.attrs.push(~attr(key, value));
|
||||||
alt *element.subclass {
|
alt *element.subclass {
|
||||||
es_img(dimensions) if key == "width" {
|
es_img(dimensions) if key == "width" {
|
||||||
alt int::from_str(value) {
|
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 {
|
es_div | es_img(*) | es_head | es_unknown {
|
||||||
// Drop on the floor.
|
// Drop on the floor.
|
||||||
// FIXME: Implement attributes in a generic way.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
10
src/test/test-image.html
Normal file
10
src/test/test-image.html
Normal 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
BIN
src/test/test.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 86 KiB |
Loading…
Add table
Add a link
Reference in a new issue