diff --git a/src/CLI.cpp b/src/CLI.cpp index 308f497da..59bbee1a1 100644 --- a/src/CLI.cpp +++ b/src/CLI.cpp @@ -287,6 +287,7 @@ void CLI::add (const std::string& arg) } //////////////////////////////////////////////////////////////////////////////// +// Extract all the FILTER-tagged items. const std::string CLI::getFilter () { // Remove all the syntactic sugar. @@ -295,28 +296,28 @@ const std::string CLI::getFilter () // TODO all the other types: att, attmod, pattern, id, uuid ... std::string filter = ""; - -// TODO Convert to _args. -/* - if (_filter.size ()) + if (_args.size ()) { - filter = "("; - - std::vector ::const_iterator i; - for (i = _filter.begin (); i != _filter.end (); ++i) + std::vector ::const_iterator a; + for (a = _args.begin (); a != _args.end (); ++a) { - if (i != _filter.begin ()) - filter += ' '; + if (a->hasTag ("FILTER") && + ! a->hasTag ("PSEUDO")) + { + if (filter != "") + filter += ' '; - filter += i->attribute ("raw"); + std::string term = a->attribute ("canonical"); + if (term == "") + term = a->attribute ("raw"); + + filter += term; + } } - - filter += ')'; } -*/ dump ("CLI::getFilter"); - return filter; + return "(" + filter + ")"; } ////////////////////////////////////////////////////////////////////////////////