The namegen5 website.
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.

59 lines
1.3 KiB

3 years ago
  1. use std::collections::HashMap;
  2. use namegen::FormattingRule;
  3. #[derive(Deserialize)]
  4. pub struct Manifest {
  5. pub name: String,
  6. #[serde(default)]
  7. pub metadata: HashMap<String, String>,
  8. pub sources: Vec<SourceManifest>,
  9. pub formats: Vec<FormatManifest>,
  10. pub parts: Vec<PartManifest>,
  11. }
  12. #[derive(Deserialize)]
  13. pub struct PartManifest {
  14. pub name: String,
  15. pub kind: String,
  16. #[serde(default)]
  17. pub initial_tokens: Vec<String>,
  18. #[serde(default)]
  19. pub rules: PartManifestRule,
  20. pub source: String,
  21. #[serde(default)]
  22. pub format_rules: Vec<FormattingRule>,
  23. }
  24. #[derive(Deserialize, Default)]
  25. pub struct PartManifestRule {
  26. #[serde(default)]
  27. pub rlf: bool,
  28. #[serde(default)]
  29. pub ral: bool,
  30. #[serde(default)]
  31. pub lrs: bool,
  32. #[serde(default)]
  33. pub lrm: bool,
  34. #[serde(default)]
  35. pub lre: bool,
  36. }
  37. #[derive(Deserialize)]
  38. pub struct SourceManifest {
  39. pub files: String,
  40. pub kind: String,
  41. pub targets: Vec<String>,
  42. #[serde(default)]
  43. pub to_lower: bool,
  44. #[serde(default)]
  45. pub empty_token: Option<String>,
  46. #[serde(default)]
  47. pub separator: Option<String>,
  48. #[serde(default)]
  49. pub comment_prefix: Option<String>,
  50. }
  51. #[derive(Deserialize)]
  52. pub struct FormatManifest {
  53. pub name: String,
  54. pub template: String,
  55. }