ISO8601d: ::parse_named now only considers the first token.

This commit is contained in:
Paul Beckingham 2015-10-04 13:26:10 -04:00
parent b1d2d6d5e8
commit 5018057f19

View file

@ -240,9 +240,7 @@ bool ISO8601d::parse (
// Check the values and determine time_t. // Check the values and determine time_t.
if (validate ()) if (validate ())
{ {
// Record cursor position.
start = n.cursor (); start = n.cursor ();
resolve (); resolve ();
return true; return true;
} }
@ -259,9 +257,7 @@ bool ISO8601d::parse (
// Check the values and determine time_t. // Check the values and determine time_t.
if (validate ()) if (validate ())
{ {
// Record cursor position.
start = n.cursor (); start = n.cursor ();
resolve (); resolve ();
return true; return true;
} }
@ -590,17 +586,19 @@ bool ISO8601d::parse_formatted (Nibbler& n, const std::string& format)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
bool ISO8601d::parse_named (Nibbler& n) bool ISO8601d::parse_named (Nibbler& n)
{ {
Variant v; n.save ();
if (namedDates (n.str ().substr (n.cursor ()), v)) std::string token;
if (n.getUntilWS (token))
{
Variant v;
if (namedDates (token, v))
{ {
// Advance n by the length of the found item.
std::string dummy;
n.getUntilEOS (dummy);
_date = v.get_date (); _date = v.get_date ();
return true; return true;
} }
}
n.restore ();
return false; return false;
} }