mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
A3t::find*Override
- Locates and parses rc:<file>. - Locates and parses rc.<name>=<value>. - Adds a stubbed validate method to check for a sane tree.
This commit is contained in:
parent
ac1497ff1a
commit
96a06eafbf
3 changed files with 68 additions and 3 deletions
|
@ -58,6 +58,8 @@ Tree* A3t::parse ()
|
|||
findBinary ();
|
||||
findTerminator ();
|
||||
findCommand ();
|
||||
findFileOverride ();
|
||||
findConfigOverride ();
|
||||
|
||||
return _tree;
|
||||
}
|
||||
|
@ -112,7 +114,12 @@ void A3t::findBinary ()
|
|||
if (slash != std::string::npos)
|
||||
binary = binary.substr (slash + 1);
|
||||
|
||||
_tree->_branches[0]->attribute ("basename", "binary");
|
||||
_tree->_branches[0]->attribute ("basename", binary);
|
||||
|
||||
if (binary == "cal" || binary == "calendar")
|
||||
_tree->_branches[0]->tag ("CALENDAR");
|
||||
else
|
||||
_tree->_branches[0]->tag ("TW");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -176,3 +183,58 @@ void A3t::findCommand ()
|
|||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void A3t::findFileOverride ()
|
||||
{
|
||||
std::vector <Tree*>::iterator i;
|
||||
for (i = _tree->_branches.begin (); i != _tree->_branches.end (); ++i)
|
||||
{
|
||||
// Parser override operator.
|
||||
if ((*i)->attribute ("raw") == "--")
|
||||
break;
|
||||
|
||||
std::string arg = (*i)->attribute ("raw");
|
||||
if (arg.find ("rc:") == 0)
|
||||
{
|
||||
(*i)->tag ("RC");
|
||||
Tree* b = (*i)->addBranch (new Tree ("data"));
|
||||
b->attribute ("file", arg.substr (3));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// rc.<name>[:=]<value>
|
||||
void A3t::findConfigOverride ()
|
||||
{
|
||||
std::vector <Tree*>::iterator i;
|
||||
for (i = _tree->_branches.begin (); i != _tree->_branches.end (); ++i)
|
||||
{
|
||||
// Parser override operator.
|
||||
if ((*i)->attribute ("raw") == "--")
|
||||
break;
|
||||
|
||||
std::string arg = (*i)->attribute ("raw");
|
||||
if (arg.find ("rc.") == 0)
|
||||
{
|
||||
std::string::size_type sep = arg.find ('=', 3);
|
||||
if (sep == std::string::npos)
|
||||
sep = arg.find (':', 3);
|
||||
|
||||
if (sep != std::string::npos)
|
||||
{
|
||||
(*i)->tag ("CONFIG");
|
||||
Tree* b = (*i)->addBranch (new Tree ("data"));
|
||||
b->attribute ("name", arg.substr (3, sep - 3));
|
||||
b->attribute ("value", arg.substr (sep + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Validate the parse tree.
|
||||
void A3t::validate ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -44,6 +44,9 @@ private:
|
|||
void findBinary ();
|
||||
void findTerminator ();
|
||||
void findCommand ();
|
||||
void findFileOverride ();
|
||||
void findConfigOverride ();
|
||||
void validate ();
|
||||
|
||||
private:
|
||||
Tree* _tree;
|
||||
|
|
|
@ -8,6 +8,6 @@
|
|||
#echo; ./args rc:x rc.debug:1 1234 done pri:H
|
||||
#echo; ./args rc:x rc.debug:1 a.b\<c \(one or two\) modify 'quoted string' \'not quoted\' due:eom+1wk+1d
|
||||
|
||||
echo; ./args 123 mod pro:'P 1' +home /from/to/g
|
||||
echo; ./args add -- modify +tag /from/to/g name:value
|
||||
echo; ./args rc:~/.taskrc 123 mod pro:'P 1' +home /from/to/g rc.name=value
|
||||
echo; ./args rc:~/..taskrc rc.name=value add -- modify +tag /from/to/g name:value
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue