diff options
author | Brian Anderson <banderson@mozilla.com> | 2012-10-30 13:30:13 -0700 |
---|---|---|
committer | Brian Anderson <banderson@mozilla.com> | 2012-10-30 14:54:34 -0700 |
commit | 86ce867a1cf880c7076af234685e2f5919b84385 (patch) | |
tree | a7213e18476c4c231c9beaef2febff73de60ab21 /src | |
parent | 2ea80e240777521250062b19bbd4439be8b7aef9 (diff) | |
download | servo-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.rs | 13 | ||||
-rw-r--r-- | src/servo/css/lexer_util.rs | 11 |
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; } |