//////////////////////////////////////////////////////////////////////////////// // Lexer::Type::date // <ISO8601d> | <Date> bool Lexer::isDate (std::string& token, Lexer::Type& type) { // Try an ISO date parse. if (Lexer::isoEnabled) { std::size_t iso_i = 0; ISO8601d iso; iso.ambiguity (_ambiguity); if (iso.parse (_text.substr (_cursor), iso_i)) { type = Lexer::Type::date; token = _text.substr (_cursor, iso_i); _cursor += iso_i; return true; } } // Try a legacy rc.dateformat parse here. if (Lexer::dateFormat != "") { try { std::size_t legacy_i = 0; Date legacyDate (_text.substr (_cursor), legacy_i, Lexer::dateFormat, false, false); type = Lexer::Type::date; token = _text.substr (_cursor, legacy_i); _cursor += legacy_i; return true; } catch (...) { /* Never mind. */ } } return false; }