mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-31 01:24:35 +02:00
enh(generic-snmp): Average added to the parser
This commit is contained in:
parent
7d7fe2094f
commit
19a0a89634
@ -14,9 +14,22 @@ pub Product: f32 = {
|
||||
<t:Term> => t,
|
||||
};
|
||||
|
||||
pub Args = Comma<Sum>; // (0)
|
||||
|
||||
Comma<T>: Vec<f32> = { // (1)
|
||||
<mut v:(<T> ",")*> <e:T?> => match e { // (2)
|
||||
None => v,
|
||||
Some(e) => {
|
||||
v.push(e);
|
||||
v
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
pub Term: f32 = {
|
||||
<n:Num> => n,
|
||||
"(" <t:Sum> ")" => t,
|
||||
"Average" "(" <a:Args> ")" => { let sum:f32 = a.iter().sum(); sum / a.len() as f32 }
|
||||
};
|
||||
|
||||
Num: f32 = <s:r"-?[0-9.]+"> => f32::from_str(s).unwrap();
|
||||
|
@ -136,4 +136,15 @@ mod Test {
|
||||
assert!(res.is_ok());
|
||||
assert!(res.unwrap() == 4_f32);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn function() {
|
||||
let res = grammar::TermParser::new().parse("Average(1, 2, 3)");
|
||||
assert!(res.is_ok());
|
||||
assert!(res.unwrap() == 2_f32);
|
||||
|
||||
let res = grammar::TermParser::new().parse("Average(1 + 2 * 2, 3, 4)");
|
||||
assert!(res.is_ok());
|
||||
assert!(res.unwrap() == 4_f32);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user