mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-20 13:23:08 +02:00
Commands
- Rewrote Command::factory to construct all commands, indexed by primary command keyword.
This commit is contained in:
parent
f53d509930
commit
8e4a757200
3 changed files with 16 additions and 17 deletions
|
@ -37,20 +37,15 @@
|
|||
extern Context context;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Command* Command::factory (const std::string& name)
|
||||
void Command::factory (std::map <std::string, Command*>& all)
|
||||
{
|
||||
Command* command;
|
||||
if (name == "execute") command = new CmdExec ();
|
||||
else if (name == "help") command = new CmdHelp ();
|
||||
else if (name == "install") command = new CmdInstall ();
|
||||
else if (name == "tip") command = new CmdTip ();
|
||||
else if (name == "_logo") command = new CmdLogo ();
|
||||
else
|
||||
throw std::string ("Unrecognized command object '") + name + "'";
|
||||
Command* c;
|
||||
|
||||
// TODO Initialize command object.
|
||||
|
||||
return command;
|
||||
c = new CmdExec (); all[c->keyword ()] = c;
|
||||
c = new CmdHelp (); all[c->keyword ()] = c;
|
||||
c = new CmdInstall (); all[c->keyword ()] = c;
|
||||
c = new CmdLogo (); all[c->keyword ()] = c;
|
||||
c = new CmdTip (); all[c->keyword ()] = c;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#ifndef INCLUDED_COMMAND
|
||||
#define INCLUDED_COMMAND
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
class Command
|
||||
|
@ -38,7 +39,7 @@ public:
|
|||
bool operator== (const Command&) const; // TODO Is this necessary?
|
||||
virtual ~Command ();
|
||||
|
||||
static Command* factory (const std::string&);
|
||||
static void factory (std::map <std::string, Command*>&);
|
||||
|
||||
std::string keyword () const;
|
||||
std::string usage () const;
|
||||
|
|
|
@ -250,10 +250,13 @@ int handleCustomReport (const std::string& report, std::string& outs)
|
|||
view.colorOdd (alternate);
|
||||
view.intraColorOdd (alternate);
|
||||
|
||||
// Add the columns.
|
||||
std::vector <std::string>::iterator it;
|
||||
for (it = columns.begin (); it != columns.end (); ++it)
|
||||
view.add (Column::factory (*it, report));
|
||||
// Add the columns and labels.
|
||||
for (int i = 0; i < columns.size (); ++i)
|
||||
{
|
||||
Column* c = Column::factory (columns[i], report);
|
||||
c->setLabel (labels[i]);
|
||||
view.add (c);
|
||||
}
|
||||
|
||||
// How many lines taken up by table header?
|
||||
int table_header;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue