MCPcopy Create free account
hub / github.com/apache/trafficserver / parse_unquoted_expr

Method parse_unquoted_expr

plugins/experimental/txn_box/plugin/src/Config.cc:260–304  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

258}
259
260Rv<Expr>
261Config::parse_unquoted_expr(swoc::TextView const &text)
262{
263 // Integer?
264 TextView parsed;
265 auto n = swoc::svtoi(text, &parsed);
266 if (parsed.size() == text.size()) {
267 return Expr{Feature{n}};
268 }
269
270 // bool?
271 auto b = BoolNames[text];
272 if (b != BoolTag::INVALID) {
273 return Expr{Feature{b == BoolTag::True}};
274 }
275
276 // float?
277 double f = swoc::svtod(text, &parsed);
278 if (parsed.size() == text.size()) {
279 return Expr{Feature{f}};
280 }
281
282 // IP Address?
283 swoc::IPAddr addr;
284 if (addr.load(text)) {
285 return Expr{Feature{addr}};
286 }
287
288 // Presume an extractor.
289 Extractor::Spec spec;
290 bool valid_p = spec.parse(text);
291 if (!valid_p) {
292 return Errata(S_ERROR, R"(Invalid syntax for extractor "{}" - not a valid specifier.)", text);
293 }
294 auto &&[vt, errata] = this->validate(spec);
295 if (!errata.is_ok()) {
296 return std::move(errata);
297 }
298
299 if (vt.is_cfg_const()) {
300 return Expr{spec._exf->extract(*this, spec)};
301 }
302
303 return Expr{spec, vt};
304}
305
306Rv<Expr>
307Config::parse_composite_expr(TextView const &text)

Callers 1

parse_scalar_exprMethod · 0.95

Calls 10

validateMethod · 0.95
svtoiFunction · 0.85
svtodFunction · 0.85
ErrataClass · 0.85
is_cfg_constMethod · 0.80
sizeMethod · 0.45
loadMethod · 0.45
parseMethod · 0.45
is_okMethod · 0.45
extractMethod · 0.45

Tested by

no test coverage detected