mirror of
https://github.com/servo/servo.git
synced 2025-08-09 15:35:34 +01:00
Rename LengthOrPercentageOrAutoOrContent to FlexBasis
This commit is contained in:
parent
a568f7752f
commit
bc9bc1d340
11 changed files with 111 additions and 169 deletions
|
@ -1101,72 +1101,6 @@ pub type LengthOrNormal = Either<Length, Normal>;
|
|||
/// Either a `<length>` or the `auto` keyword.
|
||||
pub type LengthOrAuto = Either<Length, Auto>;
|
||||
|
||||
/// Either a `<length>` or a `<percentage>` or the `auto` keyword or the
|
||||
/// `content` keyword.
|
||||
#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
|
||||
#[derive(Clone, Debug, HasViewportPercentage, PartialEq, ToCss)]
|
||||
pub enum LengthOrPercentageOrAutoOrContent {
|
||||
/// A `<length>`.
|
||||
Length(NoCalcLength),
|
||||
/// A percentage.
|
||||
Percentage(Percentage),
|
||||
/// A `calc` node.
|
||||
Calc(Box<CalcLengthOrPercentage>),
|
||||
/// The `auto` keyword.
|
||||
Auto,
|
||||
/// The `content` keyword.
|
||||
Content
|
||||
}
|
||||
|
||||
impl LengthOrPercentageOrAutoOrContent {
|
||||
/// Parse a non-negative LengthOrPercentageOrAutoOrContent.
|
||||
pub fn parse_non_negative<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>)
|
||||
-> Result<Self, ParseError<'i>> {
|
||||
let num_context = AllowedLengthType::NonNegative;
|
||||
let token = try!(input.next());
|
||||
match token {
|
||||
Token::Dimension { value, ref unit, .. } if num_context.is_ok(context.parsing_mode, value) => {
|
||||
NoCalcLength::parse_dimension(context, value, unit)
|
||||
.map(LengthOrPercentageOrAutoOrContent::Length)
|
||||
}
|
||||
Token::Percentage { unit_value, .. } if num_context.is_ok(context.parsing_mode, unit_value) => {
|
||||
Ok(LengthOrPercentageOrAutoOrContent::Percentage(Percentage(unit_value)))
|
||||
}
|
||||
Token::Number { value, .. } if value == 0. => {
|
||||
Ok(Self::zero())
|
||||
}
|
||||
Token::Ident(ref value) if value.eq_ignore_ascii_case("auto") => {
|
||||
Ok(LengthOrPercentageOrAutoOrContent::Auto)
|
||||
}
|
||||
Token::Ident(ref value) if value.eq_ignore_ascii_case("content") => {
|
||||
Ok(LengthOrPercentageOrAutoOrContent::Content)
|
||||
}
|
||||
Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {
|
||||
let calc = try!(input.parse_nested_block(|i| {
|
||||
CalcNode::parse_length_or_percentage(context, i, num_context)
|
||||
}));
|
||||
Ok(LengthOrPercentageOrAutoOrContent::Calc(Box::new(calc)))
|
||||
}
|
||||
_ => Err(())
|
||||
}.map_err(|()| BasicParseError::UnexpectedToken(token).into())
|
||||
}
|
||||
|
||||
/// Returns the `auto` value.
|
||||
pub fn auto() -> Self {
|
||||
LengthOrPercentageOrAutoOrContent::Auto
|
||||
}
|
||||
|
||||
/// Returns a value representing a `0` length.
|
||||
pub fn zero() -> Self {
|
||||
LengthOrPercentageOrAutoOrContent::Length(NoCalcLength::zero())
|
||||
}
|
||||
|
||||
/// Returns a value representing `0%`.
|
||||
pub fn zero_percent() -> Self {
|
||||
LengthOrPercentageOrAutoOrContent::Percentage(Percentage::zero())
|
||||
}
|
||||
}
|
||||
|
||||
/// Either a `<length>` or a `<number>`.
|
||||
pub type LengthOrNumber = Either<Length, Number>;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue