use std::convert::TryFrom;
use std::fmt;
#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Debug)]
pub enum ErrorCode {
CollidingKeywords,
ConflictingIndexes,
ContextOverflow,
CyclicIriMapping,
InvalidIdValue,
InvalidImportValue,
InvalidIncludedValue,
InvalidIndexValue,
InvalidNestValue,
InvalidPrefixValue,
InvalidPropagateValue,
InvalidProtectedValue,
InvalidReverseValue,
InvalidVersionValue,
InvalidBaseDirection,
InvalidBaseIri,
InvalidContainerMapping,
InvalidContextEntry,
InvalidContextNullification,
InvalidDefaultLanguage,
InvalidIriMapping,
InvalidJsonLiteral,
InvalidKeywordAlias,
InvalidLanguageMapValue,
InvalidLanguageMapping,
InvalidLanguageTaggedString,
InvalidLanguageTaggedValue,
InvalidLocalContext,
InvalidRemoteContext,
InvalidReverseProperty,
InvalidReversePropertyMap,
InvalidReversePropertyValue,
InvalidScopedContext,
InvalidScriptElement,
InvalidSetOrListObject,
InvalidTermDefinition,
InvalidTypeMapping,
InvalidTypeValue,
InvalidTypedValue,
InvalidValueObject,
InvalidValueObjectValue,
InvalidVocabMapping,
IriConfusedWithPrefix,
KeyExpansionFailed,
KeywordRedefinition,
LoadingDocumentFailed,
LoadingRemoteContextFailed,
MultipleContextLinkHeaders,
ProcessingModeConflict,
ProtectedTermRedefinition,
DuplicateKey,
}
impl ErrorCode {
pub fn as_str(&self) -> &str {
use ErrorCode::*;
match self {
CollidingKeywords => "colliding keywords",
ConflictingIndexes => "conflicting indexes",
ContextOverflow => "context overflow",
CyclicIriMapping => "cyclic IRI mapping",
InvalidIdValue => "invalid @id value",
InvalidImportValue => "invalid @import value",
InvalidIncludedValue => "invalid @included value",
InvalidIndexValue => "invalid @index value",
InvalidNestValue => "invalid @nest value",
InvalidPrefixValue => "invalid @prefix value",
InvalidPropagateValue => "invalid @propagate value",
InvalidProtectedValue => "invalid @protected value",
InvalidReverseValue => "invalid @reverse value",
InvalidVersionValue => "invalid @version value",
InvalidBaseDirection => "invalid base direction",
InvalidBaseIri => "invalid base IRI",
InvalidContainerMapping => "invalid container mapping",
InvalidContextEntry => "invalid context entry",
InvalidContextNullification => "invalid context nullification",
InvalidDefaultLanguage => "invalid default language",
InvalidIriMapping => "invalid IRI mapping",
InvalidJsonLiteral => "invalid JSON literal",
InvalidKeywordAlias => "invalid keyword alias",
InvalidLanguageMapValue => "invalid language map value",
InvalidLanguageMapping => "invalid language mapping",
InvalidLanguageTaggedString => "invalid language-tagged string",
InvalidLanguageTaggedValue => "invalid language-tagged value",
InvalidLocalContext => "invalid local context",
InvalidRemoteContext => "invalid remote context",
InvalidReverseProperty => "invalid reverse property",
InvalidReversePropertyMap => "invalid reverse property map",
InvalidReversePropertyValue => "invalid reverse property value",
InvalidScopedContext => "invalid scoped context",
InvalidScriptElement => "invalid script element",
InvalidSetOrListObject => "invalid set or list object",
InvalidTermDefinition => "invalid term definition",
InvalidTypeMapping => "invalid type mapping",
InvalidTypeValue => "invalid type value",
InvalidTypedValue => "invalid typed value",
InvalidValueObject => "invalid value object",
InvalidValueObjectValue => "invalid value object value",
InvalidVocabMapping => "invalid vocab mapping",
IriConfusedWithPrefix => "IRI confused with prefix",
KeyExpansionFailed => "key expansion failed",
KeywordRedefinition => "keyword redefinition",
LoadingDocumentFailed => "loading document failed",
LoadingRemoteContextFailed => "loading remote context failed",
MultipleContextLinkHeaders => "multiple context link headers",
ProcessingModeConflict => "processing mode conflict",
ProtectedTermRedefinition => "protected term redefinition",
DuplicateKey => "duplicate key",
}
}
}
impl<'a> TryFrom<&'a str> for ErrorCode {
type Error = ();
fn try_from(name: &'a str) -> Result<ErrorCode, ()> {
use ErrorCode::*;
match name {
"colliding keywords" => Ok(CollidingKeywords),
"conflicting indexes" => Ok(ConflictingIndexes),
"context overflow" => Ok(ContextOverflow),
"cyclic IRI mapping" => Ok(CyclicIriMapping),
"invalid @id value" => Ok(InvalidIdValue),
"invalid @import value" => Ok(InvalidImportValue),
"invalid @included value" => Ok(InvalidIncludedValue),
"invalid @index value" => Ok(InvalidIndexValue),
"invalid @nest value" => Ok(InvalidNestValue),
"invalid @prefix value" => Ok(InvalidPrefixValue),
"invalid @propagate value" => Ok(InvalidPropagateValue),
"invalid @protected value" => Ok(InvalidProtectedValue),
"invalid @reverse value" => Ok(InvalidReverseValue),
"invalid @version value" => Ok(InvalidVersionValue),
"invalid base direction" => Ok(InvalidBaseDirection),
"invalid base IRI" => Ok(InvalidBaseIri),
"invalid container mapping" => Ok(InvalidContainerMapping),
"invalid context entry" => Ok(InvalidContextEntry),
"invalid context nullification" => Ok(InvalidContextNullification),
"invalid default language" => Ok(InvalidDefaultLanguage),
"invalid IRI mapping" => Ok(InvalidIriMapping),
"invalid JSON literal" => Ok(InvalidJsonLiteral),
"invalid keyword alias" => Ok(InvalidKeywordAlias),
"invalid language map value" => Ok(InvalidLanguageMapValue),
"invalid language mapping" => Ok(InvalidLanguageMapping),
"invalid language-tagged string" => Ok(InvalidLanguageTaggedString),
"invalid language-tagged value" => Ok(InvalidLanguageTaggedValue),
"invalid local context" => Ok(InvalidLocalContext),
"invalid remote context" => Ok(InvalidRemoteContext),
"invalid reverse property" => Ok(InvalidReverseProperty),
"invalid reverse property map" => Ok(InvalidReversePropertyMap),
"invalid reverse property value" => Ok(InvalidReversePropertyValue),
"invalid scoped context" => Ok(InvalidScopedContext),
"invalid script element" => Ok(InvalidScriptElement),
"invalid set or list object" => Ok(InvalidSetOrListObject),
"invalid term definition" => Ok(InvalidTermDefinition),
"invalid type mapping" => Ok(InvalidTypeMapping),
"invalid type value" => Ok(InvalidTypeValue),
"invalid typed value" => Ok(InvalidTypedValue),
"invalid value object" => Ok(InvalidValueObject),
"invalid value object value" => Ok(InvalidValueObjectValue),
"invalid vocab mapping" => Ok(InvalidVocabMapping),
"IRI confused with prefix" => Ok(IriConfusedWithPrefix),
"key expansion failed" => Ok(KeyExpansionFailed),
"keyword redefinition" => Ok(KeywordRedefinition),
"loading document failed" => Ok(LoadingDocumentFailed),
"loading remote context failed" => Ok(LoadingRemoteContextFailed),
"multiple context link headers" => Ok(MultipleContextLinkHeaders),
"processing mode conflict" => Ok(ProcessingModeConflict),
"protected term redefinition" => Ok(ProtectedTermRedefinition),
_ => Err(()),
}
}
}
impl fmt::Display for ErrorCode {
#[inline(always)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.as_str())
}
}