Skip to content
This repository was archived by the owner on Jul 10, 2023. It is now read-only.

Commit b2a6568

Browse files
committed
Factor out CssStylesheetParams and add parse_style_attribute.
1 parent 55884aa commit b2a6568

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

parser.rs

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,9 @@ use wapcaplet::LwcString;
1717
use extra::net::url::Url;
1818
use netsurfcss::stylesheet::CssUrlResolutionFn;
1919

20-
// This takes a DataStreamFactory instead of a DataStream because
21-
// servo's DataStream contains a comm::Port, which is not sendable,
22-
// so DataStream is an @fn which can't be sent to the lexer task.
23-
// So the DataStreamFactory gives the caller an opportunity to create
24-
// the data stream from inside the lexer task.
25-
pub fn parse_stylesheet(url: Url, input: DataStream) -> CssStylesheet {
20+
fn default_params(url: Url) -> CssStylesheetParams {
2621
let resolve: CssUrlResolutionFn = resolve_url;
27-
let params: CssStylesheetParams = CssStylesheetParams {
22+
CssStylesheetParams {
2823
params_version: CssStylesheetParamsVersion1,
2924
level: CssLevel21,
3025
charset: ~"UTF-8",
@@ -36,7 +31,16 @@ pub fn parse_stylesheet(url: Url, input: DataStream) -> CssStylesheet {
3631
import: None,
3732
color: None,
3833
font: None,
39-
};
34+
}
35+
}
36+
37+
// This takes a DataStreamFactory instead of a DataStream because
38+
// servo's DataStream contains a comm::Port, which is not sendable,
39+
// so DataStream is an @fn which can't be sent to the lexer task.
40+
// So the DataStreamFactory gives the caller an opportunity to create
41+
// the data stream from inside the lexer task.
42+
pub fn parse_stylesheet(url: Url, input: DataStream) -> CssStylesheet {
43+
let params = default_params(url);
4044
let mut sheet = css_stylesheet_create(&params);
4145

4246
loop {
@@ -48,7 +52,16 @@ pub fn parse_stylesheet(url: Url, input: DataStream) -> CssStylesheet {
4852
}
4953
}
5054
sheet.data_done();
51-
return sheet;
55+
sheet
56+
}
57+
58+
pub fn parse_style_attribute(url: Url, data: &str) -> CssStylesheet {
59+
let mut params = default_params(url);
60+
params.inline_style = true;
61+
let mut sheet = css_stylesheet_create(&params);
62+
sheet.append_data(data.as_bytes());
63+
sheet.data_done();
64+
sheet
5265
}
5366

5467
fn resolve_url(_base: &str, _rel: &LwcString) -> CssResult<LwcString> {

0 commit comments

Comments
 (0)