Skip to main content

panache_parser/parser/yaml/
model.rs

1#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
2pub enum YamlInputKind {
3    #[default]
4    Plain,
5    Hashpipe,
6}
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq)]
9pub struct ShadowYamlOptions {
10    pub enabled: bool,
11    pub input_kind: YamlInputKind,
12}
13
14impl Default for ShadowYamlOptions {
15    fn default() -> Self {
16        Self {
17            enabled: false,
18            input_kind: YamlInputKind::Plain,
19        }
20    }
21}
22
23#[derive(Debug, Clone, Copy, PartialEq, Eq)]
24pub enum ShadowYamlOutcome {
25    SkippedDisabled,
26    PrototypeParsed,
27    PrototypeRejected,
28}
29
30#[derive(Debug, Clone, PartialEq, Eq)]
31pub struct ShadowYamlReport {
32    pub outcome: ShadowYamlOutcome,
33    pub shadow_reason: &'static str,
34    pub input_kind: YamlInputKind,
35    pub input_len_bytes: usize,
36    pub line_count: usize,
37    pub normalized_input: Option<String>,
38}
39
40#[derive(Debug, Clone, PartialEq, Eq)]
41pub struct BasicYamlEntry<'a> {
42    pub key: &'a str,
43    pub value: &'a str,
44}
45
46#[derive(Debug, Clone, Copy, PartialEq, Eq)]
47pub enum YamlShadowTokenKind {
48    Indent,
49    Dedent,
50    Key,
51    Colon,
52    Whitespace,
53    Tag,
54    Scalar,
55    Comment,
56    Newline,
57}
58
59#[derive(Debug, Clone, Copy, PartialEq, Eq)]
60pub struct YamlShadowToken<'a> {
61    pub kind: YamlShadowTokenKind,
62    pub text: &'a str,
63}