use std::collections::HashMap; use namegen::FormattingRule; #[derive(Deserialize)] pub struct Manifest { pub name: String, #[serde(default)] pub metadata: HashMap, pub sources: Vec, pub formats: Vec, pub parts: Vec, } #[derive(Deserialize)] pub struct PartManifest { pub name: String, pub kind: String, #[serde(default)] pub initial_tokens: Vec, #[serde(default)] pub rules: PartManifestRule, pub source: String, #[serde(default)] pub format_rules: Vec, } #[derive(Deserialize, Default)] pub struct PartManifestRule { #[serde(default)] pub rlf: bool, #[serde(default)] pub ral: bool, #[serde(default)] pub lrs: bool, #[serde(default)] pub lrm: bool, #[serde(default)] pub lre: bool, } #[derive(Deserialize)] pub struct SourceManifest { pub files: String, pub kind: String, pub targets: Vec, #[serde(default)] pub to_lower: bool, #[serde(default)] pub empty_token: Option, #[serde(default)] pub separator: Option, #[serde(default)] pub comment_prefix: Option, } #[derive(Deserialize)] pub struct FormatManifest { pub name: String, pub template: String, }