Use different types for ExpectedString errors
This commit is contained in:
parent
7ad91ac481
commit
c442ff1882
1 changed files with 11 additions and 3 deletions
|
@ -210,8 +210,14 @@ pub enum EntityError {
|
||||||
FloatParse,
|
FloatParse,
|
||||||
/// A string was expected but not found
|
/// A string was expected but not found
|
||||||
ExpectedString,
|
ExpectedString,
|
||||||
|
/// Expected string repersenting number
|
||||||
|
ExpectedNumberString,
|
||||||
|
/// Expected string repersenting URI
|
||||||
|
ExpectedUriString,
|
||||||
/// A valid Qid URI was expected but not found
|
/// A valid Qid URI was expected but not found
|
||||||
ExpectedQidString,
|
ExpectedQidString,
|
||||||
|
/// Expected a string because the datatype is string
|
||||||
|
ExpectedStringDatatype,
|
||||||
/// A time string was empty
|
/// A time string was empty
|
||||||
TimeEmpty,
|
TimeEmpty,
|
||||||
/// An ID was invalid
|
/// An ID was invalid
|
||||||
|
@ -249,7 +255,7 @@ fn parse_wb_number(num: &json::JsonValue) -> Result<f64, EntityError> {
|
||||||
if num.is_number() {
|
if num.is_number() {
|
||||||
Ok(num.as_number().ok_or(EntityError::FloatParse)?.into())
|
Ok(num.as_number().ok_or(EntityError::FloatParse)?.into())
|
||||||
} else {
|
} else {
|
||||||
let s = num.as_str().ok_or(EntityError::ExpectedString)?;
|
let s = num.as_str().ok_or(EntityError::ExpectedNumberString)?;
|
||||||
match s.parse() {
|
match s.parse() {
|
||||||
Ok(x) => Ok(x),
|
Ok(x) => Ok(x),
|
||||||
Err(_) => Err(EntityError::FloatParse),
|
Err(_) => Err(EntityError::FloatParse),
|
||||||
|
@ -260,7 +266,7 @@ fn parse_wb_number(num: &json::JsonValue) -> Result<f64, EntityError> {
|
||||||
fn try_get_as_qid(datavalue: &json::JsonValue) -> Result<Qid, EntityError> {
|
fn try_get_as_qid(datavalue: &json::JsonValue) -> Result<Qid, EntityError> {
|
||||||
match datavalue
|
match datavalue
|
||||||
.as_str()
|
.as_str()
|
||||||
.ok_or(EntityError::ExpectedString)?
|
.ok_or(EntityError::ExpectedUriString)?
|
||||||
.split("http://www.wikidata.org/entity/Q")
|
.split("http://www.wikidata.org/entity/Q")
|
||||||
.nth(1)
|
.nth(1)
|
||||||
.ok_or(EntityError::ExpectedQidString)?
|
.ok_or(EntityError::ExpectedQidString)?
|
||||||
|
@ -359,7 +365,9 @@ impl ClaimValueData {
|
||||||
let mut value = take_prop("value", &mut datavalue);
|
let mut value = take_prop("value", &mut datavalue);
|
||||||
match &type_str[..] {
|
match &type_str[..] {
|
||||||
"string" => {
|
"string" => {
|
||||||
let s = value.take_string().ok_or(EntityError::ExpectedString)?;
|
let s = value
|
||||||
|
.take_string()
|
||||||
|
.ok_or(EntityError::ExpectedStringDatatype)?;
|
||||||
match datatype {
|
match datatype {
|
||||||
"string" => Ok(ClaimValueData::String(s)),
|
"string" => Ok(ClaimValueData::String(s)),
|
||||||
"commonsMedia" => Ok(ClaimValueData::CommonsMedia(s)),
|
"commonsMedia" => Ok(ClaimValueData::CommonsMedia(s)),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue