chord_progression_parser/error_code.rs
1// NOTE: Do not edit this file manually, it is generated by error_code_message_map.util.ts
2use strum_macros::{Display, EnumString};
3
4use crate::util::position::Position;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Display, EnumString)]
7pub enum ErrorCode {
8 #[strum(serialize = "SMIK-1")]
9 /**
10 * en: SectionMetaInfoKey is invalid
11 * ja: セクションメタ情報のキーが不正です
12 */
13 Smik1,
14
15 #[strum(serialize = "SMIK-2")]
16 /**
17 * en: SectionMetaInfoKey should not contains line break
18 * ja: セクションメタ情報のキーに改行を含めることはできません
19 */
20 Smik2,
21
22 #[strum(serialize = "SMIV-1")]
23 /**
24 * en: SectionMetaInfoValue should not be empty
25 * ja: セクションメタ情報の値は空にできません
26 */
27 Smiv1,
28
29 #[strum(serialize = "SMIV-2")]
30 /**
31 * en: SectionMetaInfoValue needs line break after
32 * ja: セクションメタ情報の値の後に改行が必要です
33 */
34 Smiv2,
35
36 #[strum(serialize = "SMIV-3")]
37 /**
38 * en: SectionMetaInfoValue of repeat needs to be number
39 * ja: セクションメタ情報の値のrepeatの値は数値である必要があります
40 */
41 Smiv3,
42
43 #[strum(serialize = "CIMK-1")]
44 /**
45 * en: ChordInfoMetaKey should not contains line break
46 * ja: コードメタ情報のキーに改行を含めることはできません
47 */
48 Cimk1,
49
50 #[strum(serialize = "CIMK-2")]
51 /**
52 * en: MetaInfoKey should not be empty
53 * ja: コードメタ情報のキーは空にできません
54 */
55 Cimk2,
56
57 #[strum(serialize = "CIMK-3")]
58 /**
59 * en: MetaInfoKey is invalid
60 * ja: コードメタ情報のキーが不正です
61 */
62 Cimk3,
63
64 #[strum(serialize = "CIMV-1")]
65 /**
66 * en: MetaInfoValue should not contains line break
67 * ja: コードメタ情報の値に改行を含めることはできません
68 */
69 Cimv1,
70
71 #[strum(serialize = "CIMV-2")]
72 /**
73 * en: MetaInfoValue should not be empty
74 * ja: コードメタ情報の値は空にできません
75 */
76 Cimv2,
77
78 #[strum(serialize = "CIMV-3")]
79 /**
80 * en: MetaInfoValue needs close parenthesis after
81 * ja: コードメタ情報の値の後に閉じ括弧が必要です
82 */
83 Cimv3,
84
85 #[strum(serialize = "CIMV-4")]
86 /**
87 * en: MetaInfoValue is invalid
88 * ja: コードメタ情報の値が不正です
89 */
90 Cimv4,
91
92 #[strum(serialize = "CHB-1")]
93 /**
94 * en: % should not be placed first of ChordBlock
95 * ja: コードブロックの先頭に%を置くことはできません
96 */
97 Chb1,
98
99 #[strum(serialize = "CHB-2")]
100 /**
101 * en: Bar should not contains line break
102 * ja: コードブロックに改行を含めることはできません
103 */
104 Chb2,
105
106 #[strum(serialize = "CHO-1")]
107 /**
108 * en: Invalid chord
109 * ja: コードが不正です
110 */
111 Cho1,
112
113 #[strum(serialize = "CHO-2")]
114 /**
115 * en: Chord should not contains line break
116 * ja: コードに改行を含めることはできません
117 */
118 Cho2,
119
120 #[strum(serialize = "CHO-3")]
121 /**
122 * en: Chord should not be empty
123 * ja: コードは空にできません
124 */
125 Cho3,
126
127 #[strum(serialize = "DEN-1")]
128 /**
129 * en: Invalid denominator
130 * ja: 分母が不正です
131 */
132 Den1,
133
134 #[strum(serialize = "DEN-2")]
135 /**
136 * en: Denominator is limited to one per chord
137 * ja: コードに対して分母は1つまでです
138 */
139 Den2,
140
141 #[strum(serialize = "EXT-1")]
142 /**
143 * en: Invalid extension
144 * ja: テンションが不正です
145 */
146 Ext1,
147
148 #[strum(serialize = "EXT-2")]
149 /**
150 * en: Extension must not be empty
151 * ja: テンションは空にできません
152 */
153 Ext2,
154
155 #[strum(serialize = "EXT-3")]
156 /**
157 * en: Extension must be surrounded by parenthesis
158 * ja: テンションは括弧で囲む必要があります
159 */
160 Ext3,
161
162 #[strum(serialize = "EXT-4")]
163 /**
164 * en: No multiple extension parenthesis
165 * ja: テンションの括弧は1つまでです
166 */
167 Ext4,
168
169 #[strum(serialize = "TKN-1")]
170 /**
171 * en: Invalid token type
172 * ja: 不正なトークンタイプです
173 */
174 Tkn1,
175
176 #[strum(serialize = "BS-1")]
177 /**
178 * en: Invalid base
179 * ja: 不正なベース音です
180 */
181 Bs1,
182
183 #[strum(serialize = "BL-1")]
184 /**
185 * en: Continuous blank lines are not allowed
186 * ja: 連続した空行は許可されていません
187 */
188 Bl1,
189
190 #[strum(serialize = "OTHER-1")]
191 /**
192 * en: Unknown error
193 * ja: 不明なエラーです
194 */
195 Other1,
196}
197
198#[derive(Debug, PartialEq)]
199pub struct ErrorInfo {
200 pub code: ErrorCode,
201 pub additional_info: Option<String>,
202}
203
204#[derive(Debug, PartialEq)]
205pub struct ErrorInfoWithPosition {
206 pub error: ErrorInfo,
207 pub position: Position,
208}
209
210// implement to_string() for ErrorInfo
211impl std::fmt::Display for ErrorInfo {
212 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
213 let additional_info = match &self.additional_info {
214 Some(info) => format!(": {}", info),
215 None => "".to_string(),
216 };
217 write!(f, "{}{}", self.code, additional_info)
218 }
219}