validator: code tweaks
This commit is contained in:
parent
eff9097456
commit
aa513a7973
@ -193,11 +193,21 @@ impl<'a,Str:std::fmt::Display> std::fmt::Display for StringCheckContext<'a,Str>{
|
||||
// check if a string is empty
|
||||
pub struct StringEmpty;
|
||||
pub struct StringEmptyCheck<Context>(Result<Context,StringEmpty>);
|
||||
impl<Context> StringEmptyCheck<Context>{
|
||||
fn map<T>(self,f:impl Fn(Context)->T)->StringEmptyCheck<T>{
|
||||
StringEmptyCheck(self.0.map(f))
|
||||
}
|
||||
}
|
||||
impl std::fmt::Display for StringEmpty{
|
||||
fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{
|
||||
write!(f,"Empty string")
|
||||
}
|
||||
}
|
||||
impl<'a> StringEmptyCheck<&'a str>{
|
||||
fn new(value:&'a str)->StringEmptyCheck<&'a str>{
|
||||
StringEmptyCheck(value.is_empty().then_some(value).ok_or(StringEmpty))
|
||||
}
|
||||
}
|
||||
|
||||
// check for duplicate objects
|
||||
pub struct DuplicateCheckContext<ID>(HashMap<ID,u64>);
|
||||
@ -302,24 +312,14 @@ impl<'a> ModelInfo<'a>{
|
||||
|
||||
// check display name
|
||||
let display_name=self.map_info.display_name.map(|display_name|{
|
||||
if display_name.is_empty(){
|
||||
StringEmptyCheck(Err(StringEmpty))
|
||||
}else{
|
||||
StringEmptyCheck(Ok(StringCheckContext{
|
||||
observed:display_name,
|
||||
expected:display_name.to_title_case(),
|
||||
}.check(display_name)))
|
||||
}
|
||||
StringEmptyCheck::new(display_name).map(|display_name|StringCheckContext{
|
||||
observed:display_name,
|
||||
expected:display_name.to_title_case(),
|
||||
}.check(display_name))
|
||||
});
|
||||
|
||||
// check Creator
|
||||
let creator=self.map_info.creator.map(|creator|{
|
||||
if creator.is_empty(){
|
||||
StringEmptyCheck(Err(StringEmpty))
|
||||
}else{
|
||||
StringEmptyCheck(Ok(creator))
|
||||
}
|
||||
});
|
||||
let creator=self.map_info.creator.map(StringEmptyCheck::new);
|
||||
|
||||
// check GameID
|
||||
let game_id=self.map_info.game_id;
|
||||
|
Loading…
x
Reference in New Issue
Block a user