Parse "first baseline" and "last baseline".

This commit is contained in:
Hiroyuki Ikezoe 2017-04-04 11:10:23 +09:00
parent eee25e2313
commit e37e170c50

View file

@ -322,33 +322,63 @@ impl Parse for JustifyItems {
// auto | normal | stretch | <baseline-position>
fn parse_auto_normal_stretch_baseline(input: &mut Parser) -> Result<AlignFlags, ()> {
if let Ok(baseline) = input.try(|input| parse_baseline(input)) {
return Ok(baseline);
}
let ident = input.expect_ident()?;
match_ignore_ascii_case! { &ident,
"auto" => Ok(ALIGN_AUTO),
"normal" => Ok(ALIGN_NORMAL),
"stretch" => Ok(ALIGN_STRETCH),
"baseline" => Ok(ALIGN_BASELINE),
_ => Err(())
}
}
// normal | stretch | <baseline-position>
fn parse_normal_stretch_baseline(input: &mut Parser) -> Result<AlignFlags, ()> {
if let Ok(baseline) = input.try(|input| parse_baseline(input)) {
return Ok(baseline);
}
let ident = input.expect_ident()?;
match_ignore_ascii_case! { &ident,
"normal" => Ok(ALIGN_NORMAL),
"stretch" => Ok(ALIGN_STRETCH),
"baseline" => Ok(ALIGN_BASELINE),
_ => Err(())
}
}
// normal | <baseline-position>
fn parse_normal_or_baseline(input: &mut Parser) -> Result<AlignFlags, ()> {
if let Ok(baseline) = input.try(|input| parse_baseline(input)) {
return Ok(baseline);
}
let ident = input.expect_ident()?;
match_ignore_ascii_case! { &ident,
"normal" => Ok(ALIGN_NORMAL),
_ => Err(())
}
}
// <baseline-position>
fn parse_baseline(input: &mut Parser) -> Result<AlignFlags, ()> {
let ident = input.expect_ident()?;
match_ignore_ascii_case! { &ident,
"baseline" => Ok(ALIGN_BASELINE),
"first" => {
if input.try(|input| input.expect_ident_matching("baseline")).is_ok() {
return Ok(ALIGN_BASELINE);
}
Err(())
},
"last" => {
if input.try(|input| input.expect_ident_matching("baseline")).is_ok() {
return Ok(ALIGN_LAST_BASELINE);
}
Err(())
},
_ => Err(())
}
}