mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-29 07:57:20 +02:00
CLI2: Integrated Lexer::decomposeSubstitution
- Task::modify now considers the 'g' at the end of a substitution to be a string of characters, which may contain 'g'. No other flags are currently supported.
This commit is contained in:
parent
1bef45ff47
commit
1f8a66b7f3
3 changed files with 15 additions and 14 deletions
19
src/CLI2.cpp
19
src/CLI2.cpp
|
@ -159,23 +159,22 @@ void A2::decompose ()
|
||||||
|
|
||||||
else if (_lextype == Lexer::Type::substitution)
|
else if (_lextype == Lexer::Type::substitution)
|
||||||
{
|
{
|
||||||
std::string raw = _attributes["raw"];
|
|
||||||
|
|
||||||
//if (Directory (raw).exists ())
|
//if (Directory (raw).exists ())
|
||||||
// return;
|
// return;
|
||||||
|
|
||||||
auto slash1 = raw.find ("/");
|
std::string from;
|
||||||
auto slash2 = raw.find ("/", slash1 + 1);
|
std::string to;
|
||||||
auto slash3 = raw.find ("/", slash2 + 1);
|
std::string flags;
|
||||||
|
if (Lexer::decomposeSubstitution (_attributes["raw"], from, to, flags))
|
||||||
attribute ("from", raw.substr (slash1 + 1, slash2 - slash1 - 1));
|
{
|
||||||
attribute ("to", raw.substr (slash2 + 1, slash3 - slash2 - 1));
|
attribute ("from", from);
|
||||||
attribute ("global", raw.substr (slash3 + 1) == "g" ? 1 : 0);
|
attribute ("to", to);
|
||||||
|
attribute ("flags", flags);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (_lextype == Lexer::Type::pair)
|
else if (_lextype == Lexer::Type::pair)
|
||||||
{
|
{
|
||||||
std::string raw = _attributes["raw"];
|
|
||||||
std::string name;
|
std::string name;
|
||||||
std::string mod;
|
std::string mod;
|
||||||
std::string sep;
|
std::string sep;
|
||||||
|
|
|
@ -1208,8 +1208,10 @@ void Task::getUDAOrphans (std::vector <std::string>& names) const
|
||||||
void Task::substitute (
|
void Task::substitute (
|
||||||
const std::string& from,
|
const std::string& from,
|
||||||
const std::string& to,
|
const std::string& to,
|
||||||
bool global)
|
const std::string& flags)
|
||||||
{
|
{
|
||||||
|
bool global = (flags.find ('g') != std::string::npos ? true : false);
|
||||||
|
|
||||||
// Get the data to modify.
|
// Get the data to modify.
|
||||||
std::string description = get ("description");
|
std::string description = get ("description");
|
||||||
std::map <std::string, std::string> annotations;
|
std::map <std::string, std::string> annotations;
|
||||||
|
@ -2076,13 +2078,13 @@ void Task::modify (modType type, bool text_required /* = false */)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// arg7 from='from' global='1' raw='/from/to/g' to='to' ORIGINAL SUBSTITUTION MODIFICATION
|
// Perform description/annotation substitution.
|
||||||
else if (a._lextype == Lexer::Type::substitution)
|
else if (a._lextype == Lexer::Type::substitution)
|
||||||
{
|
{
|
||||||
context.debug (label + "substitute " + a.attribute ("raw"));
|
context.debug (label + "substitute " + a.attribute ("raw"));
|
||||||
substitute (a.attribute ("from"),
|
substitute (a.attribute ("from"),
|
||||||
a.attribute ("to"),
|
a.attribute ("to"),
|
||||||
(a.attribute ("global") == "1"));
|
a.attribute ("flags"));
|
||||||
++modCount;
|
++modCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -142,7 +142,7 @@ public:
|
||||||
void getUDAs (std::vector <std::string>&) const;
|
void getUDAs (std::vector <std::string>&) const;
|
||||||
void getUDAOrphans (std::vector <std::string>&) const;
|
void getUDAOrphans (std::vector <std::string>&) const;
|
||||||
|
|
||||||
void substitute (const std::string&, const std::string&, bool);
|
void substitute (const std::string&, const std::string&, const std::string&);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void validate (bool applyDefault = true);
|
void validate (bool applyDefault = true);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue