1use std::{convert::TryFrom, fmt};
2
3#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Debug)]
8pub enum ErrorCode {
9 CollidingKeywords,
12
13 ConflictingIndexes,
15
16 ContextOverflow,
18
19 CyclicIriMapping,
21
22 InvalidIdValue,
24
25 InvalidImportValue,
27
28 InvalidIncludedValue,
30
31 InvalidIndexValue,
33
34 InvalidNestValue,
36
37 InvalidPrefixValue,
39
40 InvalidPropagateValue,
42
43 InvalidProtectedValue,
45
46 InvalidReverseValue,
48
49 InvalidVersionValue,
51
52 InvalidBaseDirection,
54
55 InvalidBaseIri,
57
58 InvalidContainerMapping,
61
62 InvalidContextEntry,
64
65 InvalidContextNullification,
67
68 InvalidDefaultLanguage,
70
71 InvalidIriMapping,
73
74 InvalidJsonLiteral,
76
77 InvalidKeywordAlias,
79
80 InvalidLanguageMapValue,
83
84 InvalidLanguageMapping,
87
88 InvalidLanguageTaggedString,
90
91 InvalidLanguageTaggedValue,
93
94 InvalidLocalContext,
96
97 InvalidRemoteContext,
99
100 InvalidReverseProperty,
102
103 InvalidReversePropertyMap,
106
107 InvalidReversePropertyValue,
110
111 InvalidScopedContext,
113
114 InvalidScriptElement,
117
118 InvalidSetOrListObject,
120
121 InvalidTermDefinition,
123
124 InvalidTypeMapping,
127
128 InvalidTypeValue,
131
132 InvalidTypedValue,
134
135 InvalidValueObject,
137
138 InvalidValueObjectValue,
141
142 InvalidVocabMapping,
144
145 IriConfusedWithPrefix,
148
149 KeyExpansionFailed,
155
156 KeywordRedefinition,
158
159 LoadingDocumentFailed,
161
162 LoadingRemoteContextFailed,
164
165 MultipleContextLinkHeaders,
168
169 ProcessingModeConflict,
172
173 ProtectedTermRedefinition,
175
176 RecursiveContextInclusion,
181
182 ListOfLists,
186
187 DuplicateKey,
192}
193
194impl ErrorCode {
195 #[must_use]
200 pub fn as_str(&self) -> &str {
201 use ErrorCode::{
202 CollidingKeywords,
203 ConflictingIndexes,
204 ContextOverflow,
205 CyclicIriMapping,
206 DuplicateKey,
207 InvalidBaseDirection,
208 InvalidBaseIri,
209 InvalidContainerMapping,
210 InvalidContextEntry,
211 InvalidContextNullification,
212 InvalidDefaultLanguage,
213 InvalidIdValue,
214 InvalidImportValue,
215 InvalidIncludedValue,
216 InvalidIndexValue,
217 InvalidIriMapping,
218 InvalidJsonLiteral,
219 InvalidKeywordAlias,
220 InvalidLanguageMapValue,
221 InvalidLanguageMapping,
222 InvalidLanguageTaggedString,
223 InvalidLanguageTaggedValue,
224 InvalidLocalContext,
225 InvalidNestValue,
226 InvalidPrefixValue,
227 InvalidPropagateValue,
228 InvalidProtectedValue,
229 InvalidRemoteContext,
230 InvalidReverseProperty,
231 InvalidReversePropertyMap,
232 InvalidReversePropertyValue,
233 InvalidReverseValue,
234 InvalidScopedContext,
235 InvalidScriptElement,
236 InvalidSetOrListObject,
237 InvalidTermDefinition,
238 InvalidTypeMapping,
239 InvalidTypeValue,
240 InvalidTypedValue,
241 InvalidValueObject,
242 InvalidValueObjectValue,
243 InvalidVersionValue,
244 InvalidVocabMapping,
245 IriConfusedWithPrefix,
246 KeyExpansionFailed,
247 KeywordRedefinition,
248 ListOfLists,
249 LoadingDocumentFailed,
250 LoadingRemoteContextFailed,
251 MultipleContextLinkHeaders,
252 ProcessingModeConflict,
253 ProtectedTermRedefinition,
254 RecursiveContextInclusion,
255 };
256
257 match self {
258 CollidingKeywords => "colliding keywords",
259 ConflictingIndexes => "conflicting indexes",
260 ContextOverflow => "context overflow",
261 CyclicIriMapping => "cyclic IRI mapping",
262 InvalidIdValue => "invalid @id value",
263 InvalidImportValue => "invalid @import value",
264 InvalidIncludedValue => "invalid @included value",
265 InvalidIndexValue => "invalid @index value",
266 InvalidNestValue => "invalid @nest value",
267 InvalidPrefixValue => "invalid @prefix value",
268 InvalidPropagateValue => "invalid @propagate value",
269 InvalidProtectedValue => "invalid @protected value",
270 InvalidReverseValue => "invalid @reverse value",
271 InvalidVersionValue => "invalid @version value",
272 InvalidBaseDirection => "invalid base direction",
273 InvalidBaseIri => "invalid base IRI",
274 InvalidContainerMapping => "invalid container mapping",
275 InvalidContextEntry => "invalid context entry",
276 InvalidContextNullification => "invalid context nullification",
277 InvalidDefaultLanguage => "invalid default language",
278 InvalidIriMapping => "invalid IRI mapping",
279 InvalidJsonLiteral => "invalid JSON literal",
280 InvalidKeywordAlias => "invalid keyword alias",
281 InvalidLanguageMapValue => "invalid language map value",
282 InvalidLanguageMapping => "invalid language mapping",
283 InvalidLanguageTaggedString => "invalid language-tagged string",
284 InvalidLanguageTaggedValue => "invalid language-tagged value",
285 InvalidLocalContext => "invalid local context",
286 InvalidRemoteContext => "invalid remote context",
287 InvalidReverseProperty => "invalid reverse property",
288 InvalidReversePropertyMap => "invalid reverse property map",
289 InvalidReversePropertyValue => "invalid reverse property value",
290 InvalidScopedContext => "invalid scoped context",
291 InvalidScriptElement => "invalid script element",
292 InvalidSetOrListObject => "invalid set or list object",
293 InvalidTermDefinition => "invalid term definition",
294 InvalidTypeMapping => "invalid type mapping",
295 InvalidTypeValue => "invalid type value",
296 InvalidTypedValue => "invalid typed value",
297 InvalidValueObject => "invalid value object",
298 InvalidValueObjectValue => "invalid value object value",
299 InvalidVocabMapping => "invalid vocab mapping",
300 IriConfusedWithPrefix => "IRI confused with prefix",
301 KeyExpansionFailed => "key expansion failed",
302 KeywordRedefinition => "keyword redefinition",
303 LoadingDocumentFailed => "loading document failed",
304 LoadingRemoteContextFailed => "loading remote context failed",
305 MultipleContextLinkHeaders => "multiple context link headers",
306 ProcessingModeConflict => "processing mode conflict",
307 ProtectedTermRedefinition => "protected term redefinition",
308 RecursiveContextInclusion => "recursive context inclusion",
309 ListOfLists => "list of lists",
310 DuplicateKey => "duplicate key",
311 }
312 }
313}
314
315impl<'a> TryFrom<&'a str> for ErrorCode {
316 type Error = ();
317
318 fn try_from(name: &'a str) -> Result<ErrorCode, ()> {
319 use ErrorCode::{
320 CollidingKeywords,
321 ConflictingIndexes,
322 ContextOverflow,
323 CyclicIriMapping,
324 DuplicateKey,
325 InvalidBaseDirection,
326 InvalidBaseIri,
327 InvalidContainerMapping,
328 InvalidContextEntry,
329 InvalidContextNullification,
330 InvalidDefaultLanguage,
331 InvalidIdValue,
332 InvalidImportValue,
333 InvalidIncludedValue,
334 InvalidIndexValue,
335 InvalidIriMapping,
336 InvalidJsonLiteral,
337 InvalidKeywordAlias,
338 InvalidLanguageMapValue,
339 InvalidLanguageMapping,
340 InvalidLanguageTaggedString,
341 InvalidLanguageTaggedValue,
342 InvalidLocalContext,
343 InvalidNestValue,
344 InvalidPrefixValue,
345 InvalidPropagateValue,
346 InvalidProtectedValue,
347 InvalidRemoteContext,
348 InvalidReverseProperty,
349 InvalidReversePropertyMap,
350 InvalidReversePropertyValue,
351 InvalidReverseValue,
352 InvalidScopedContext,
353 InvalidScriptElement,
354 InvalidSetOrListObject,
355 InvalidTermDefinition,
356 InvalidTypeMapping,
357 InvalidTypeValue,
358 InvalidTypedValue,
359 InvalidValueObject,
360 InvalidValueObjectValue,
361 InvalidVersionValue,
362 InvalidVocabMapping,
363 IriConfusedWithPrefix,
364 KeyExpansionFailed,
365 KeywordRedefinition,
366 ListOfLists,
367 LoadingDocumentFailed,
368 LoadingRemoteContextFailed,
369 MultipleContextLinkHeaders,
370 ProcessingModeConflict,
371 ProtectedTermRedefinition,
372 RecursiveContextInclusion,
373 };
374 match name {
375 "colliding keywords" => Ok(CollidingKeywords),
376 "conflicting indexes" => Ok(ConflictingIndexes),
377 "context overflow" => Ok(ContextOverflow),
378 "cyclic IRI mapping" => Ok(CyclicIriMapping),
379 "invalid @id value" => Ok(InvalidIdValue),
380 "invalid @import value" => Ok(InvalidImportValue),
381 "invalid @included value" => Ok(InvalidIncludedValue),
382 "invalid @index value" => Ok(InvalidIndexValue),
383 "invalid @nest value" => Ok(InvalidNestValue),
384 "invalid @prefix value" => Ok(InvalidPrefixValue),
385 "invalid @propagate value" => Ok(InvalidPropagateValue),
386 "invalid @protected value" => Ok(InvalidProtectedValue),
387 "invalid @reverse value" => Ok(InvalidReverseValue),
388 "invalid @version value" => Ok(InvalidVersionValue),
389 "invalid base direction" => Ok(InvalidBaseDirection),
390 "invalid base IRI" => Ok(InvalidBaseIri),
391 "invalid container mapping" => Ok(InvalidContainerMapping),
392 "invalid context entry" => Ok(InvalidContextEntry),
393 "invalid context nullification" => Ok(InvalidContextNullification),
394 "invalid default language" => Ok(InvalidDefaultLanguage),
395 "invalid IRI mapping" => Ok(InvalidIriMapping),
396 "invalid JSON literal" => Ok(InvalidJsonLiteral),
397 "invalid keyword alias" => Ok(InvalidKeywordAlias),
398 "invalid language map value" => Ok(InvalidLanguageMapValue),
399 "invalid language mapping" => Ok(InvalidLanguageMapping),
400 "invalid language-tagged string" => Ok(InvalidLanguageTaggedString),
401 "invalid language-tagged value" => Ok(InvalidLanguageTaggedValue),
402 "invalid local context" => Ok(InvalidLocalContext),
403 "invalid remote context" => Ok(InvalidRemoteContext),
404 "invalid reverse property" => Ok(InvalidReverseProperty),
405 "invalid reverse property map" => Ok(InvalidReversePropertyMap),
406 "invalid reverse property value" => Ok(InvalidReversePropertyValue),
407 "invalid scoped context" => Ok(InvalidScopedContext),
408 "invalid script element" => Ok(InvalidScriptElement),
409 "invalid set or list object" => Ok(InvalidSetOrListObject),
410 "invalid term definition" => Ok(InvalidTermDefinition),
411 "invalid type mapping" => Ok(InvalidTypeMapping),
412 "invalid type value" => Ok(InvalidTypeValue),
413 "invalid typed value" => Ok(InvalidTypedValue),
414 "invalid value object" => Ok(InvalidValueObject),
415 "invalid value object value" => Ok(InvalidValueObjectValue),
416 "invalid vocab mapping" => Ok(InvalidVocabMapping),
417 "IRI confused with prefix" => Ok(IriConfusedWithPrefix),
418 "key expansion failed" => Ok(KeyExpansionFailed),
419 "keyword redefinition" => Ok(KeywordRedefinition),
420 "loading document failed" => Ok(LoadingDocumentFailed),
421 "loading remote context failed" => Ok(LoadingRemoteContextFailed),
422 "multiple context link headers" => Ok(MultipleContextLinkHeaders),
423 "processing mode conflict" => Ok(ProcessingModeConflict),
424 "protected term redefinition" => Ok(ProtectedTermRedefinition),
425 "recursive context inclusion" => Ok(RecursiveContextInclusion),
426 "list of lists" => Ok(ListOfLists),
427 "duplicate key" => Ok(DuplicateKey),
428 _ => Err(()),
429 }
430 }
431}
432
433impl fmt::Display for ErrorCode {
434 #[inline(always)]
435 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
436 write!(f, "{}", self.as_str())
437 }
438}