MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / parse_one_matcher

Method parse_one_matcher

nodedb/src/control/promql/parser.rs:272–295  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

270 }
271
272 fn parse_one_matcher(&mut self) -> Result<LabelMatcher, PromqlError> {
273 let Token::Ident(name) = self.advance().clone() else {
274 return Err(PromqlError::LabelMatcher {
275 detail: "expected label name".to_string(),
276 });
277 };
278 let op = match self.advance() {
279 Token::Assign => LabelMatchOp::Equal,
280 Token::Neq => LabelMatchOp::NotEqual,
281 Token::MatchRegex => LabelMatchOp::RegexMatch,
282 Token::NotMatchRegex => LabelMatchOp::RegexNotMatch,
283 t => {
284 return Err(PromqlError::LabelMatcher {
285 detail: format!("expected match operator, got {t:?}"),
286 });
287 }
288 };
289 let Token::String(value) = self.advance().clone() else {
290 return Err(PromqlError::LabelMatcher {
291 detail: "expected string value in label matcher".to_string(),
292 });
293 };
294 Ok(LabelMatcher::new(name, op, value))
295 }
296
297 fn parse_duration(&mut self) -> Result<Duration, PromqlError> {
298 match self.advance().clone() {

Callers 1

parse_label_matchersMethod · 0.80

Calls 3

to_stringMethod · 0.80
cloneMethod · 0.45
advanceMethod · 0.45

Tested by

no test coverage detected