///////////////////////////////////////////////////////////////////////////
| 1395 | |
| 1396 | //////////////////////////////////////////////////////////////////////////////// |
| 1397 | void CLI2::findUUIDs() { |
| 1398 | bool changes = false; |
| 1399 | |
| 1400 | if (Context::getContext().config.getBoolean("sugar")) { |
| 1401 | for (const auto& a : _args) { |
| 1402 | if (a._lextype == Lexer::Type::uuid && a.hasTag("FILTER")) { |
| 1403 | changes = true; |
| 1404 | _uuid_list.push_back(a.attribute("raw")); |
| 1405 | } |
| 1406 | } |
| 1407 | |
| 1408 | if (!_uuid_list.size()) { |
| 1409 | for (auto& a : _args) { |
| 1410 | if (a._lextype == Lexer::Type::uuid && a.hasTag("MODIFICATION")) { |
| 1411 | changes = true; |
| 1412 | a.unTag("MODIFICATION"); |
| 1413 | a.tag("FILTER"); |
| 1414 | _uuid_list.push_back(a.attribute("raw")); |
| 1415 | } |
| 1416 | } |
| 1417 | } |
| 1418 | } |
| 1419 | |
| 1420 | // Sugar-free. |
| 1421 | else { |
| 1422 | std::vector<A2> reconstructed; |
| 1423 | for (const auto& a : _args) { |
| 1424 | if (a.hasTag("FILTER") && a._lextype == Lexer::Type::uuid) { |
| 1425 | changes = true; |
| 1426 | A2 pair("uuid:" + a.attribute("raw"), Lexer::Type::pair); |
| 1427 | pair.tag("FILTER"); |
| 1428 | pair.decompose(); |
| 1429 | reconstructed.push_back(pair); |
| 1430 | } else |
| 1431 | reconstructed.push_back(a); |
| 1432 | } |
| 1433 | |
| 1434 | if (changes) _args = reconstructed; |
| 1435 | } |
| 1436 | |
| 1437 | if (changes) |
| 1438 | if (Context::getContext().config.getInteger("debug.parser") >= 2) |
| 1439 | Context::getContext().debug(dump("CLI2::prepareFilter findUUIDs")); |
| 1440 | } |
| 1441 | |
| 1442 | //////////////////////////////////////////////////////////////////////////////// |
| 1443 | void CLI2::insertIDExpr() { |