mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Auto merge of #19005 - emilio:less-mako-more-joy, r=jdm
style: Move animation-name and animation-iteration-count outside of mako. <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19005) <!-- Reviewable:end -->
This commit is contained in:
commit
f9f71c7ed1
11 changed files with 165 additions and 138 deletions
|
@ -4,11 +4,15 @@
|
|||
|
||||
//! Specified types for box properties.
|
||||
|
||||
use Atom;
|
||||
use cssparser::Parser;
|
||||
use parser::{Parse, ParserContext};
|
||||
use style_traits::ParseError;
|
||||
use std::fmt;
|
||||
use style_traits::{ParseError, ToCss};
|
||||
use values::KeyframesName;
|
||||
use values::generics::box_::AnimationIterationCount as GenericAnimationIterationCount;
|
||||
use values::generics::box_::VerticalAlign as GenericVerticalAlign;
|
||||
use values::specified::AllowQuirks;
|
||||
use values::specified::{AllowQuirks, Number};
|
||||
use values::specified::length::LengthOrPercentage;
|
||||
|
||||
/// A specified value for the `vertical-align` property.
|
||||
|
@ -39,3 +43,70 @@ impl Parse for VerticalAlign {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// https://drafts.csswg.org/css-animations/#animation-iteration-count
|
||||
pub type AnimationIterationCount = GenericAnimationIterationCount<Number>;
|
||||
|
||||
impl Parse for AnimationIterationCount {
|
||||
fn parse<'i, 't>(
|
||||
context: &ParserContext,
|
||||
input: &mut ::cssparser::Parser<'i, 't>,
|
||||
) -> Result<Self, ParseError<'i>> {
|
||||
if input.try(|input| input.expect_ident_matching("infinite")).is_ok() {
|
||||
return Ok(GenericAnimationIterationCount::Infinite)
|
||||
}
|
||||
|
||||
let number = Number::parse_non_negative(context, input)?;
|
||||
Ok(GenericAnimationIterationCount::Number(number))
|
||||
}
|
||||
}
|
||||
|
||||
impl AnimationIterationCount {
|
||||
/// Returns the value `1.0`.
|
||||
#[inline]
|
||||
pub fn one() -> Self {
|
||||
GenericAnimationIterationCount::Number(Number::new(1.0))
|
||||
}
|
||||
}
|
||||
|
||||
/// A value for the `animation-name` property.
|
||||
#[derive(Clone, Debug, Eq, Hash, MallocSizeOf, PartialEq, ToComputedValue)]
|
||||
pub struct AnimationName(pub Option<KeyframesName>);
|
||||
|
||||
impl AnimationName {
|
||||
/// Get the name of the animation as an `Atom`.
|
||||
pub fn as_atom(&self) -> Option<&Atom> {
|
||||
self.0.as_ref().map(|n| n.as_atom())
|
||||
}
|
||||
|
||||
/// Returns the `none` value.
|
||||
pub fn none() -> Self {
|
||||
AnimationName(None)
|
||||
}
|
||||
}
|
||||
|
||||
impl ToCss for AnimationName {
|
||||
fn to_css<W>(&self, dest: &mut W) -> fmt::Result
|
||||
where
|
||||
W: fmt::Write,
|
||||
{
|
||||
match self.0 {
|
||||
Some(ref name) => name.to_css(dest),
|
||||
None => dest.write_str("none"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Parse for AnimationName {
|
||||
fn parse<'i, 't>(
|
||||
context: &ParserContext,
|
||||
input: &mut Parser<'i, 't>
|
||||
) -> Result<Self, ParseError<'i>> {
|
||||
if let Ok(name) = input.try(|input| KeyframesName::parse(context, input)) {
|
||||
return Ok(AnimationName(Some(name)));
|
||||
}
|
||||
|
||||
input.expect_ident_matching("none")?;
|
||||
Ok(AnimationName(None))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ pub use self::align::{AlignItems, AlignJustifyContent, AlignJustifySelf, Justify
|
|||
pub use self::background::{BackgroundRepeat, BackgroundSize};
|
||||
pub use self::border::{BorderCornerRadius, BorderImageSlice, BorderImageWidth};
|
||||
pub use self::border::{BorderImageSideWidth, BorderRadius, BorderSideWidth, BorderSpacing};
|
||||
pub use self::box_::VerticalAlign;
|
||||
pub use self::box_::{AnimationIterationCount, AnimationName, VerticalAlign};
|
||||
pub use self::color::{Color, ColorPropertyValue, RGBAColor};
|
||||
pub use self::effects::{BoxShadow, Filter, SimpleShadow};
|
||||
pub use self::flex::FlexBasis;
|
||||
|
@ -176,8 +176,10 @@ impl BorderStyle {
|
|||
}
|
||||
}
|
||||
|
||||
/// A CSS `<number>` specified value.
|
||||
///
|
||||
/// https://drafts.csswg.org/css-values-3/#number-value
|
||||
#[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, PartialOrd)]
|
||||
#[allow(missing_docs)]
|
||||
pub struct Number {
|
||||
/// The numeric value itself.
|
||||
value: CSSFloat,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue