You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.3 KiB
60 lines
1.3 KiB
use std::collections::HashMap;
|
|
use namegen::FormattingRule;
|
|
|
|
#[derive(Deserialize)]
|
|
pub struct Manifest {
|
|
pub name: String,
|
|
#[serde(default)]
|
|
pub metadata: HashMap<String, String>,
|
|
pub sources: Vec<SourceManifest>,
|
|
pub formats: Vec<FormatManifest>,
|
|
pub parts: Vec<PartManifest>,
|
|
}
|
|
|
|
#[derive(Deserialize)]
|
|
pub struct PartManifest {
|
|
pub name: String,
|
|
pub kind: String,
|
|
#[serde(default)]
|
|
pub initial_tokens: Vec<String>,
|
|
#[serde(default)]
|
|
pub rules: PartManifestRule,
|
|
pub source: String,
|
|
#[serde(default)]
|
|
pub format_rules: Vec<FormattingRule>,
|
|
}
|
|
|
|
#[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<String>,
|
|
#[serde(default)]
|
|
pub to_lower: bool,
|
|
#[serde(default)]
|
|
pub empty_token: Option<String>,
|
|
#[serde(default)]
|
|
pub separator: Option<String>,
|
|
#[serde(default)]
|
|
pub comment_prefix: Option<String>,
|
|
}
|
|
|
|
#[derive(Deserialize)]
|
|
pub struct FormatManifest {
|
|
pub name: String,
|
|
pub template: String,
|
|
}
|