- Fixed bug where argument processing was not properly shut off by
  the terminator -- in A3::tokenize.
This commit is contained in:
Paul Beckingham
2011-07-31 16:18:25 -04:00
parent a91b6d4564
commit 9ce7f63d85
2 changed files with 160 additions and 144 deletions

View File

@@ -652,6 +652,7 @@ const A3 A3::tokenize (const A3& input) const
n.skipWS (); n.skipWS ();
// For identifying sequence versus non-sequence. // For identifying sequence versus non-sequence.
bool terminated = false;
bool found_sequence = false; bool found_sequence = false;
bool found_something_after_sequence = false; bool found_something_after_sequence = false;
@@ -661,7 +662,12 @@ const A3 A3::tokenize (const A3& input) const
time_t t; time_t t;
while (! n.depleted ()) while (! n.depleted ())
{ {
if (n.getQuoted ('"', s, true) || if (!terminated)
{
if (n.getLiteral ("--"))
terminated = true;
else if (n.getQuoted ('"', s, true) ||
n.getQuoted ('\'', s, true)) n.getQuoted ('\'', s, true))
{ {
output.push_back (Arg (s, "string")); output.push_back (Arg (s, "string"));
@@ -810,6 +816,16 @@ const A3 A3::tokenize (const A3& input) const
if (found_sequence) if (found_sequence)
found_something_after_sequence = true; found_something_after_sequence = true;
} }
}
else
{
if (n.getUntilEOS (s))
{
output.push_back (Arg (s, "word"));
if (found_sequence)
found_something_after_sequence = true;
}
}
n.skipWS (); n.skipWS ();
} }

View File

@@ -44,21 +44,21 @@ qx{../src/task rc:args.rc add project:p pri:H +tag foo};
my $output = qx{../src/task rc:args.rc info 1}; my $output = qx{../src/task rc:args.rc info 1};
like ($output, qr/Description\s+foo\n/ms, 'task add project:p pri:H +tag foo'); like ($output, qr/Description\s+foo\n/ms, 'task add project:p pri:H +tag foo');
qx{../src/task rc:args.rc 1 project:p pri:H +tag -- foo}; qx{../src/task rc:args.rc 1 modify project:p pri:H +tag -- foo};
$output = qx{../src/task rc:args.rc info 1}; $output = qx{../src/task rc:args.rc info 1};
like ($output, qr/Description\s+foo\n/ms, 'task 1 project:p pri:H +tag -- foo'); like ($output, qr/Description\s+foo\n/ms, 'task 1 modify project:p pri:H +tag -- foo');
qx{../src/task rc:args.rc 1 project:p pri:H -- +tag foo}; qx{../src/task rc:args.rc 1 modify project:p pri:H -- +tag foo};
$output = qx{../src/task rc:args.rc info 1}; $output = qx{../src/task rc:args.rc info 1};
like ($output, qr/Description\s+\+tag\sfoo\n/ms, 'task 1 project:p pri:H -- +tag foo'); like ($output, qr/Description\s+\+tag\sfoo\n/ms, 'task 1 modify project:p pri:H -- +tag foo');
qx{../src/task rc:args.rc 1 project:p -- pri:H +tag foo}; qx{../src/task rc:args.rc 1 modify project:p -- pri:H +tag foo};
$output = qx{../src/task rc:args.rc info 1}; $output = qx{../src/task rc:args.rc info 1};
like ($output, qr/Description\s+pri:H\s\+tag\sfoo\n/ms, 'task 1 project:p -- pri:H +tag foo'); like ($output, qr/Description\s+pri:H\s\+tag\sfoo\n/ms, 'task 1 modify project:p -- pri:H +tag foo');
qx{../src/task rc:args.rc 1 -- project:p pri:H +tag foo}; qx{../src/task rc:args.rc 1 modify -- project:p pri:H +tag foo};
$output = qx{../src/task rc:args.rc info 1}; $output = qx{../src/task rc:args.rc info 1};
like ($output, qr/Description\s+project:p\spri:H\s\+tag\sfoo\n/ms, 'task 1 -- project:p pri:H +tag foo'); like ($output, qr/Description\s+project:p\spri:H\s\+tag\sfoo\n/ms, 'task 1 modify -- project:p pri:H +tag foo');
# Cleanup. # Cleanup.
unlink 'pending.data'; unlink 'pending.data';