malva 0.16.0

Configurable, smart and fast CSS, SCSS, Sass and Less formatter.
Documentation
use super::{super::DocGen, helpers};
use crate::{ctx::Ctx, state::State};
use raffia::ast::*;
use tiny_pretty::Doc;

impl<'a, 's: 'a> DocGen<'a, 's> for PageSelector<'s> {
    fn doc(&self, ctx: &Ctx<'a, 's>, state: &State) -> Doc<'s> {
        let pseudo = Doc::list(
            self.pseudo
                .iter()
                .map(|pseudo| pseudo.doc(ctx, state))
                .collect(),
        );
        if let Some(name) = &self.name {
            name.doc(ctx, state).append(pseudo)
        } else {
            pseudo
        }
    }
}

impl<'a, 's: 'a> DocGen<'a, 's> for PageSelectorList<'s> {
    fn doc(&self, ctx: &Ctx<'a, 's>, state: &State) -> Doc<'s> {
        helpers::format_selectors_before_block(
            &self.selectors,
            &self.comma_spans,
            self.span.start,
            ctx,
            state,
        )
        .nest(ctx.indent_width)
    }
}

impl<'a, 's: 'a> DocGen<'a, 's> for PseudoPage<'s> {
    fn doc(&self, ctx: &Ctx<'a, 's>, state: &State) -> Doc<'s> {
        Doc::char(':').append(self.name.doc(ctx, state))
    }
}