mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 12:35:14 +00:00
AK: Add a consume_until(StringView) overload to GenericLexer
This allows us to skip a strlen call.
This commit is contained in:
parent
10b25d2a57
commit
d49d2c7ec4
Notes:
sideshowbarker
2024-07-17 20:16:15 +09:00
Author: https://github.com/IdanHo Commit: https://github.com/SerenityOS/serenity/commit/d49d2c7ec4c Pull-request: https://github.com/SerenityOS/serenity/pull/12120 Reviewed-by: https://github.com/alimpfard ✅
3 changed files with 18 additions and 1 deletions
|
@ -84,6 +84,22 @@ StringView GenericLexer::consume_until(const char* stop)
|
|||
return m_input.substring_view(start, length);
|
||||
}
|
||||
|
||||
// Consume and return characters until the string `stop` is found
|
||||
// The `stop` string is ignored, as it is user-defined
|
||||
StringView GenericLexer::consume_until(StringView stop)
|
||||
{
|
||||
size_t start = m_index;
|
||||
while (!is_eof() && !next_is(stop))
|
||||
m_index++;
|
||||
size_t length = m_index - start;
|
||||
|
||||
ignore(stop.length());
|
||||
|
||||
if (length == 0)
|
||||
return {};
|
||||
return m_input.substring_view(start, length);
|
||||
}
|
||||
|
||||
/*
|
||||
* Consume a string surrounded by single or double quotes. The returned
|
||||
* StringView does not include the quotes. An escape character can be provided
|
||||
|
|
|
@ -113,6 +113,7 @@ public:
|
|||
StringView consume_line();
|
||||
StringView consume_until(char);
|
||||
StringView consume_until(const char*);
|
||||
StringView consume_until(StringView);
|
||||
StringView consume_quoted_string(char escape_char = 0);
|
||||
String consume_and_unescape_string(char escape_char = '\\');
|
||||
|
||||
|
|
|
@ -356,7 +356,7 @@ String Preprocessor::remove_escaped_newlines(StringView value)
|
|||
AK::StringBuilder processed_value;
|
||||
GenericLexer lexer { value };
|
||||
while (!lexer.is_eof()) {
|
||||
processed_value.append(lexer.consume_until("\\\n"));
|
||||
processed_value.append(lexer.consume_until("\\\n"sv));
|
||||
}
|
||||
return processed_value.to_string();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue