mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Add CSS parser support for 'vertical-align'.
This commit is contained in:
parent
9048bce3be
commit
8b0fdf9efd
1 changed files with 50 additions and 1 deletions
|
@ -19,7 +19,7 @@ pub mod common_types;
|
||||||
|
|
||||||
def to_rust_ident(name):
|
def to_rust_ident(name):
|
||||||
name = name.replace("-", "_")
|
name = name.replace("-", "_")
|
||||||
if name in ["static"]: # Rust keywords
|
if name in ["static", "super"]: # Rust keywords
|
||||||
name += "_"
|
name += "_"
|
||||||
return name
|
return name
|
||||||
|
|
||||||
|
@ -266,6 +266,55 @@ pub mod longhands {
|
||||||
}
|
}
|
||||||
</%self:single_component_value>
|
</%self:single_component_value>
|
||||||
|
|
||||||
|
<%self:single_component_value name="vertical-align">
|
||||||
|
<% vertical_align_keywords = (
|
||||||
|
"baseline sub super top text-top middle bottom text-bottom".split()) %>
|
||||||
|
#[deriving(Clone)]
|
||||||
|
pub enum SpecifiedValue {
|
||||||
|
% for keyword in vertical_align_keywords:
|
||||||
|
Specified_${to_rust_ident(keyword)},
|
||||||
|
% endfor
|
||||||
|
SpecifiedLengthOrPercentage(specified::LengthOrPercentage),
|
||||||
|
}
|
||||||
|
/// baseline | sub | super | top | text-top | middle | bottom | text-bottom
|
||||||
|
/// | <percentage> | <length>
|
||||||
|
pub fn from_component_value(input: &ComponentValue) -> Option<SpecifiedValue> {
|
||||||
|
match input {
|
||||||
|
&Ident(ref value) => match value.to_ascii_lower().as_slice() {
|
||||||
|
% for keyword in vertical_align_keywords:
|
||||||
|
"${keyword}" => Some(Specified_${to_rust_ident(keyword)}),
|
||||||
|
% endfor
|
||||||
|
_ => None,
|
||||||
|
},
|
||||||
|
_ => specified::LengthOrPercentage::parse_non_negative(input)
|
||||||
|
.map_move(SpecifiedLengthOrPercentage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[deriving(Clone)]
|
||||||
|
pub enum ComputedValue {
|
||||||
|
% for keyword in vertical_align_keywords:
|
||||||
|
${to_rust_ident(keyword)},
|
||||||
|
% endfor
|
||||||
|
Length(computed::Length),
|
||||||
|
Percentage(Float),
|
||||||
|
}
|
||||||
|
#[inline] pub fn get_initial_value() -> ComputedValue { baseline }
|
||||||
|
pub fn to_computed_value(value: SpecifiedValue, context: &computed::Context)
|
||||||
|
-> ComputedValue {
|
||||||
|
match value {
|
||||||
|
% for keyword in vertical_align_keywords:
|
||||||
|
Specified_${to_rust_ident(keyword)} => ${to_rust_ident(keyword)},
|
||||||
|
% endfor
|
||||||
|
SpecifiedLengthOrPercentage(value)
|
||||||
|
=> match computed::compute_LengthOrPercentage(value, context) {
|
||||||
|
computed::LP_Length(value) => Length(value),
|
||||||
|
computed::LP_Percentage(value) => Percentage(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</%self:single_component_value>
|
||||||
|
|
||||||
|
|
||||||
// CSS 2.1, Section 11 - Visual effects
|
// CSS 2.1, Section 11 - Visual effects
|
||||||
|
|
||||||
// CSS 2.1, Section 12 - Generated content, automatic numbering, and lists
|
// CSS 2.1, Section 12 - Generated content, automatic numbering, and lists
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue