forked from StrafesNET/maps-service
Merge pull request 'fix regex capture groups' (#167) from pr2 into staging
Reviewed-on: StrafesNET/maps-service#167
This commit is contained in:
@@ -73,26 +73,26 @@ impl std::str::FromStr for ModeElement{
|
|||||||
"BonusFinish"=>Ok(Self{zone:Zone::Finish,mode_id:ModeID::BONUS}),
|
"BonusFinish"=>Ok(Self{zone:Zone::Finish,mode_id:ModeID::BONUS}),
|
||||||
"BonusAnticheat"=>Ok(Self{zone:Zone::Anticheat,mode_id:ModeID::BONUS}),
|
"BonusAnticheat"=>Ok(Self{zone:Zone::Anticheat,mode_id:ModeID::BONUS}),
|
||||||
other=>{
|
other=>{
|
||||||
let bonus_start_pattern=lazy_regex::lazy_regex!(r"^Bonus(\d+)Start$|^BonusStart(\d+)$");
|
let everything_pattern=lazy_regex::lazy_regex!(r"^Bonus(\d+)Start$|^BonusStart(\d+)$|^Bonus(\d+)Finish$|^BonusFinish(\d+)$|^Bonus(\d+)Anticheat$|^BonusAnticheat(\d+)$");
|
||||||
if let Some(captures)=bonus_start_pattern.captures(other){
|
if let Some(captures)=everything_pattern.captures(other){
|
||||||
return Ok(Self{
|
if let Some(mode_id)=captures.get(1).or(captures.get(2)){
|
||||||
zone:Zone::Start,
|
return Ok(Self{
|
||||||
mode_id:ModeID(captures[1].parse().map_err(IDParseError::ParseInt)?),
|
zone:Zone::Start,
|
||||||
});
|
mode_id:ModeID(mode_id.as_str().parse().map_err(IDParseError::ParseInt)?),
|
||||||
}
|
});
|
||||||
let bonus_finish_pattern=lazy_regex::lazy_regex!(r"^Bonus(\d+)Finish$|^BonusFinish(\d+)$");
|
}
|
||||||
if let Some(captures)=bonus_finish_pattern.captures(other){
|
if let Some(mode_id)=captures.get(3).or(captures.get(4)){
|
||||||
return Ok(Self{
|
return Ok(Self{
|
||||||
zone:Zone::Finish,
|
zone:Zone::Finish,
|
||||||
mode_id:ModeID(captures[1].parse().map_err(IDParseError::ParseInt)?),
|
mode_id:ModeID(mode_id.as_str().parse().map_err(IDParseError::ParseInt)?),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
let bonus_finish_pattern=lazy_regex::lazy_regex!(r"^Bonus(\d+)Anticheat$|^BonusAnticheat(\d+)$");
|
if let Some(mode_id)=captures.get(5).or(captures.get(6)){
|
||||||
if let Some(captures)=bonus_finish_pattern.captures(other){
|
return Ok(Self{
|
||||||
return Ok(Self{
|
zone:Zone::Anticheat,
|
||||||
zone:Zone::Anticheat,
|
mode_id:ModeID(mode_id.as_str().parse().map_err(IDParseError::ParseInt)?),
|
||||||
mode_id:ModeID(captures[1].parse().map_err(IDParseError::ParseInt)?),
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
Err(IDParseError::NoCaptures)
|
Err(IDParseError::NoCaptures)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user