shadowplay 0.16.3

Utility for checking puppet syntax, a puppet manifest linter, a pretty printer, and a utility for exploring the Hiera.
Documentation
use serde::Serialize;

#[derive(Clone, Debug, PartialEq, Serialize)]
pub struct Attribute<EXTRA> {
    pub name: String,
    pub extra: EXTRA,
}

#[derive(Clone, Debug, PartialEq, Serialize)]
pub enum ExpressionVariant<EXTRA> {
    Equal(
        (
            Attribute<EXTRA>,
            crate::puppet_lang::expression::Term<EXTRA>,
        ),
    ),
    NotEqual(
        (
            Attribute<EXTRA>,
            crate::puppet_lang::expression::Term<EXTRA>,
        ),
    ),
    And((Box<SearchExpression<EXTRA>>, Box<SearchExpression<EXTRA>>)),
    Or((Box<SearchExpression<EXTRA>>, Box<SearchExpression<EXTRA>>)),
    Parens(Box<SearchExpression<EXTRA>>),
}

#[derive(Clone, Debug, PartialEq, Serialize)]
pub struct SearchExpression<EXTRA> {
    pub value: ExpressionVariant<EXTRA>,
    pub extra: EXTRA,
}

#[derive(Clone, Debug, PartialEq, Serialize)]
pub struct ResourceCollection<EXTRA> {
    pub type_specification: crate::puppet_lang::typing::TypeSpecification<EXTRA>,
    pub search_expression: Option<SearchExpression<EXTRA>>,
    pub extra: EXTRA,
    pub comment: Vec<crate::puppet_lang::comment::Comment<EXTRA>>,
}