diff options
Diffstat (limited to 'AK')
-rw-r--r-- | AK/JsonParser.cpp | 21 | ||||
-rw-r--r-- | AK/JsonParser.h | 3 |
2 files changed, 11 insertions, 13 deletions
diff --git a/AK/JsonParser.cpp b/AK/JsonParser.cpp index b50c89d356..29f4f81755 100644 --- a/AK/JsonParser.cpp +++ b/AK/JsonParser.cpp @@ -30,15 +30,6 @@ void JsonParser::consume_while(C condition) consume(); } -template<typename C> -Vector<char, 128> JsonParser::extract_while(C condition) -{ - Vector<char, 128> buffer; - while (condition(peek())) - buffer.append(consume()); - return buffer; -}; - void JsonParser::consume_whitespace() { consume_while([](char ch) { return is_whitespace(ch); }); @@ -156,7 +147,17 @@ JsonValue JsonParser::parse_string() JsonValue JsonParser::parse_number() { - auto number_buffer = extract_while([](char ch) { return ch == '-' || (ch >= '0' && ch <= '9'); }); + Vector<char, 128> number_buffer; + for (;;) { + char ch = peek(); + if (ch == '-' || (ch >= '0' && ch <= '9')) { + number_buffer.append(ch); + ++m_index; + continue; + } + break; + } + StringView number_string(number_buffer.data(), number_buffer.size()); bool ok; auto value = JsonValue(number_string.to_uint(ok)); diff --git a/AK/JsonParser.h b/AK/JsonParser.h index 26756abf36..7a65d1c638 100644 --- a/AK/JsonParser.h +++ b/AK/JsonParser.h @@ -35,9 +35,6 @@ private: template<typename C> void consume_while(C); - template<typename C> - Vector<char, 128> extract_while(C); - StringView m_input; int m_index { 0 }; |