mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
style: Use cbindgen for grid track sizing.
Differential Revision: https://phabricator.services.mozilla.com/D36118
This commit is contained in:
parent
034557a717
commit
cc15afa348
6 changed files with 75 additions and 257 deletions
|
@ -8,7 +8,7 @@
|
|||
use crate::parser::{Parse, ParserContext};
|
||||
use crate::values::computed::{self, Context, ToComputedValue};
|
||||
use crate::values::generics::grid::{GridTemplateComponent, RepeatCount, TrackBreadth};
|
||||
use crate::values::generics::grid::{LineNameList, TrackKeyword, TrackRepeat, TrackSize};
|
||||
use crate::values::generics::grid::{LineNameList, TrackRepeat, TrackSize};
|
||||
use crate::values::generics::grid::{TrackList, TrackListType, TrackListValue};
|
||||
use crate::values::specified::{Integer, LengthPercentage};
|
||||
use crate::values::{CSSFloat, CustomIdent};
|
||||
|
@ -27,11 +27,34 @@ pub fn parse_flex<'i, 't>(input: &mut Parser<'i, 't>) -> Result<CSSFloat, ParseE
|
|||
}
|
||||
}
|
||||
|
||||
impl<L> TrackBreadth<L> {
|
||||
fn parse_keyword<'i, 't>(
|
||||
input: &mut Parser<'i, 't>,
|
||||
) -> Result<Self, ParseError<'i>> {
|
||||
#[derive(Parse)]
|
||||
enum TrackKeyword {
|
||||
Auto,
|
||||
MaxContent,
|
||||
MinContent,
|
||||
}
|
||||
|
||||
Ok(match TrackKeyword::parse(input)? {
|
||||
TrackKeyword::Auto => TrackBreadth::Auto,
|
||||
TrackKeyword::MaxContent => TrackBreadth::MaxContent,
|
||||
TrackKeyword::MinContent => TrackBreadth::MinContent,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl Parse for TrackBreadth<LengthPercentage> {
|
||||
fn parse<'i, 't>(
|
||||
context: &ParserContext,
|
||||
input: &mut Parser<'i, 't>,
|
||||
) -> Result<Self, ParseError<'i>> {
|
||||
// FIXME: This and other callers in this file should use
|
||||
// NonNegativeLengthPercentage instead.
|
||||
//
|
||||
// Though it seems these cannot be animated so it's ~ok.
|
||||
if let Ok(lp) = input.try(|i| LengthPercentage::parse_non_negative(context, i)) {
|
||||
return Ok(TrackBreadth::Breadth(lp));
|
||||
}
|
||||
|
@ -40,7 +63,7 @@ impl Parse for TrackBreadth<LengthPercentage> {
|
|||
return Ok(TrackBreadth::Fr(f));
|
||||
}
|
||||
|
||||
TrackKeyword::parse(input).map(TrackBreadth::Keyword)
|
||||
Self::parse_keyword(input)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,10 +81,7 @@ impl Parse for TrackSize<LengthPercentage> {
|
|||
let inflexible_breadth =
|
||||
match input.try(|i| LengthPercentage::parse_non_negative(context, i)) {
|
||||
Ok(lp) => TrackBreadth::Breadth(lp),
|
||||
Err(..) => {
|
||||
let keyword = TrackKeyword::parse(input)?;
|
||||
TrackBreadth::Keyword(keyword)
|
||||
},
|
||||
Err(..) => TrackBreadth::parse_keyword(input)?,
|
||||
};
|
||||
|
||||
input.expect_comma()?;
|
||||
|
@ -74,7 +94,7 @@ impl Parse for TrackSize<LengthPercentage> {
|
|||
|
||||
input.expect_function_matching("fit-content")?;
|
||||
let lp = input.parse_nested_block(|i| LengthPercentage::parse_non_negative(context, i))?;
|
||||
Ok(TrackSize::FitContent(lp))
|
||||
Ok(TrackSize::FitContent(TrackBreadth::Breadth(lp)))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue