- Converted from std::string to A.
This commit is contained in:
Paul Beckingham
2014-10-15 01:24:02 -04:00
parent 854dc08615
commit 6388d3827b
2 changed files with 37 additions and 25 deletions

View File

@@ -129,10 +129,10 @@ void A::attribute (const std::string& name, const double value)
////////////////////////////////////////////////////////////////////////////////
// Accessor for attributes.
const std::string A::attribute (const std::string& name)
const std::string A::attribute (const std::string& name) const
{
// Prevent autovivification.
std::map<std::string, std::string>::iterator i = _attributes.find (name);
std::map<std::string, std::string>::const_iterator i = _attributes.find (name);
if (i != _attributes.end ())
return i->second;
@@ -289,13 +289,13 @@ const std::string CLI::getFilter ()
{
filter = "(";
std::vector <std::string>::const_iterator i;
std::vector <A>::const_iterator i;
for (i = _filter.begin (); i != _filter.end (); ++i)
{
if (i != _filter.begin ())
filter += ' ';
filter += *i;
filter += i->attribute ("raw");
}
filter += ')';
@@ -402,11 +402,15 @@ void CLI::categorize ()
}
else if (foundCommand && ! _readOnly)
{
_modifications.push_back (raw);
A a ("argMod", raw);
a.tag ("MODIFICATION");
_modifications.push_back (a);
}
else
{
_filter.push_back (raw);
A a ("argFilt", raw);
a.tag ("FILTER");
_filter.push_back (a);
}
}
}
@@ -476,12 +480,11 @@ bool CLI::canonicalize (
// -tag --> tags _notag_ tag
void CLI::unsweetenTags ()
{
std::vector <std::string> reconstructed;
std::vector <std::string>::iterator i;
std::vector <A> reconstructed;
std::vector <A>::iterator i;
for (i = _filter.begin (); i != _filter.end (); ++i)
{
Nibbler n (*i);
Nibbler n (i->attribute ("raw"));
std::string tag;
std::string sign;
@@ -490,9 +493,17 @@ void CLI::unsweetenTags ()
n.getUntilEOS (tag) &&
tag.find (' ') == std::string::npos)
{
reconstructed.push_back ("tags");
reconstructed.push_back (sign == "+" ? "_hastag_" : "_notag_");
reconstructed.push_back (tag);
A left ("argTag", "tags");
left.tag ("ATT");
reconstructed.push_back (left);
A op ("argTag", sign == "+" ? "_hastag_" : "_notag_");
op.tag ("OP");
reconstructed.push_back (op);
A right ("argTag", tag);
right.tag ("LITERAL");
reconstructed.push_back (right);
}
else
reconstructed.push_back (*i);
@@ -529,20 +540,21 @@ void CLI::dump (const std::string& label) const
for (m = _overrides.begin (); m != _overrides.end (); ++m)
std::cout << " _overrides " << m->first << " --> " << m->second << "\n";
std::cout << " _filter ";
Color colorFilter ("gray20 on gray8");
for (i = _filter.begin (); i != _filter.end (); ++i)
if (_filter.size ())
{
if (i != _filter.begin ())
std::cout << ' ';
std::cout << colorFilter.colorize (*i);
std::cout << " _filter\n";
for (a = _filter.begin (); a != _filter.end (); ++a)
std::cout << " " << a->dump () << "\n";
}
std::cout << "\n";
std::cout << " _command " << _command << " " << (_readOnly ? "(read)" : "(write)") << "\n";
for (i = _modifications.begin (); i != _modifications.end (); ++i)
std::cout << " _modifications " << *i << "\n";
if (_modifications.size ())
{
std::cout << " _modifications\n";
for (a = _modifications.begin (); a != _modifications.end (); ++a)
std::cout << " " << a->dump () << "\n";
}
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -44,7 +44,7 @@ public:
void attribute (const std::string&, const std::string&);
void attribute (const std::string&, const int);
void attribute (const std::string&, const double);
const std::string attribute (const std::string&);
const std::string attribute (const std::string&) const;
void removeAttribute (const std::string&);
const std::string dump () const;
@@ -87,8 +87,8 @@ public:
std::map <std::string, std::string> _overrides;
std::string _command;
bool _readOnly;
std::vector <std::string> _filter;
std::vector <std::string> _modifications;
std::vector <A> _filter;
std::vector <A> _modifications;
};
#endif