pub struct DeclarationBlock<'i> {
pub important_declarations: Vec<Property<'i>>,
pub declarations: Vec<Property<'i>>,
}Expand description
A CSS declaration block.
Properties are separated into a list of !important declararations,
and a list of normal declarations. This reduces memory usage compared
with storing a boolean along with each property.
Fields§
§important_declarations: Vec<Property<'i>>A list of !important declarations in the block.
declarations: Vec<Property<'i>>A list of normal declarations in the block.
Implementations§
Source§impl<'i> DeclarationBlock<'i>
impl<'i> DeclarationBlock<'i>
Sourcepub fn parse<'a, 't>(
input: &mut Parser<'i, 't>,
options: &'a ParserOptions<'i>,
) -> Result<Self, ParseError<'i, ParserError<'i>>>
pub fn parse<'a, 't>( input: &mut Parser<'i, 't>, options: &'a ParserOptions<'i>, ) -> Result<Self, ParseError<'i, ParserError<'i>>>
Parses a declaration block from CSS syntax.
Sourcepub fn parse_string<'o>(
input: &'i str,
options: ParserOptions<'i>,
) -> Result<Self, ParseError<'i, ParserError<'i>>>
pub fn parse_string<'o>( input: &'i str, options: ParserOptions<'i>, ) -> Result<Self, ParseError<'i, ParserError<'i>>>
Parses a declaration block from a string.
Sourcepub fn new() -> Self
pub fn new() -> Self
Returns an empty declaration block.
Examples found in repository?
198 fn visit_rule(&mut self, rule: &mut CssRule<'i, AtRule>) -> Result<(), Self::Error> {
199 // Replace @apply rule with nested style rule.
200 if let CssRule::Custom(AtRule::Apply(apply)) = rule {
201 let mut declarations = DeclarationBlock::new();
202 for name in &apply.names {
203 let Some(applied) = self.rules.get(name) else {
204 continue;
205 };
206 declarations
207 .important_declarations
208 .extend(applied.important_declarations.iter().cloned());
209 declarations.declarations.extend(applied.declarations.iter().cloned());
210 }
211 *rule = CssRule::Style(StyleRule {
212 selectors: Component::Nesting.into(),
213 vendor_prefix: VendorPrefix::None,
214 declarations,
215 rules: CssRuleList(vec![]),
216 loc: Location {
217 source_index: 0,
218 line: apply.loc.line,
219 column: apply.loc.column,
220 },
221 })
222 }
223
224 rule.visit_children(self)
225 }Source§impl<'i> DeclarationBlock<'i>
impl<'i> DeclarationBlock<'i>
Sourcepub fn to_css_block<W>(
&self,
dest: &mut Printer<'_, '_, W>,
) -> Result<(), PrinterError>where
W: Write,
pub fn to_css_block<W>(
&self,
dest: &mut Printer<'_, '_, W>,
) -> Result<(), PrinterError>where
W: Write,
Writes the declarations to a CSS block, including starting and ending braces.
Sourcepub fn to_css_declarations<W>(
&self,
dest: &mut Printer<'_, '_, W>,
has_nested_rules: bool,
selectors: &SelectorList<'_>,
source_index: u32,
) -> Result<(), PrinterError>where
W: Write,
pub fn to_css_declarations<W>(
&self,
dest: &mut Printer<'_, '_, W>,
has_nested_rules: bool,
selectors: &SelectorList<'_>,
source_index: u32,
) -> Result<(), PrinterError>where
W: Write,
Writes the declarations to a CSS declaration block.
Source§impl<'i> DeclarationBlock<'i>
impl<'i> DeclarationBlock<'i>
Source§impl<'i> DeclarationBlock<'i>
impl<'i> DeclarationBlock<'i>
Sourcepub fn iter(&self) -> impl DoubleEndedIterator<Item = (&Property<'i>, bool)>
pub fn iter(&self) -> impl DoubleEndedIterator<Item = (&Property<'i>, bool)>
Returns an iterator over all properties in the declaration.
Sourcepub fn iter_mut(&mut self) -> impl DoubleEndedIterator<Item = &mut Property<'i>>
pub fn iter_mut(&mut self) -> impl DoubleEndedIterator<Item = &mut Property<'i>>
Returns a mutable iterator over all properties in the declaration.
Sourcepub fn get<'a>(
&'a self,
property_id: &PropertyId<'_>,
) -> Option<(Cow<'a, Property<'i>>, bool)>
pub fn get<'a>( &'a self, property_id: &PropertyId<'_>, ) -> Option<(Cow<'a, Property<'i>>, bool)>
Returns the value for a given property id based on the properties in this declaration block.
If the property is a shorthand, the result will be a combined value of all of the included
longhands, or None if some of the longhands are not declared. Otherwise, the value will be
either an explicitly declared longhand, or a value extracted from a shorthand property.
Sourcepub fn set(&mut self, property: Property<'i>, important: bool)
pub fn set(&mut self, property: Property<'i>, important: bool)
Sets the value and importance for a given property, replacing any existing declarations.
If the property already exists within the declaration block, it is updated in place. Otherwise, a new declaration is appended. When updating a longhand property and a shorthand is defined which includes the longhand, the shorthand will be updated rather than appending a new declaration.
Sourcepub fn remove(&mut self, property_id: &PropertyId<'_>)
pub fn remove(&mut self, property_id: &PropertyId<'_>)
Removes all declarations of the given property id from the declaration block.
When removing a longhand property and a shorthand is defined which includes the longhand, the shorthand will be split apart into its component longhand properties, minus the property to remove. When removing a shorthand, all included longhand properties are also removed.
Trait Implementations§
Source§impl<'i> Clone for DeclarationBlock<'i>
impl<'i> Clone for DeclarationBlock<'i>
Source§impl<'i> Debug for DeclarationBlock<'i>
impl<'i> Debug for DeclarationBlock<'i>
Source§impl<'i> Default for DeclarationBlock<'i>
impl<'i> Default for DeclarationBlock<'i>
Source§impl<'de: 'i, 'i> Deserialize<'de> for DeclarationBlock<'i>
Available on crate feature serde only.
impl<'de: 'i, 'i> Deserialize<'de> for DeclarationBlock<'i>
serde only.Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'any, 'i> IntoOwned<'any> for DeclarationBlock<'i>
Available on crate feature into_owned only.
impl<'any, 'i> IntoOwned<'any> for DeclarationBlock<'i>
into_owned only.Source§fn into_owned(self) -> Self::Owned
fn into_owned(self) -> Self::Owned
Consumes the value and returns an owned clone.
Source§type Owned = DeclarationBlock<'any>
type Owned = DeclarationBlock<'any>
Self with a new lifetime.Source§impl<'i> JsonSchema for DeclarationBlock<'i>
Available on crate feature jsonschema only.
impl<'i> JsonSchema for DeclarationBlock<'i>
jsonschema only.Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref keyword. Read moreSource§impl<'i> PartialEq for DeclarationBlock<'i>
impl<'i> PartialEq for DeclarationBlock<'i>
Source§impl<'i> Serialize for DeclarationBlock<'i>
Available on crate feature serde only.
impl<'i> Serialize for DeclarationBlock<'i>
serde only.impl<'i> StructuralPartialEq for DeclarationBlock<'i>
Source§impl<'i> ToCss for DeclarationBlock<'i>
impl<'i> ToCss for DeclarationBlock<'i>
Source§fn to_css<W>(&self, dest: &mut Printer<'_, '_, W>) -> Result<(), PrinterError>where
W: Write,
fn to_css<W>(&self, dest: &mut Printer<'_, '_, W>) -> Result<(), PrinterError>where
W: Write,
self in CSS syntax, writing to dest.Source§fn to_css_string(
&self,
options: PrinterOptions<'_>,
) -> Result<String, PrinterError>
fn to_css_string( &self, options: PrinterOptions<'_>, ) -> Result<String, PrinterError>
self in CSS syntax and return a string. Read moreSource§impl<'i, __T: Visit<'i, __T, __V>, __V: ?Sized + Visitor<'i, __T>> Visit<'i, __T, __V> for DeclarationBlock<'i>
Available on crate feature visitor only.
impl<'i, __T: Visit<'i, __T, __V>, __V: ?Sized + Visitor<'i, __T>> Visit<'i, __T, __V> for DeclarationBlock<'i>
visitor only.Source§const CHILD_TYPES: VisitTypes
const CHILD_TYPES: VisitTypes
Auto Trait Implementations§
impl<'i> Freeze for DeclarationBlock<'i>
impl<'i> RefUnwindSafe for DeclarationBlock<'i>
impl<'i> Send for DeclarationBlock<'i>
impl<'i> Sync for DeclarationBlock<'i>
impl<'i> Unpin for DeclarationBlock<'i>
impl<'i> UnsafeUnpin for DeclarationBlock<'i>
impl<'i> UnwindSafe for DeclarationBlock<'i>
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.