Simplify wiki id parsing
This commit is contained in:
parent
b94d358423
commit
258a4b2a94
1 changed files with 2 additions and 17 deletions
|
@ -1,6 +1,6 @@
|
||||||
use std::{collections::BTreeMap, str::FromStr};
|
use std::{collections::BTreeMap, str::FromStr};
|
||||||
|
|
||||||
use crate::ids::{consts, Fid, IdParseError, Lid, Pid, Qid, Sid, WikiId};
|
use crate::ids::{consts, Fid, Lid, Pid, Qid, Sid, WikiId};
|
||||||
use crate::text::{Lang, Text};
|
use crate::text::{Lang, Text};
|
||||||
use chrono::{DateTime, TimeZone, Utc};
|
use chrono::{DateTime, TimeZone, Utc};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
@ -252,7 +252,7 @@ impl Entity {
|
||||||
.as_str()
|
.as_str()
|
||||||
.ok_or(EntityError::ExpectedKeyvalTextString)?;
|
.ok_or(EntityError::ExpectedKeyvalTextString)?;
|
||||||
|
|
||||||
let id: WikiId = match get_wiki_id(raw_id) {
|
let id: WikiId = match WikiId::from_str(raw_id) {
|
||||||
Ok(id) => id,
|
Ok(id) => id,
|
||||||
_ => return Err(EntityError::NoId),
|
_ => return Err(EntityError::NoId),
|
||||||
};
|
};
|
||||||
|
@ -441,16 +441,6 @@ impl Entity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_wiki_id(id: &str) -> Result<WikiId, IdParseError> {
|
|
||||||
let uid: WikiId = match &id[0..1] {
|
|
||||||
"Q" => WikiId::EntityId(Qid::from_str(id).unwrap()),
|
|
||||||
"P" => WikiId::PropertyId(Pid::from_str(id).unwrap()),
|
|
||||||
"L" => WikiId::LexemeId(Lid::from_str(id).unwrap()),
|
|
||||||
_ => return Err(IdParseError::InvalidPrefix),
|
|
||||||
};
|
|
||||||
Ok(uid)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// An error related to entity parsing/creation.
|
/// An error related to entity parsing/creation.
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
|
@ -882,11 +872,6 @@ mod test {
|
||||||
assert_eq!(qid, Ok(Qid(1234567)));
|
assert_eq!(qid, Ok(Qid(1234567)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn get_wiki_id_test() {
|
|
||||||
assert_eq!(get_wiki_id("Q42").unwrap(), WikiId::EntityId(Qid(42)));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn number_parsing() {
|
fn number_parsing() {
|
||||||
assert_eq!(parse_wb_number(&serde_json::json!("+5")), Ok(5.));
|
assert_eq!(parse_wb_number(&serde_json::json!("+5")), Ok(5.));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue