Refactoring

- Combined the remains of command.cpp and report.cpp into helpers.cpp.
This commit is contained in:
Paul Beckingham 2011-05-30 16:01:04 -04:00
parent a2da93b681
commit 6f17e80461
4 changed files with 149 additions and 191 deletions

View file

@ -40,13 +40,12 @@ set (task_SRCS API.cpp API.h
Variant.cpp Variant.h Variant.cpp Variant.h
ViewTask.cpp ViewTask.h ViewTask.cpp ViewTask.h
ViewText.cpp ViewText.h ViewText.cpp ViewText.h
command.cpp helpers.cpp
dependency.cpp dependency.cpp
feedback.cpp feedback.cpp
i18n.h i18n.h
interactive.cpp interactive.cpp
recur.cpp recur.cpp
report.cpp
rules.cpp rules.cpp
rx.cpp rx.h rx.cpp rx.h
sort.cpp sort.cpp

View file

@ -1,176 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
// taskwarrior - a command line task list manager.
//
// Copyright 2006 - 2011, Paul Beckingham, Federico Hernandez.
// All rights reserved.
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the
//
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor,
// Boston, MA
// 02110-1301
// USA
//
////////////////////////////////////////////////////////////////////////////////
#include <text.h>
#include <Context.h>
extern Context context;
////////////////////////////////////////////////////////////////////////////////
int deltaAppend (Task& task)
{
if (context.task.has ("description"))
{
task.set ("description",
task.get ("description") + " " + context.task.get ("description"));
return 1;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////
int deltaPrepend (Task& task)
{
if (context.task.has ("description"))
{
task.set ("description",
context.task.get ("description") + " " + task.get ("description"));
return 1;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////
int deltaDescription (Task& task)
{
if (context.task.has ("description"))
{
task.set ("description", context.task.get ("description"));
return 1;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////
int deltaTags (Task& task)
{
int changes = 0;
// Apply or remove tags, if any.
std::vector <std::string> tags;
context.task.getTags (tags);
std::vector <std::string>::iterator tag;
for (tag = tags.begin (); tag != tags.end (); ++tag)
{
task.addTag (*tag);
++changes;
}
for (tag = context.tagRemovals.begin (); tag != context.tagRemovals.end (); ++tag)
{
task.removeTag (*tag);
++changes;
}
return changes;
}
////////////////////////////////////////////////////////////////////////////////
int deltaAttributes (Task& task)
{
int changes = 0;
std::map <std::string, Att>::iterator att;
for (att = context.task.begin (); att != context.task.end (); ++att)
{
if (att->second.name () != "uuid" &&
att->second.name () != "description" &&
att->second.name () != "tags")
{
// Some things don't propagate to the parent task.
if (att->second.name () == "wait" &&
task.getStatus () == Task::recurring)
{
// NOP
}
// Modifying "wait" changes status, but not for recurring parent tasks.
else if (att->second.name () == "wait")
{
if (att->second.value () == "")
{
task.remove (att->first);
task.setStatus (Task::pending);
}
else
{
task.set (att->first, att->second.value ());
task.setStatus (Task::waiting);
}
}
// Modifying dependencies requires adding/removing uuids.
else if (att->second.name () == "depends")
{
std::vector <std::string> deps;
split (deps, att->second.value (), ',');
std::vector <std::string>::iterator i;
for (i = deps.begin (); i != deps.end (); i++)
{
int id = atoi (i->c_str ());
if (id < 0)
task.removeDependency (-id);
else
task.addDependency (id);
}
}
// Now the generalized handling.
else if (att->second.value () == "")
task.remove (att->second.name ());
else
// One of the few places where the compound attribute name is used.
task.set (att->first, att->second.value ());
++changes;
}
}
return changes;
}
////////////////////////////////////////////////////////////////////////////////
int deltaSubstitutions (Task& task)
{
std::string description = task.get ("description");
std::vector <Att> annotations;
task.getAnnotations (annotations);
context.subst.apply (description, annotations);
task.set ("description", description);
task.setAnnotations (annotations);
return 1;
}
////////////////////////////////////////////////////////////////////////////////
// vim: ts=2 sw=2 et

View file

@ -218,4 +218,146 @@ static void countTasks (
} }
} }
/////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int deltaAppend (Task& task)
{
if (context.task.has ("description"))
{
task.set ("description",
task.get ("description") + " " + context.task.get ("description"));
return 1;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////
int deltaPrepend (Task& task)
{
if (context.task.has ("description"))
{
task.set ("description",
context.task.get ("description") + " " + task.get ("description"));
return 1;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////
int deltaDescription (Task& task)
{
if (context.task.has ("description"))
{
task.set ("description", context.task.get ("description"));
return 1;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////
int deltaTags (Task& task)
{
int changes = 0;
// Apply or remove tags, if any.
std::vector <std::string> tags;
context.task.getTags (tags);
std::vector <std::string>::iterator tag;
for (tag = tags.begin (); tag != tags.end (); ++tag)
{
task.addTag (*tag);
++changes;
}
for (tag = context.tagRemovals.begin (); tag != context.tagRemovals.end (); ++tag)
{
task.removeTag (*tag);
++changes;
}
return changes;
}
////////////////////////////////////////////////////////////////////////////////
int deltaAttributes (Task& task)
{
int changes = 0;
std::map <std::string, Att>::iterator att;
for (att = context.task.begin (); att != context.task.end (); ++att)
{
if (att->second.name () != "uuid" &&
att->second.name () != "description" &&
att->second.name () != "tags")
{
// Some things don't propagate to the parent task.
if (att->second.name () == "wait" &&
task.getStatus () == Task::recurring)
{
// NOP
}
// Modifying "wait" changes status, but not for recurring parent tasks.
else if (att->second.name () == "wait")
{
if (att->second.value () == "")
{
task.remove (att->first);
task.setStatus (Task::pending);
}
else
{
task.set (att->first, att->second.value ());
task.setStatus (Task::waiting);
}
}
// Modifying dependencies requires adding/removing uuids.
else if (att->second.name () == "depends")
{
std::vector <std::string> deps;
split (deps, att->second.value (), ',');
std::vector <std::string>::iterator i;
for (i = deps.begin (); i != deps.end (); i++)
{
int id = atoi (i->c_str ());
if (id < 0)
task.removeDependency (-id);
else
task.addDependency (id);
}
}
// Now the generalized handling.
else if (att->second.value () == "")
task.remove (att->second.name ());
else
// One of the few places where the compound attribute name is used.
task.set (att->first, att->second.value ());
++changes;
}
}
return changes;
}
////////////////////////////////////////////////////////////////////////////////
int deltaSubstitutions (Task& task)
{
std::string description = task.get ("description");
std::vector <Att> annotations;
task.getAnnotations (annotations);
context.subst.apply (description, annotations);
task.set ("description", description);
task.setAnnotations (annotations);
return 1;
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -49,7 +49,11 @@ void updateRecurrenceMask (std::vector <Task>&, Task&);
int getDueState (const std::string&); int getDueState (const std::string&);
bool nag (Task&); bool nag (Task&);
// command.cpp // helpers.cpp
std::string getFullDescription (Task&, const std::string&);
std::string getDueDate (Task&, const std::string&);
std::string onProjectChange (Task&, bool scope = true);
std::string onProjectChange (Task&, Task&);
int deltaAppend (Task&); int deltaAppend (Task&);
int deltaPrepend (Task&); int deltaPrepend (Task&);
int deltaDescription (Task&); int deltaDescription (Task&);
@ -57,17 +61,6 @@ int deltaTags (Task&);
int deltaAttributes (Task&); int deltaAttributes (Task&);
int deltaSubstitutions (Task&); int deltaSubstitutions (Task&);
// report.cpp
std::string getFullDescription (Task&, const std::string&);
std::string getDueDate (Task&, const std::string&);
std::string onProjectChange (Task&, bool scope = true);
std::string onProjectChange (Task&, Task&);
// burndown.cpp
int handleReportBurndownDaily (std::string&);
int handleReportBurndownWeekly (std::string&);
int handleReportBurndownMonthly (std::string&);
// rules.cpp // rules.cpp
void initializeColorRules (); void initializeColorRules ();
void autoColorize (Task&, Color&); void autoColorize (Task&, Color&);