Skip to main content

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}