mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Expression reboot
- More integration of A3 into Context. - Now ready for filter/modification/word extraction.
This commit is contained in:
parent
4fc4e0f637
commit
abcda0bcfa
4 changed files with 41 additions and 22 deletions
44
src/A3.cpp
44
src/A3.cpp
|
@ -495,6 +495,34 @@ const std::vector <std::string> A3::list () const
|
|||
return all;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool A3::find_command (std::string& command) const
|
||||
{
|
||||
std::vector <Arg>::const_iterator arg;
|
||||
for (arg = this->begin (); arg != this->end (); ++arg)
|
||||
{
|
||||
if (arg->_category == "command")
|
||||
{
|
||||
command = arg->_raw;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
const std::string A3::find_limit () const
|
||||
{
|
||||
std::vector <Arg>::const_reverse_iterator arg;
|
||||
for (arg = this->rbegin (); arg != this->rend (); ++arg)
|
||||
if (arg->_raw.find ("limit:") != std::string::npos)
|
||||
return arg->_raw.substr (6);
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -519,22 +547,6 @@ std::vector <std::string> A3::operator_list ()
|
|||
return all;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool A3::find_command (std::string& command)
|
||||
{
|
||||
std::vector <Arg>::iterator arg;
|
||||
for (arg = this->begin (); arg != this->end (); ++arg)
|
||||
{
|
||||
if (arg->_third == "command")
|
||||
{
|
||||
command = arg->_first;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string A3::find_limit ()
|
||||
{
|
||||
|
|
4
src/A3.h
4
src/A3.h
|
@ -95,12 +95,12 @@ public:
|
|||
|
||||
const std::string combine () const;
|
||||
const std::vector <std::string> list () const;
|
||||
bool find_command (std::string&) const;
|
||||
const std::string find_limit () const;
|
||||
|
||||
/*
|
||||
static std::vector <std::string> operator_list ();
|
||||
|
||||
bool find_command (std::string&);
|
||||
std::string find_limit ();
|
||||
|
||||
static bool is_multipart (const std::string&, std::vector <std::string>&);
|
||||
static bool is_attr (const std::string&);
|
||||
|
|
|
@ -98,7 +98,6 @@ int Context::initialize (int argc, const char** argv)
|
|||
// location (~/.task), or set by data.location in the config file, or
|
||||
// overridden by rc.data.location on the command line.
|
||||
std::string location;
|
||||
// args.get_data_location (location);
|
||||
a3.get_data_location (location);
|
||||
data_dir = Directory (location);
|
||||
extension_dir = data_dir.data + "/extensions";
|
||||
|
@ -112,7 +111,6 @@ int Context::initialize (int argc, const char** argv)
|
|||
a3.resolve_aliases ();
|
||||
|
||||
// Apply rc overrides to Context::config, capturing raw args for later use.
|
||||
// args.apply_overrides ();
|
||||
a3.apply_overrides ();
|
||||
|
||||
// Initialize the color rules, if necessary.
|
||||
|
@ -279,7 +277,7 @@ int Context::dispatch (std::string &out)
|
|||
|
||||
// Autocomplete args against keywords.
|
||||
std::string command;
|
||||
if (args.find_command (command))
|
||||
if (a3.find_command (command))
|
||||
{
|
||||
updateXtermTitle ();
|
||||
|
||||
|
@ -292,7 +290,13 @@ int Context::dispatch (std::string &out)
|
|||
tdb2.gc ();
|
||||
}
|
||||
|
||||
// args.dump ("Argument Categorization");
|
||||
// Only read-only commands can be run when TDB2 is read-only.
|
||||
// TODO Implement TDB2::read_only
|
||||
/*
|
||||
if (tdb2.read_only () && !c->read_only ())
|
||||
throw std::string ("");
|
||||
*/
|
||||
|
||||
return c->execute (out);
|
||||
}
|
||||
|
||||
|
|
|
@ -86,7 +86,10 @@ int CmdCustom::execute (std::string& output)
|
|||
split (filterArgs, reportFilter, ' ');
|
||||
std::vector <std::string>::iterator arg;
|
||||
for (arg = filterArgs.begin (); arg != filterArgs.end (); ++ arg)
|
||||
{
|
||||
context.args.capture_first (*arg);
|
||||
context.a3.capture_first (*arg);
|
||||
}
|
||||
|
||||
// Load the data.
|
||||
// TODO Replace with TDB2.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue