no ns for keyword

main
Ziyang Hu 2 years ago
parent 1dafb53f7f
commit 46c7a6a6ac

@ -83,7 +83,7 @@ impl TryFrom<&'_ JsonValue> for Attribute {
.ok_or_else(|| JsonError::MissingField(value.clone(), "keyword".to_string()))?; .ok_or_else(|| JsonError::MissingField(value.clone(), "keyword".to_string()))?;
let keyword = Keyword::try_from(keyword)?; let keyword = Keyword::try_from(keyword)?;
if keyword.is_reserved() { if keyword.is_reserved() {
return Err(KeywordError::ReservedKeyword(keyword.clone()).into()); return Err(KeywordError::ReservedKeyword(keyword).into());
} }
let cardinality = map let cardinality = map
.get("cardinality") .get("cardinality")

@ -49,9 +49,21 @@ impl TryFrom<&[u8]> for Keyword {
impl Keyword { impl Keyword {
pub(crate) fn is_reserved(&self) -> bool { pub(crate) fn is_reserved(&self) -> bool {
self.0.starts_with('_') self.0.is_empty() || self.0.starts_with(['_', ':'])
} }
pub(crate) fn to_string_no_prefix(&self) -> String { pub(crate) fn to_string_no_prefix(&self) -> String {
format!("{}", self.0) format!("{}", self.0)
} }
} }
#[cfg(test)]
mod tests {
use crate::data::keyword::Keyword;
#[test]
fn reserved_kw() {
assert!(Keyword("_a".into()).is_reserved());
assert!(Keyword(":a".into()).is_reserved());
assert!(Keyword("".into()).is_reserved());
}
}

Loading…
Cancel
Save