panache_parser/parser/yaml/
model.rs1#[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 YamlDiagnostic {
42 pub code: &'static str,
43 pub message: &'static str,
44 pub byte_start: usize,
45 pub byte_end: usize,
46}
47
48#[derive(Debug, Clone)]
49pub struct YamlParseReport {
50 pub tree: Option<crate::syntax::SyntaxNode>,
51 pub diagnostics: Vec<YamlDiagnostic>,
52}
53
54pub mod diagnostic_codes {
55 pub const LEX_ERROR: &str = "YAML_LEX_ERROR";
56 pub const LEX_TRAILING_CONTENT_AFTER_DOCUMENT_START: &str =
57 "YAML_LEX_TRAILING_CONTENT_AFTER_DOCUMENT_START";
58 pub const LEX_TRAILING_CONTENT_AFTER_DOCUMENT_END: &str =
59 "YAML_LEX_TRAILING_CONTENT_AFTER_DOCUMENT_END";
60 pub const LEX_INVALID_DOUBLE_QUOTED_ESCAPE: &str = "YAML_LEX_INVALID_DOUBLE_QUOTED_ESCAPE";
61 pub const LEX_WRONG_INDENTED_FLOW: &str = "YAML_LEX_WRONG_INDENTED_FLOW";
62 pub const LEX_REQUIRED_SIMPLE_KEY_NOT_FOUND: &str = "YAML_LEX_REQUIRED_SIMPLE_KEY_NOT_FOUND";
63 pub const LEX_BLOCK_ENTRY_NOT_ALLOWED: &str = "YAML_LEX_BLOCK_ENTRY_NOT_ALLOWED";
64 pub const LEX_KEY_INDICATOR_NOT_ALLOWED: &str = "YAML_LEX_KEY_INDICATOR_NOT_ALLOWED";
65 pub const LEX_VALUE_INDICATOR_NOT_ALLOWED: &str = "YAML_LEX_VALUE_INDICATOR_NOT_ALLOWED";
66 pub const LEX_UNTERMINATED_QUOTED_SCALAR: &str = "YAML_LEX_UNTERMINATED_QUOTED_SCALAR";
67
68 pub const PARSE_EXPECTED_FLOW_SEQUENCE_START: &str = "YAML_PARSE_EXPECTED_FLOW_SEQUENCE_START";
69 pub const PARSE_TRAILING_CONTENT_AFTER_FLOW_END: &str =
70 "YAML_PARSE_TRAILING_CONTENT_AFTER_FLOW_END";
71 pub const PARSE_INVALID_FLOW_SEQUENCE_COMMA: &str = "YAML_PARSE_INVALID_FLOW_SEQUENCE_COMMA";
72 pub const PARSE_UNTERMINATED_FLOW_SEQUENCE: &str = "YAML_PARSE_UNTERMINATED_FLOW_SEQUENCE";
73 pub const PARSE_EXPECTED_FLOW_MAP_START: &str = "YAML_PARSE_EXPECTED_FLOW_MAP_START";
74 pub const PARSE_UNTERMINATED_FLOW_MAP: &str = "YAML_PARSE_UNTERMINATED_FLOW_MAP";
75 pub const PARSE_UNEXPECTED_FLOW_CLOSER: &str = "YAML_PARSE_UNEXPECTED_FLOW_CLOSER";
76 pub const PARSE_UNEXPECTED_INDENT: &str = "YAML_PARSE_UNEXPECTED_INDENT";
77 pub const PARSE_UNEXPECTED_DEDENT: &str = "YAML_PARSE_UNEXPECTED_DEDENT";
78 pub const PARSE_INVALID_KEY_TOKEN: &str = "YAML_PARSE_INVALID_KEY_TOKEN";
79 pub const PARSE_MISSING_COLON: &str = "YAML_PARSE_MISSING_COLON";
80 pub const PARSE_UNTERMINATED_BLOCK_MAP: &str = "YAML_PARSE_UNTERMINATED_BLOCK_MAP";
81 pub const PARSE_DIRECTIVE_AFTER_CONTENT: &str = "YAML_PARSE_DIRECTIVE_AFTER_CONTENT";
82 pub const PARSE_DIRECTIVE_WITHOUT_DOCUMENT_START: &str =
83 "YAML_PARSE_DIRECTIVE_WITHOUT_DOCUMENT_START";
84}