mirror of
https://github.com/servo/servo.git
synced 2025-06-27 18:43:40 +01:00
Fully automated via: $ rg -l '\.try\(' | xargs sed -i 's/\.try(/.try_parse(/g' $ cd servo/components/style && cargo +nightly fmt Differential Revision: https://phabricator.services.mozilla.com/D80099
71 lines
1.8 KiB
Rust
71 lines
1.8 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
//! Specified values for outline properties
|
|
|
|
use crate::parser::{Parse, ParserContext};
|
|
use crate::values::specified::BorderStyle;
|
|
use cssparser::Parser;
|
|
use selectors::parser::SelectorParseErrorKind;
|
|
use style_traits::ParseError;
|
|
|
|
#[derive(
|
|
Clone,
|
|
Copy,
|
|
Debug,
|
|
Eq,
|
|
MallocSizeOf,
|
|
Ord,
|
|
PartialEq,
|
|
PartialOrd,
|
|
SpecifiedValueInfo,
|
|
ToComputedValue,
|
|
ToCss,
|
|
ToResolvedValue,
|
|
ToShmem,
|
|
)]
|
|
#[repr(C, u8)]
|
|
/// <https://drafts.csswg.org/css-ui/#propdef-outline-style>
|
|
pub enum OutlineStyle {
|
|
/// auto
|
|
Auto,
|
|
/// <border-style>
|
|
BorderStyle(BorderStyle),
|
|
}
|
|
|
|
impl OutlineStyle {
|
|
#[inline]
|
|
/// Get default value as None
|
|
pub fn none() -> OutlineStyle {
|
|
OutlineStyle::BorderStyle(BorderStyle::None)
|
|
}
|
|
|
|
#[inline]
|
|
/// Get value for None or Hidden
|
|
pub fn none_or_hidden(&self) -> bool {
|
|
match *self {
|
|
OutlineStyle::Auto => false,
|
|
OutlineStyle::BorderStyle(ref style) => style.none_or_hidden(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Parse for OutlineStyle {
|
|
fn parse<'i, 't>(
|
|
_context: &ParserContext,
|
|
input: &mut Parser<'i, 't>,
|
|
) -> Result<OutlineStyle, ParseError<'i>> {
|
|
if let Ok(border_style) = input.try_parse(BorderStyle::parse) {
|
|
if let BorderStyle::Hidden = border_style {
|
|
return Err(input
|
|
.new_custom_error(SelectorParseErrorKind::UnexpectedIdent("hidden".into())));
|
|
}
|
|
|
|
return Ok(OutlineStyle::BorderStyle(border_style));
|
|
}
|
|
|
|
input.expect_ident_matching("auto")?;
|
|
Ok(OutlineStyle::Auto)
|
|
}
|
|
}
|