aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-10-30 13:30:13 -0700
committerBrian Anderson <banderson@mozilla.com>2012-10-30 14:54:34 -0700
commit86ce867a1cf880c7076af234685e2f5919b84385 (patch)
treea7213e18476c4c231c9beaef2febff73de60ab21 /src
parent2ea80e240777521250062b19bbd4439be8b7aef9 (diff)
downloadservo-86ce867a1cf880c7076af234685e2f5919b84385.tar.gz
servo-86ce867a1cf880c7076af234685e2f5919b84385.zip
Remove lexer_util's dependency on resource_task
Diffstat (limited to 'src')
-rw-r--r--src/servo/css/lexer.rs13
-rw-r--r--src/servo/css/lexer_util.rs11
2 files changed, 17 insertions, 7 deletions
diff --git a/src/servo/css/lexer.rs b/src/servo/css/lexer.rs
index b1bc10927fa..f43bbabec73 100644
--- a/src/servo/css/lexer.rs
+++ b/src/servo/css/lexer.rs
@@ -9,7 +9,7 @@ use pipes::{Port, Chan};
use lexer_util::*;
use std::net::url::Url;
-use resource::resource_task::{ResourceTask, ProgressMsg, Load};
+use resource::resource_task::{ResourceTask, ProgressMsg, Load, Payload, Done};
enum ParserState {
CssElement,
@@ -225,12 +225,21 @@ impl CssLexer : CssLexerMethods {
}
}
+fn resource_port_to_lexer_stream(input_port: comm::Port<ProgressMsg>) -> DataStream {
+ return || {
+ match input_port.recv() {
+ Payload(move data) => Some(move data),
+ Done(*) => None
+ }
+ }
+}
+
fn parser(input_port: comm::Port<ProgressMsg>, state : ParserState) -> CssLexer {
return {
input_state: {
mut lookahead: None,
mut buffer: ~[],
- input_port: input_port,
+ input: resource_port_to_lexer_stream(input_port),
mut eof: false
},
mut parser_state: state
diff --git a/src/servo/css/lexer_util.rs b/src/servo/css/lexer_util.rs
index 97c11b7a7dd..bd31f8b5e1f 100644
--- a/src/servo/css/lexer_util.rs
+++ b/src/servo/css/lexer_util.rs
@@ -6,13 +6,14 @@ use option::is_none;
use str::from_bytes;
use vec::push;
use comm::Port;
-use resource::resource_task::{ProgressMsg, Payload, Done};
enum CharOrEof {
CoeChar(u8),
CoeEof
}
+pub type DataStream = @fn() -> Option<~[u8]>;
+
impl CharOrEof: cmp::Eq {
pure fn eq(other: &CharOrEof) -> bool {
match (self, *other) {
@@ -29,7 +30,7 @@ impl CharOrEof: cmp::Eq {
type InputState = {
mut lookahead: Option<CharOrEof>,
mut buffer: ~[u8],
- input_port: Port<ProgressMsg>,
+ input: DataStream,
mut eof: bool
};
@@ -82,13 +83,13 @@ impl InputState : InputStateUtil {
return CoeEof;
}
- match self.input_port.recv() {
- Payload(data) => {
+ match self.input() {
+ Some(data) => {
// TODO: change copy to move once we have match move
self.buffer = copy data;
return CoeChar(vec::shift(&mut self.buffer));
}
- Done(*) => {
+ None => {
self.eof = true;
return CoeEof;
}