Auto-generate parsing/serialization code for grid-auto-{rows,columns}

This commit is contained in:
Ravi Shankar 2017-02-15 15:12:47 +05:30
parent 7099743bbf
commit 048f1f3316
3 changed files with 25 additions and 1 deletions

View file

@ -272,4 +272,14 @@ ${helpers.predefined_type("object-position",
products="gecko", products="gecko",
boxed=True)} boxed=True)}
% endfor % endfor
// NOTE: According to the spec, this should handle multiple values of `<track-size>`,
// but gecko supports only a single value
${helpers.predefined_type("grid-auto-%ss" % kind,
"TrackSize",
"Default::default()",
animatable=False,
spec="https://drafts.csswg.org/css-grid/#propdef-grid-auto-%ss" % kind,
products="gecko",
boxed=True)}
% endfor % endfor

View file

@ -11,6 +11,7 @@ use properties::ComputedValues;
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
use super::{CSSFloat, RGBA, specified}; use super::{CSSFloat, RGBA, specified};
use super::specified::grid::{TrackBreadth as GenericTrackBreadth, TrackSize as GenericTrackSize};
pub use cssparser::Color as CSSColor; pub use cssparser::Color as CSSColor;
pub use self::image::{AngleOrCorner, EndingShape as GradientShape, Gradient, GradientKind, Image}; pub use self::image::{AngleOrCorner, EndingShape as GradientShape, Gradient, GradientKind, Image};
@ -326,6 +327,12 @@ impl ToCss for ClipRect {
/// rect(...) | auto /// rect(...) | auto
pub type ClipRectOrAuto = Either<ClipRect, Auto>; pub type ClipRectOrAuto = Either<ClipRect, Auto>;
#[allow(missing_docs)]
pub type TrackBreadth = GenericTrackBreadth<LengthOrPercentage>;
#[allow(missing_docs)]
pub type TrackSize = GenericTrackSize<LengthOrPercentage>;
impl ClipRectOrAuto { impl ClipRectOrAuto {
/// Return an auto (default for clip-rect and image-region) value /// Return an auto (default for clip-rect and image-region) value
pub fn auto() -> Self { pub fn auto() -> Self {

View file

@ -10,6 +10,7 @@ use app_units::Au;
use cssparser::{self, Parser, Token}; use cssparser::{self, Parser, Token};
use euclid::size::Size2D; use euclid::size::Size2D;
use parser::{ParserContext, Parse}; use parser::{ParserContext, Parse};
use self::grid::{TrackBreadth as GenericTrackBreadth, TrackSize as GenericTrackSize};
use self::url::SpecifiedUrl; use self::url::SpecifiedUrl;
use std::ascii::AsciiExt; use std::ascii::AsciiExt;
use std::f32::consts::PI; use std::f32::consts::PI;
@ -22,7 +23,7 @@ use super::computed::Shadow as ComputedShadow;
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
pub use self::align::{AlignItems, AlignJustifyContent, AlignJustifySelf, JustifyItems}; pub use self::align::{AlignItems, AlignJustifyContent, AlignJustifySelf, JustifyItems};
pub use self::grid::{GridLine, TrackBreadth, TrackKeyword, TrackSize}; pub use self::grid::{GridLine, TrackKeyword};
pub use self::image::{AngleOrCorner, ColorStop, EndingShape as GradientEndingShape, Gradient}; pub use self::image::{AngleOrCorner, ColorStop, EndingShape as GradientEndingShape, Gradient};
pub use self::image::{GradientKind, HorizontalDirection, Image, LengthOrKeyword, LengthOrPercentageOrKeyword}; pub use self::image::{GradientKind, HorizontalDirection, Image, LengthOrKeyword, LengthOrPercentageOrKeyword};
pub use self::image::{SizeKeyword, VerticalDirection}; pub use self::image::{SizeKeyword, VerticalDirection};
@ -554,6 +555,12 @@ impl ToCss for Opacity {
#[allow(missing_docs)] #[allow(missing_docs)]
pub type UrlOrNone = Either<SpecifiedUrl, None_>; pub type UrlOrNone = Either<SpecifiedUrl, None_>;
#[allow(missing_docs)]
pub type TrackBreadth = GenericTrackBreadth<LengthOrPercentage>;
#[allow(missing_docs)]
pub type TrackSize = GenericTrackSize<LengthOrPercentage>;
#[derive(Debug, Clone, PartialEq)] #[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))] #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
#[allow(missing_docs)] #[allow(missing_docs)]