omena-cascade 0.4.0

Cascade-formal substrate for Omena CSS
Documentation
use omena_cascade::summarize_cascade_margin_schema_v0;
use serde::Serialize;

#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
struct CascadeKeyAxisOrderArtifactV0 {
    schema_version: &'static str,
    product: &'static str,
    axis_order: Vec<&'static str>,
    ranked_set_prefix_axis_vocabulary: Vec<&'static str>,
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let schema = summarize_cascade_margin_schema_v0();
    let specificity_start = schema
        .axis_order
        .iter()
        .position(|axis| axis.starts_with("specificity"))
        .ok_or("cascade key axis order is missing specificity")?;
    let ranked_set_prefix_axis_vocabulary = schema.axis_order[..specificity_start].to_vec();
    let artifact = CascadeKeyAxisOrderArtifactV0 {
        schema_version: "0",
        product: "omena-cascade.key-axis-order",
        axis_order: schema.axis_order,
        ranked_set_prefix_axis_vocabulary,
    };
    println!("{}", serde_json::to_string_pretty(&artifact)?);
    Ok(())
}