diff options
Diffstat (limited to 'components/style/parsing_utils.rs')
-rw-r--r-- | components/style/parsing_utils.rs | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/components/style/parsing_utils.rs b/components/style/parsing_utils.rs deleted file mode 100644 index 97ebb3cad4d..00000000000 --- a/components/style/parsing_utils.rs +++ /dev/null @@ -1,101 +0,0 @@ -/* 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/. */ - - -use std::ascii::AsciiExt; -use cssparser::ast::{SkipWhitespaceIterable, SkipWhitespaceIterator}; -use cssparser::ast::ComponentValue::{mod, Ident, Comma}; - - -pub fn one_component_value<'a>(input: &'a [ComponentValue]) -> Result<&'a ComponentValue, ()> { - let mut iter = input.skip_whitespace(); - match iter.next() { - Some(value) => if iter.next().is_none() { Ok(value) } else { Err(()) }, - None => Err(()) - } -} - - -pub fn get_ident_lower(component_value: &ComponentValue) -> Result<String, ()> { - match component_value { - &Ident(ref value) => Ok(value.as_slice().to_ascii_lower()), - _ => Err(()), - } -} - - -pub struct BufferedIter<E, I> { - iter: I, - buffer: Option<E>, -} - -impl<E, I: Iterator<E>> BufferedIter<E, I> { - pub fn new(iter: I) -> BufferedIter<E, I> { - BufferedIter { - iter: iter, - buffer: None, - } - } - - #[inline] - pub fn push_back(&mut self, value: E) { - assert!(self.buffer.is_none()); - self.buffer = Some(value); - } - - #[inline] - pub fn is_eof(&mut self) -> bool { - match self.next() { - Some(value) => { - self.push_back(value); - false - } - None => true - } - } - - #[inline] - pub fn next_as_result(&mut self) -> Result<E, ()> { - match self.next() { - Some(value) => Ok(value), - None => Err(()), - } - } -} - -impl<E, I: Iterator<E>> Iterator<E> for BufferedIter<E, I> { - #[inline] - fn next(&mut self) -> Option<E> { - if self.buffer.is_some() { - self.buffer.take() - } - else { - self.iter.next() - } - } -} - -pub type ParserIter<'a, 'b> = &'a mut BufferedIter<&'b ComponentValue, SkipWhitespaceIterator<'b>>; - - -#[inline] -pub fn parse_slice_comma_separated<T>(input: &[ComponentValue], - parse_one: |ParserIter| -> Result<T, ()>) - -> Result<Vec<T>, ()> { - parse_comma_separated(&mut BufferedIter::new(input.skip_whitespace()), parse_one) -} - -#[inline] -pub fn parse_comma_separated<T>(iter: ParserIter, - parse_one: |ParserIter| -> Result<T, ()>) - -> Result<Vec<T>, ()> { - let mut values = vec![try!(parse_one(iter))]; - loop { - match iter.next() { - Some(&Comma) => values.push(try!(parse_one(iter))), - Some(_) => return Err(()), - None => return Ok(values), - } - } -} |