numi-core 0.2.0

Core parsing, normalization, rendering, and output orchestration for Numi.
Documentation
mod context;
mod generation_cache;
mod output;
mod parse_cache;
pub mod parse_files;
mod parse_fonts;
mod parse_l10n;
mod parse_xcassets;
mod pipeline;
mod render;

pub use output::WriteOutcome;
pub use pipeline::{
    CheckReport, DumpContextReport, GenerateError, GenerateOptions, GenerateReport, HookPhase,
    HookReport, JobReport, check, check_loaded_config, dump_context, generate,
    generate_loaded_config, generate_with_options,
};

#[cfg(test)]
mod publish_invariants {
    #[test]
    fn builtin_templates_are_embedded_from_within_the_crate() {
        let render_rs = include_str!("render.rs");

        for needle in [
            "include_str!(\"../templates/swift/swiftui-assets.jinja\")",
            "include_str!(\"../templates/swift/l10n.jinja\")",
            "include_str!(\"../templates/swift/files.jinja\")",
            "include_str!(\"../templates/objc/assets.jinja\")",
            "include_str!(\"../templates/objc/l10n.jinja\")",
            "include_str!(\"../templates/objc/files.jinja\")",
        ] {
            assert!(
                render_rs.contains(needle),
                "expected render.rs to contain {needle}"
            );
        }

        assert!(
            !render_rs.contains("../../../templates/"),
            "render.rs should not reference templates outside the crate root"
        );
    }
}