1use std::convert::TryFrom;
2use std::fmt;
3
4#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Debug)]
6pub enum ErrorCode {
7 CollidingKeywords,
10
11 ConflictingIndexes,
13
14 ContextOverflow,
16
17 CyclicIriMapping,
19
20 InvalidIdValue,
22
23 InvalidImportValue,
25
26 InvalidIncludedValue,
28
29 InvalidIndexValue,
31
32 InvalidNestValue,
34
35 InvalidPrefixValue,
37
38 InvalidPropagateValue,
40
41 InvalidProtectedValue,
43
44 InvalidReverseValue,
46
47 InvalidVersionValue,
49
50 InvalidBaseDirection,
52
53 InvalidBaseIri,
55
56 InvalidContainerMapping,
59
60 InvalidContextEntry,
62
63 InvalidContextNullification,
65
66 InvalidDefaultLanguage,
68
69 InvalidIriMapping,
71
72 InvalidJsonLiteral,
74
75 InvalidKeywordAlias,
77
78 InvalidLanguageMapValue,
81
82 InvalidLanguageMapping,
85
86 InvalidLanguageTaggedString,
88
89 InvalidLanguageTaggedValue,
91
92 InvalidLocalContext,
94
95 InvalidRemoteContext,
97
98 InvalidReverseProperty,
100
101 InvalidReversePropertyMap,
104
105 InvalidReversePropertyValue,
108
109 InvalidScopedContext,
111
112 InvalidScriptElement,
115
116 InvalidSetOrListObject,
118
119 InvalidTermDefinition,
121
122 InvalidTypeMapping,
125
126 InvalidTypeValue,
129
130 InvalidTypedValue,
132
133 InvalidValueObject,
135
136 InvalidValueObjectValue,
139
140 InvalidVocabMapping,
142
143 IriConfusedWithPrefix,
146
147 KeyExpansionFailed,
151
152 KeywordRedefinition,
154
155 LoadingDocumentFailed,
157
158 LoadingRemoteContextFailed,
160
161 MultipleContextLinkHeaders,
164
165 ProcessingModeConflict,
168
169 ProtectedTermRedefinition,
171
172 DuplicateKey,
174}
175
176impl ErrorCode {
177 pub fn as_str(&self) -> &str {
179 use ErrorCode::*;
180
181 match self {
182 CollidingKeywords => "colliding keywords",
183 ConflictingIndexes => "conflicting indexes",
184 ContextOverflow => "context overflow",
185 CyclicIriMapping => "cyclic IRI mapping",
186 InvalidIdValue => "invalid @id value",
187 InvalidImportValue => "invalid @import value",
188 InvalidIncludedValue => "invalid @included value",
189 InvalidIndexValue => "invalid @index value",
190 InvalidNestValue => "invalid @nest value",
191 InvalidPrefixValue => "invalid @prefix value",
192 InvalidPropagateValue => "invalid @propagate value",
193 InvalidProtectedValue => "invalid @protected value",
194 InvalidReverseValue => "invalid @reverse value",
195 InvalidVersionValue => "invalid @version value",
196 InvalidBaseDirection => "invalid base direction",
197 InvalidBaseIri => "invalid base IRI",
198 InvalidContainerMapping => "invalid container mapping",
199 InvalidContextEntry => "invalid context entry",
200 InvalidContextNullification => "invalid context nullification",
201 InvalidDefaultLanguage => "invalid default language",
202 InvalidIriMapping => "invalid IRI mapping",
203 InvalidJsonLiteral => "invalid JSON literal",
204 InvalidKeywordAlias => "invalid keyword alias",
205 InvalidLanguageMapValue => "invalid language map value",
206 InvalidLanguageMapping => "invalid language mapping",
207 InvalidLanguageTaggedString => "invalid language-tagged string",
208 InvalidLanguageTaggedValue => "invalid language-tagged value",
209 InvalidLocalContext => "invalid local context",
210 InvalidRemoteContext => "invalid remote context",
211 InvalidReverseProperty => "invalid reverse property",
212 InvalidReversePropertyMap => "invalid reverse property map",
213 InvalidReversePropertyValue => "invalid reverse property value",
214 InvalidScopedContext => "invalid scoped context",
215 InvalidScriptElement => "invalid script element",
216 InvalidSetOrListObject => "invalid set or list object",
217 InvalidTermDefinition => "invalid term definition",
218 InvalidTypeMapping => "invalid type mapping",
219 InvalidTypeValue => "invalid type value",
220 InvalidTypedValue => "invalid typed value",
221 InvalidValueObject => "invalid value object",
222 InvalidValueObjectValue => "invalid value object value",
223 InvalidVocabMapping => "invalid vocab mapping",
224 IriConfusedWithPrefix => "IRI confused with prefix",
225 KeyExpansionFailed => "key expansion failed",
226 KeywordRedefinition => "keyword redefinition",
227 LoadingDocumentFailed => "loading document failed",
228 LoadingRemoteContextFailed => "loading remote context failed",
229 MultipleContextLinkHeaders => "multiple context link headers",
230 ProcessingModeConflict => "processing mode conflict",
231 ProtectedTermRedefinition => "protected term redefinition",
232 DuplicateKey => "duplicate key",
233 }
234 }
235}
236
237impl<'a> TryFrom<&'a str> for ErrorCode {
238 type Error = ();
239
240 fn try_from(name: &'a str) -> Result<ErrorCode, ()> {
241 use ErrorCode::*;
242 match name {
243 "colliding keywords" => Ok(CollidingKeywords),
244 "conflicting indexes" => Ok(ConflictingIndexes),
245 "context overflow" => Ok(ContextOverflow),
246 "cyclic IRI mapping" => Ok(CyclicIriMapping),
247 "invalid @id value" => Ok(InvalidIdValue),
248 "invalid @import value" => Ok(InvalidImportValue),
249 "invalid @included value" => Ok(InvalidIncludedValue),
250 "invalid @index value" => Ok(InvalidIndexValue),
251 "invalid @nest value" => Ok(InvalidNestValue),
252 "invalid @prefix value" => Ok(InvalidPrefixValue),
253 "invalid @propagate value" => Ok(InvalidPropagateValue),
254 "invalid @protected value" => Ok(InvalidProtectedValue),
255 "invalid @reverse value" => Ok(InvalidReverseValue),
256 "invalid @version value" => Ok(InvalidVersionValue),
257 "invalid base direction" => Ok(InvalidBaseDirection),
258 "invalid base IRI" => Ok(InvalidBaseIri),
259 "invalid container mapping" => Ok(InvalidContainerMapping),
260 "invalid context entry" => Ok(InvalidContextEntry),
261 "invalid context nullification" => Ok(InvalidContextNullification),
262 "invalid default language" => Ok(InvalidDefaultLanguage),
263 "invalid IRI mapping" => Ok(InvalidIriMapping),
264 "invalid JSON literal" => Ok(InvalidJsonLiteral),
265 "invalid keyword alias" => Ok(InvalidKeywordAlias),
266 "invalid language map value" => Ok(InvalidLanguageMapValue),
267 "invalid language mapping" => Ok(InvalidLanguageMapping),
268 "invalid language-tagged string" => Ok(InvalidLanguageTaggedString),
269 "invalid language-tagged value" => Ok(InvalidLanguageTaggedValue),
270 "invalid local context" => Ok(InvalidLocalContext),
271 "invalid remote context" => Ok(InvalidRemoteContext),
272 "invalid reverse property" => Ok(InvalidReverseProperty),
273 "invalid reverse property map" => Ok(InvalidReversePropertyMap),
274 "invalid reverse property value" => Ok(InvalidReversePropertyValue),
275 "invalid scoped context" => Ok(InvalidScopedContext),
276 "invalid script element" => Ok(InvalidScriptElement),
277 "invalid set or list object" => Ok(InvalidSetOrListObject),
278 "invalid term definition" => Ok(InvalidTermDefinition),
279 "invalid type mapping" => Ok(InvalidTypeMapping),
280 "invalid type value" => Ok(InvalidTypeValue),
281 "invalid typed value" => Ok(InvalidTypedValue),
282 "invalid value object" => Ok(InvalidValueObject),
283 "invalid value object value" => Ok(InvalidValueObjectValue),
284 "invalid vocab mapping" => Ok(InvalidVocabMapping),
285 "IRI confused with prefix" => Ok(IriConfusedWithPrefix),
286 "key expansion failed" => Ok(KeyExpansionFailed),
287 "keyword redefinition" => Ok(KeywordRedefinition),
288 "loading document failed" => Ok(LoadingDocumentFailed),
289 "loading remote context failed" => Ok(LoadingRemoteContextFailed),
290 "multiple context link headers" => Ok(MultipleContextLinkHeaders),
291 "processing mode conflict" => Ok(ProcessingModeConflict),
292 "protected term redefinition" => Ok(ProtectedTermRedefinition),
293 _ => Err(()),
294 }
295 }
296}
297
298impl fmt::Display for ErrorCode {
299 #[inline(always)]
300 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
301 write!(f, "{}", self.as_str())
302 }
303}