aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/parse
diff options
context:
space:
mode:
authornchinth <nchinth@ncsu.edu>2014-10-17 16:30:01 -0400
committerNikhil Chinthapallee <nchinth@ncsu.edu>2014-10-29 11:31:20 -0400
commit6a736c7f3c9456224aadde71ebbd62e844fd6877 (patch)
tree26105ea56f09373c717d4190cbc7bd34cf3f1945 /components/script/parse
parent7ba02bb11d2d9275949cb7522c5fcbc4ebcd23d1 (diff)
downloadservo-6a736c7f3c9456224aadde71ebbd62e844fd6877.tar.gz
servo-6a736c7f3c9456224aadde71ebbd62e844fd6877.zip
Adding initial version of parser trait
Added parse_chunk method declaration to parser Removed unnecessary visibilty for parse_chunk function Implemented parse_chunk function Implemented parse_chunk fn for ServoHTMLParser Moved parser trait to mod.rs and added finish fn added licence header to mod.rs and other review comments Fixed trailing space issue Fixed failed tabular space test
Diffstat (limited to 'components/script/parse')
-rw-r--r--components/script/parse/html.rs9
-rw-r--r--components/script/parse/mod.rs10
2 files changed, 15 insertions, 4 deletions
diff --git a/components/script/parse/html.rs b/components/script/parse/html.rs
index 8eca823236a..28f13562619 100644
--- a/components/script/parse/html.rs
+++ b/components/script/parse/html.rs
@@ -18,6 +18,7 @@ use dom::servohtmlparser;
use dom::servohtmlparser::ServoHTMLParser;
use dom::types::*;
use page::Page;
+use parse::Parser;
use encoding::all::UTF_8;
use encoding::types::{Encoding, DecodeReplace};
@@ -486,14 +487,14 @@ pub fn parse_html(page: &Page,
match input {
InputString(s) => {
- parser.tokenizer().borrow_mut().feed(s);
+ parser.parse_chunk(s);
}
InputUrl(url) => {
let load_response = load_response.unwrap();
match load_response.metadata.content_type {
Some((ref t, _)) if t.as_slice().eq_ignore_ascii_case("image") => {
let page = format!("<html><body><img src='{:s}' /></body></html>", base_url.as_ref().unwrap().serialize());
- parser.tokenizer().borrow_mut().feed(page);
+ parser.parse_chunk(page);
},
_ => {
for msg in load_response.progress_port.iter() {
@@ -501,7 +502,7 @@ pub fn parse_html(page: &Page,
Payload(data) => {
// FIXME: use Vec<u8> (html5ever #34)
let data = UTF_8.decode(data.as_slice(), DecodeReplace).unwrap();
- parser.tokenizer().borrow_mut().feed(data);
+ parser.parse_chunk(data);
}
Done(Err(err)) => {
fail!("Failed to load page URL {:s}, error: {:s}", url.serialize(), err);
@@ -514,7 +515,7 @@ pub fn parse_html(page: &Page,
}
}
- parser.tokenizer().borrow_mut().end();
+ parser.finish();
task_state::exit(InHTMLParser);
diff --git a/components/script/parse/mod.rs b/components/script/parse/mod.rs
new file mode 100644
index 00000000000..6111f196053
--- /dev/null
+++ b/components/script/parse/mod.rs
@@ -0,0 +1,10 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pub mod html;
+
+pub trait Parser {
+ fn parse_chunk(&self,input: String);
+ fn finish(&self);
+}