Merge pull request 'fix regex capture groups' (#167) from pr2 into staging

Reviewed-on: StrafesNET/maps-service#167
This commit is contained in:
2025-06-07 03:58:16 +00:00

View File

@@ -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)
} }