diff --git a/src/tracking/status/tps.rs b/src/tracking/status/tps.rs index b28583d..588c2fe 100644 --- a/src/tracking/status/tps.rs +++ b/src/tracking/status/tps.rs @@ -1,8 +1,9 @@ use nom::{ bytes::complete::tag, - combinator::{all_consuming, map, opt}, + character::complete::one_of, + combinator::{all_consuming, map, opt, value}, number::complete::double, - sequence::{preceded, tuple}, + sequence::{pair, preceded, tuple}, IResult, }; @@ -38,14 +39,14 @@ impl RconCommand for TpsCmd { } fn parse_tps_result(inp: &str) -> IResult<&str, Tps> { - let start = tag("§6TPS from last 1m, 5m, 15m: §a"); + let start = tag("§6TPS from last 1m, 5m, 15m: "); all_consuming(map( tuple(( start, tps_value, - tag(", §a"), + tag(", "), tps_value, - tag(", §a"), + tag(", "), tps_value, tag("\n"), )), @@ -54,5 +55,9 @@ fn parse_tps_result(inp: &str) -> IResult<&str, Tps> { } fn tps_value(inp: &str) -> IResult<&str, f64> { - preceded(opt(tag("*")), double)(inp) + preceded(pair(ignore_color, opt(tag("*"))), double)(inp) +} + +fn ignore_color(inp: &str) -> IResult<&str, ()> { + value((), opt(pair(tag("§"), one_of("0123456789abcdef"))))(inp) }