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 pretty::{Doc, RcDoc};

pub fn to_doc<EXTRA>(comment: &[crate::puppet_lang::comment::Comment<EXTRA>]) -> RcDoc<()> {
    let comment: Vec<_> = comment.iter().flat_map(|v| v.value.split('\n')).collect();

    if comment.is_empty() {
        RcDoc::nil()
    } else {
        RcDoc::hardline().append(RcDoc::intersperse(
            comment
                .into_iter()
                .map(|line| RcDoc::text("#").append(line)),
            Doc::hardline(),
        ))
    }
}

pub fn comment_or<'a, EXTRA>(
    comment: &'a [crate::puppet_lang::comment::Comment<EXTRA>],
    after_comment: RcDoc<'a, ()>,
    alt: RcDoc<'a, ()>,
) -> RcDoc<'a, ()> {
    if comment.is_empty() {
        alt
    } else {
        to_doc(comment).append(after_comment)
    }
}