~[] to Vec in style/media_quieres.rs, selectors.rs, stylesheets.rs

This commit is contained in:
Matt Murphy 2014-04-19 12:58:38 -05:00 committed by Ms2ger
parent 7447ed69e3
commit f2707bc405
3 changed files with 17 additions and 16 deletions

View file

@ -14,14 +14,14 @@ use url::Url;
pub struct MediaRule { pub struct MediaRule {
pub media_queries: MediaQueryList, pub media_queries: MediaQueryList,
pub rules: ~[CSSRule], pub rules: Vec<CSSRule>,
} }
pub struct MediaQueryList { pub struct MediaQueryList {
// "not all" is omitted from the list. // "not all" is omitted from the list.
// An empty list never matches. // An empty list never matches.
media_queries: ~[MediaQuery] media_queries: Vec<MediaQuery>
} }
// For now, this is a "Level 2 MQ", ie. a media type. // For now, this is a "Level 2 MQ", ie. a media type.
@ -48,7 +48,7 @@ pub struct Device {
} }
pub fn parse_media_rule(rule: AtRule, parent_rules: &mut ~[CSSRule], pub fn parse_media_rule(rule: AtRule, parent_rules: &mut Vec<CSSRule>,
namespaces: &NamespaceMap, base_url: &Url) { namespaces: &NamespaceMap, base_url: &Url) {
let media_queries = parse_media_query_list(rule.prelude); let media_queries = parse_media_query_list(rule.prelude);
let block = match rule.block { let block = match rule.block {
@ -58,7 +58,7 @@ pub fn parse_media_rule(rule: AtRule, parent_rules: &mut ~[CSSRule],
return return
} }
}; };
let mut rules = ~[]; let mut rules = Vec::new();
for rule in ErrorLoggerIterator(parse_rule_list(block.move_iter())) { for rule in ErrorLoggerIterator(parse_rule_list(block.move_iter())) {
match rule { match rule {
QualifiedRule(rule) => parse_style_rule(rule, &mut rules, namespaces, base_url), QualifiedRule(rule) => parse_style_rule(rule, &mut rules, namespaces, base_url),
@ -77,9 +77,9 @@ pub fn parse_media_query_list(input: &[ComponentValue]) -> MediaQueryList {
let iter = &mut input.skip_whitespace(); let iter = &mut input.skip_whitespace();
let mut next = iter.next(); let mut next = iter.next();
if next.is_none() { if next.is_none() {
return MediaQueryList{ media_queries: ~[MediaQuery{media_type: All}] } return MediaQueryList{ media_queries: vec!(MediaQuery{media_type: All}) }
} }
let mut queries = ~[]; let mut queries = Vec::new();
loop { loop {
let mq = match next { let mq = match next {
Some(&Ident(ref value)) => { Some(&Ident(ref value)) => {

View file

@ -112,13 +112,13 @@ type Iter = iter::Peekable<ComponentValue, slice::MoveItems<ComponentValue>>;
/// ///
/// Return the Selectors or None if there is an invalid selector. /// Return the Selectors or None if there is an invalid selector.
pub fn parse_selector_list(input: ~[ComponentValue], namespaces: &NamespaceMap) pub fn parse_selector_list(input: ~[ComponentValue], namespaces: &NamespaceMap)
-> Option<~[Selector]> { -> Option<Vec<Selector>> {
let iter = &mut input.move_iter().peekable(); let iter = &mut input.move_iter().peekable();
let first = match parse_selector(iter, namespaces) { let first = match parse_selector(iter, namespaces) {
None => return None, None => return None,
Some(result) => result Some(result) => result
}; };
let mut results = ~[first]; let mut results = vec!(first);
loop { loop {
skip_whitespace(iter); skip_whitespace(iter);

View file

@ -21,7 +21,7 @@ use media_queries;
pub struct Stylesheet { pub struct Stylesheet {
/// List of rules in the order they were found (important for /// List of rules in the order they were found (important for
/// cascading order) /// cascading order)
pub rules: ~[CSSRule], pub rules: Vec<CSSRule>,
namespaces: NamespaceMap, namespaces: NamespaceMap,
encoding: EncodingRef, encoding: EncodingRef,
base_url: Url, base_url: Url,
@ -35,7 +35,7 @@ pub enum CSSRule {
pub struct StyleRule { pub struct StyleRule {
pub selectors: ~[selectors::Selector], pub selectors: Vec<selectors::Selector>,
pub declarations: properties::PropertyDeclarationBlock, pub declarations: properties::PropertyDeclarationBlock,
} }
@ -44,19 +44,20 @@ impl Stylesheet {
pub fn from_bytes_iter<I: Iterator<Vec<u8>>>( pub fn from_bytes_iter<I: Iterator<Vec<u8>>>(
mut input: I, base_url: Url, protocol_encoding_label: Option<&str>, mut input: I, base_url: Url, protocol_encoding_label: Option<&str>,
environment_encoding: Option<EncodingRef>) -> Stylesheet { environment_encoding: Option<EncodingRef>) -> Stylesheet {
let mut bytes = ~[]; let mut bytes = Vec::new();
// TODO: incremental decoding and tokinization/parsing // TODO: incremental decoding and tokinization/parsing
for chunk in input { for chunk in input {
bytes.push_all(chunk.as_slice()) bytes.push_all(chunk.as_slice())
} }
Stylesheet::from_bytes(bytes, base_url, protocol_encoding_label, environment_encoding) Stylesheet::from_bytes(bytes.as_slice(), base_url, protocol_encoding_label, environment_encoding)
} }
pub fn from_bytes( pub fn from_bytes(
bytes: &[u8], base_url: Url, protocol_encoding_label: Option<&str>, bytes: &[u8], base_url: Url, protocol_encoding_label: Option<&str>,
environment_encoding: Option<EncodingRef>) -> Stylesheet { environment_encoding: Option<EncodingRef>) -> Stylesheet {
// TODO: bytes.as_slice could be bytes.container_as_bytes()
let (string, used_encoding) = decode_stylesheet_bytes( let (string, used_encoding) = decode_stylesheet_bytes(
bytes, protocol_encoding_label, environment_encoding); bytes.as_slice(), protocol_encoding_label, environment_encoding);
Stylesheet::from_str(string, base_url, used_encoding) Stylesheet::from_str(string, base_url, used_encoding)
} }
@ -67,7 +68,7 @@ impl Stylesheet {
static STATE_BODY: uint = 4; static STATE_BODY: uint = 4;
let mut state: uint = STATE_CHARSET; let mut state: uint = STATE_CHARSET;
let mut rules = ~[]; let mut rules = Vec::new();
let mut namespaces = NamespaceMap::new(); let mut namespaces = NamespaceMap::new();
for rule in ErrorLoggerIterator(parse_stylesheet_rules(tokenize(css))) { for rule in ErrorLoggerIterator(parse_stylesheet_rules(tokenize(css))) {
@ -124,7 +125,7 @@ impl Stylesheet {
} }
pub fn parse_style_rule(rule: QualifiedRule, parent_rules: &mut ~[CSSRule], pub fn parse_style_rule(rule: QualifiedRule, parent_rules: &mut Vec<CSSRule>,
namespaces: &NamespaceMap, base_url: &Url) { namespaces: &NamespaceMap, base_url: &Url) {
let QualifiedRule{location: location, prelude: prelude, block: block} = rule; let QualifiedRule{location: location, prelude: prelude, block: block} = rule;
// FIXME: avoid doing this for valid selectors // FIXME: avoid doing this for valid selectors
@ -142,7 +143,7 @@ pub fn parse_style_rule(rule: QualifiedRule, parent_rules: &mut ~[CSSRule],
// lower_name is passed explicitly to avoid computing it twice. // lower_name is passed explicitly to avoid computing it twice.
pub fn parse_nested_at_rule(lower_name: &str, rule: AtRule, pub fn parse_nested_at_rule(lower_name: &str, rule: AtRule,
parent_rules: &mut ~[CSSRule], namespaces: &NamespaceMap, base_url: &Url) { parent_rules: &mut Vec<CSSRule>, namespaces: &NamespaceMap, base_url: &Url) {
match lower_name { match lower_name {
"media" => parse_media_rule(rule, parent_rules, namespaces, base_url), "media" => parse_media_rule(rule, parent_rules, namespaces, base_url),
_ => log_css_error(rule.location, format!("Unsupported at-rule: @{:s}", lower_name)) _ => log_css_error(rule.location, format!("Unsupported at-rule: @{:s}", lower_name))