mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-19 09:53:08 +02:00
Code Cleanup
- Centralize the date format determination when editing.
This commit is contained in:
parent
72621febd4
commit
84e1d0e7d2
2 changed files with 30 additions and 26 deletions
|
@ -100,20 +100,21 @@ std::string CmdEdit::findValue (
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
std::string CmdEdit::formatDate (
|
std::string CmdEdit::formatDate (
|
||||||
Task& task,
|
Task& task,
|
||||||
const std::string& attribute)
|
const std::string& attribute,
|
||||||
|
const std::string& dateformat)
|
||||||
{
|
{
|
||||||
std::string value = task.get (attribute);
|
std::string value = task.get (attribute);
|
||||||
if (value.length ())
|
if (value.length ())
|
||||||
{
|
{
|
||||||
Date dt (strtol (value.c_str (), NULL, 10));
|
Date dt (strtol (value.c_str (), NULL, 10));
|
||||||
value = dt.toString (context.config.get ("dateformat"));
|
value = dt.toString (dateformat);
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
std::string CmdEdit::formatTask (Task task)
|
std::string CmdEdit::formatTask (Task task, const std::string& dateformat)
|
||||||
{
|
{
|
||||||
std::stringstream before;
|
std::stringstream before;
|
||||||
bool verbose = context.verbose ("edit") ||
|
bool verbose = context.verbose ("edit") ||
|
||||||
|
@ -156,14 +157,14 @@ std::string CmdEdit::formatTask (Task task)
|
||||||
|
|
||||||
before << " Tags: " << allTags << "\n"
|
before << " Tags: " << allTags << "\n"
|
||||||
<< " Description: " << task.get ("description") << "\n"
|
<< " Description: " << task.get ("description") << "\n"
|
||||||
<< " Created: " << formatDate (task, "entry") << "\n"
|
<< " Created: " << formatDate (task, "entry", dateformat) << "\n"
|
||||||
<< " Started: " << formatDate (task, "start") << "\n"
|
<< " Started: " << formatDate (task, "start", dateformat) << "\n"
|
||||||
<< " Ended: " << formatDate (task, "end") << "\n"
|
<< " Ended: " << formatDate (task, "end", dateformat) << "\n"
|
||||||
<< " Scheduled: " << formatDate (task, "scheduled") << "\n"
|
<< " Scheduled: " << formatDate (task, "scheduled", dateformat) << "\n"
|
||||||
<< " Due: " << formatDate (task, "due") << "\n"
|
<< " Due: " << formatDate (task, "due", dateformat) << "\n"
|
||||||
<< " Until: " << formatDate (task, "until") << "\n"
|
<< " Until: " << formatDate (task, "until", dateformat) << "\n"
|
||||||
<< " Recur: " << task.get ("recur") << "\n"
|
<< " Recur: " << task.get ("recur") << "\n"
|
||||||
<< " Wait until: " << formatDate (task, "wait") << "\n"
|
<< " Wait until: " << formatDate (task, "wait", dateformat) << "\n"
|
||||||
<< " Parent: " << task.get ("parent") << "\n"
|
<< " Parent: " << task.get ("parent") << "\n"
|
||||||
<< " Foreground color: " << task.get ("fg") << "\n"
|
<< " Foreground color: " << task.get ("fg") << "\n"
|
||||||
<< " Background color: " << task.get ("bg") << "\n";
|
<< " Background color: " << task.get ("bg") << "\n";
|
||||||
|
@ -179,12 +180,12 @@ std::string CmdEdit::formatTask (Task task)
|
||||||
for (anno = annotations.begin (); anno != annotations.end (); ++anno)
|
for (anno = annotations.begin (); anno != annotations.end (); ++anno)
|
||||||
{
|
{
|
||||||
Date dt (strtol (anno->first.substr (11).c_str (), NULL, 10));
|
Date dt (strtol (anno->first.substr (11).c_str (), NULL, 10));
|
||||||
before << " Annotation: " << dt.toString (context.config.get ("dateformat"))
|
before << " Annotation: " << dt.toString (dateformat)
|
||||||
<< " -- " << anno->second << "\n";
|
<< " -- " << anno->second << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
Date now;
|
Date now;
|
||||||
before << " Annotation: " << now.toString (context.config.get ("dateformat")) << " -- \n";
|
before << " Annotation: " << now.toString (dateformat) << " -- \n";
|
||||||
|
|
||||||
// Add dependencies here.
|
// Add dependencies here.
|
||||||
std::vector <std::string> dependencies;
|
std::vector <std::string> dependencies;
|
||||||
|
@ -214,7 +215,7 @@ std::string CmdEdit::formatTask (Task task)
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
void CmdEdit::parseTask (Task& task, const std::string& after)
|
void CmdEdit::parseTask (Task& task, const std::string& after, const std::string& dateformat)
|
||||||
{
|
{
|
||||||
// project
|
// project
|
||||||
std::string value = findValue (after, "\n Project:");
|
std::string value = findValue (after, "\n Project:");
|
||||||
|
@ -275,7 +276,7 @@ void CmdEdit::parseTask (Task& task, const std::string& after)
|
||||||
value = findValue (after, "\n Created:");
|
value = findValue (after, "\n Created:");
|
||||||
if (value != "")
|
if (value != "")
|
||||||
{
|
{
|
||||||
std::string formatted = formatDate (task, "entry");
|
std::string formatted = formatDate (task, "entry", dateformat);
|
||||||
|
|
||||||
if (formatted != value)
|
if (formatted != value)
|
||||||
{
|
{
|
||||||
|
@ -292,7 +293,7 @@ void CmdEdit::parseTask (Task& task, const std::string& after)
|
||||||
{
|
{
|
||||||
if (task.get ("start") != "")
|
if (task.get ("start") != "")
|
||||||
{
|
{
|
||||||
std::string formatted = formatDate (task, "start");
|
std::string formatted = formatDate (task, "start", dateformat);
|
||||||
|
|
||||||
if (formatted != value)
|
if (formatted != value)
|
||||||
{
|
{
|
||||||
|
@ -321,7 +322,7 @@ void CmdEdit::parseTask (Task& task, const std::string& after)
|
||||||
{
|
{
|
||||||
if (task.get ("end") != "")
|
if (task.get ("end") != "")
|
||||||
{
|
{
|
||||||
std::string formatted = formatDate (task, "end");
|
std::string formatted = formatDate (task, "end", dateformat);
|
||||||
|
|
||||||
if (formatted != value)
|
if (formatted != value)
|
||||||
{
|
{
|
||||||
|
@ -348,7 +349,7 @@ void CmdEdit::parseTask (Task& task, const std::string& after)
|
||||||
{
|
{
|
||||||
if (task.get ("scheduled") != "")
|
if (task.get ("scheduled") != "")
|
||||||
{
|
{
|
||||||
std::string formatted = formatDate (task, "scheduled");
|
std::string formatted = formatDate (task, "scheduled", dateformat);
|
||||||
|
|
||||||
if (formatted != value)
|
if (formatted != value)
|
||||||
{
|
{
|
||||||
|
@ -378,7 +379,7 @@ void CmdEdit::parseTask (Task& task, const std::string& after)
|
||||||
{
|
{
|
||||||
if (task.get ("due") != "")
|
if (task.get ("due") != "")
|
||||||
{
|
{
|
||||||
std::string formatted = formatDate (task, "due");
|
std::string formatted = formatDate (task, "due", dateformat);
|
||||||
|
|
||||||
if (formatted != value)
|
if (formatted != value)
|
||||||
{
|
{
|
||||||
|
@ -415,7 +416,7 @@ void CmdEdit::parseTask (Task& task, const std::string& after)
|
||||||
{
|
{
|
||||||
if (task.get ("until") != "")
|
if (task.get ("until") != "")
|
||||||
{
|
{
|
||||||
std::string formatted = formatDate (task, "until");
|
std::string formatted = formatDate (task, "until", dateformat);
|
||||||
|
|
||||||
if (formatted != value)
|
if (formatted != value)
|
||||||
{
|
{
|
||||||
|
@ -476,7 +477,7 @@ void CmdEdit::parseTask (Task& task, const std::string& after)
|
||||||
{
|
{
|
||||||
if (task.get ("wait") != "")
|
if (task.get ("wait") != "")
|
||||||
{
|
{
|
||||||
std::string formatted = formatDate (task, "wait");
|
std::string formatted = formatDate (task, "wait", dateformat);
|
||||||
|
|
||||||
if (formatted != value)
|
if (formatted != value)
|
||||||
{
|
{
|
||||||
|
@ -574,7 +575,7 @@ void CmdEdit::parseTask (Task& task, const std::string& after)
|
||||||
// for each line: if the annotation is the same, then it is copied; if
|
// for each line: if the annotation is the same, then it is copied; if
|
||||||
// the annotation is modified, then its original date may be kept; and
|
// the annotation is modified, then its original date may be kept; and
|
||||||
// if there is no corresponding id, then a new unique date is created).
|
// if there is no corresponding id, then a new unique date is created).
|
||||||
Date when (value.substr (0, gap), context.config.get ("dateformat"));
|
Date when (value.substr (0, gap), dateformat);
|
||||||
|
|
||||||
// This guarantees that if more than one annotation has the same date,
|
// This guarantees that if more than one annotation has the same date,
|
||||||
// that the seconds will be different, thus unique, thus not squashed.
|
// that the seconds will be different, thus unique, thus not squashed.
|
||||||
|
@ -630,8 +631,11 @@ bool CmdEdit::editFile (Task& task)
|
||||||
file << "task." << getpid () << "." << task.id << ".task";
|
file << "task." << getpid () << "." << task.id << ".task";
|
||||||
std::string path = location._data + "/" + file.str ();
|
std::string path = location._data + "/" + file.str ();
|
||||||
|
|
||||||
|
// Determine the output date format
|
||||||
|
std::string dateformat = context.config.get ("dateformat");
|
||||||
|
|
||||||
// Format the contents, T -> text, write to a file.
|
// Format the contents, T -> text, write to a file.
|
||||||
std::string before = formatTask (task);
|
std::string before = formatTask (task, dateformat);
|
||||||
int ignored = chdir (location._data.c_str ());
|
int ignored = chdir (location._data.c_str ());
|
||||||
++ignored; // Keep compiler quiet.
|
++ignored; // Keep compiler quiet.
|
||||||
File::write (file.str (), before);
|
File::write (file.str (), before);
|
||||||
|
@ -672,7 +676,7 @@ ARE_THESE_REALLY_HARMFUL:
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
parseTask (task, after);
|
parseTask (task, after, dateformat);
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (std::string& e)
|
catch (std::string& e)
|
||||||
|
|
|
@ -41,9 +41,9 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string findValue (const std::string&, const std::string&);
|
std::string findValue (const std::string&, const std::string&);
|
||||||
std::string formatDate (Task&, const std::string&);
|
std::string formatDate (Task&, const std::string&, const std::string&);
|
||||||
std::string formatTask (Task);
|
std::string formatTask (Task, const std::string&);
|
||||||
void parseTask (Task&, const std::string&);
|
void parseTask (Task&, const std::string&, const std::string&);
|
||||||
bool editFile (Task&);
|
bool editFile (Task&);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue