1use serde::Deserialize;
2
3pub mod toml;
4
5fn default_true() -> bool {
6 true
7}
8
9#[derive(Deserialize)]
10pub enum Mode {
11 #[serde(rename = "lwb")]
12 Lwb,
13 #[serde(rename = "parser")]
14 Parser,
15 #[serde(rename = "parser")]
16 Custom(String),
17}
18
19impl Mode {
20 pub fn import_location(&self) -> &str {
21 match self {
22 Mode::Lwb => "rust_lwb",
23 Mode::Parser => "lwb_parser",
24 Mode::Custom(a) => a,
25 }
26 }
27}
28
29impl Default for Mode {
30 fn default() -> Self {
31 Self::Parser
32 }
33}
34
35#[derive(Deserialize)]
36pub struct SyntaxConfig {
37 pub destination: String,
40
41 pub definition: String,
44
45 #[serde(default)]
53 pub non_exhaustive: bool,
54
55 #[serde(default)]
57 pub serde: bool,
58
59 #[serde(default)]
62 pub mode: Mode,
63
64 #[doc(hidden)]
65 #[serde(default = "default_true")]
66 pub write_serialized_ast: bool, }
68
69#[derive(Deserialize)]
70pub struct LanguageConfig {
71 pub name: String,
73
74 #[serde(default)]
76 pub extensions: Vec<String>,
77}
78
79#[derive(Deserialize)]
80pub struct Config {
81 pub syntax: SyntaxConfig,
82 pub language: LanguageConfig,
83}