diff --git a/Userland/Libraries/LibWebView/SourceHighlighter.cpp b/Userland/Libraries/LibWebView/SourceHighlighter.cpp
index b45ca6ba11e..1a97a49483b 100644
--- a/Userland/Libraries/LibWebView/SourceHighlighter.cpp
+++ b/Userland/Libraries/LibWebView/SourceHighlighter.cpp
@@ -79,27 +79,36 @@ String highlight_source(URL::URL const& url, StringView source)
auto segment = source.substring_view(previous_position, end_position - previous_position);
- if (class_name.has_value())
- builder.appendff(""sv, *class_name);
+ auto append_class_start = [&]() {
+ if (class_name.has_value())
+ builder.appendff(""sv, *class_name);
+ };
+ auto append_class_end = [&]() {
+ if (class_name.has_value())
+ builder.append(""sv);
+ };
+
+ append_class_start();
for (auto code_point : Utf8View { segment }) {
- if (code_point == '&')
+ if (code_point == '&') {
builder.append("&"sv);
- else if (code_point == 0xA0)
+ } else if (code_point == 0xA0) {
builder.append(" "sv);
- else if (code_point == '<')
+ } else if (code_point == '<') {
builder.append("<"sv);
- else if (code_point == '>')
+ } else if (code_point == '>') {
builder.append(">"sv);
- else if (code_point == '\n')
+ } else if (code_point == '\n') {
+ append_class_end();
builder.append("\n"sv);
- else
+ append_class_start();
+ } else {
builder.append_code_point(code_point);
+ }
}
- if (class_name.has_value())
- builder.append(""sv);
-
+ append_class_end();
previous_position = end_position;
};