summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Meta/Lagom/CMakeLists.txt6
-rw-r--r--Userland/Applications/TextEditor/MainWidget.cpp4
-rw-r--r--Userland/DevTools/HackStudio/Editor.cpp8
-rw-r--r--Userland/DevTools/Playground/main.cpp18
-rw-r--r--Userland/Libraries/LibGUI/CMakeLists.txt10
-rw-r--r--Userland/Libraries/LibGUI/GML/AutocompleteProvider.cpp (renamed from Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp)34
-rw-r--r--Userland/Libraries/LibGUI/GML/AutocompleteProvider.h (renamed from Userland/Libraries/LibGUI/GMLAutocompleteProvider.h)10
-rw-r--r--Userland/Libraries/LibGUI/GML/Formatter.cpp (renamed from Userland/Libraries/LibGUI/GMLFormatter.cpp)7
-rw-r--r--Userland/Libraries/LibGUI/GML/Formatter.h (renamed from Userland/Libraries/LibGUI/GMLFormatter.h)2
-rw-r--r--Userland/Libraries/LibGUI/GML/Lexer.cpp (renamed from Userland/Libraries/LibGUI/GMLLexer.cpp)36
-rw-r--r--Userland/Libraries/LibGUI/GML/Lexer.h (renamed from Userland/Libraries/LibGUI/GMLLexer.h)18
-rw-r--r--Userland/Libraries/LibGUI/GML/Parser.cpp (renamed from Userland/Libraries/LibGUI/GMLParser.cpp)39
-rw-r--r--Userland/Libraries/LibGUI/GML/Parser.h (renamed from Userland/Libraries/LibGUI/GMLParser.h)3
-rw-r--r--Userland/Libraries/LibGUI/GML/SyntaxHighlighter.cpp (renamed from Userland/Libraries/LibGUI/GMLSyntaxHighlighter.cpp)42
-rw-r--r--Userland/Libraries/LibGUI/GML/SyntaxHighlighter.h (renamed from Userland/Libraries/LibGUI/GMLSyntaxHighlighter.h)8
-rw-r--r--Userland/Libraries/LibGUI/Widget.cpp4
-rw-r--r--Userland/Utilities/gml-format.cpp5
17 files changed, 129 insertions, 125 deletions
diff --git a/Meta/Lagom/CMakeLists.txt b/Meta/Lagom/CMakeLists.txt
index 80875faee8..e2eed966f4 100644
--- a/Meta/Lagom/CMakeLists.txt
+++ b/Meta/Lagom/CMakeLists.txt
@@ -338,9 +338,9 @@ if (BUILD_LAGOM)
LIBS m LagomGfx LagomSoftGPU)
# GUI-GML
- file(GLOB LIBGUI_GML_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibGUI/GML*.cpp")
- list(REMOVE_ITEM LIBGUI_GML_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/../../Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp")
- list(REMOVE_ITEM LIBGUI_GML_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/../../Userland/Libraries/LibGUI/GMLSyntaxHighlighter.cpp")
+ file(GLOB LIBGUI_GML_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibGUI/GML/*.cpp")
+ list(REMOVE_ITEM LIBGUI_GML_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/../../Userland/Libraries/LibGUI/GML/AutocompleteProvider.cpp")
+ list(REMOVE_ITEM LIBGUI_GML_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/../../Userland/Libraries/LibGUI/GML/SyntaxHighlighter.cpp")
lagom_lib(GML gml
SOURCES ${LIBGUI_GML_SOURCES}
)
diff --git a/Userland/Applications/TextEditor/MainWidget.cpp b/Userland/Applications/TextEditor/MainWidget.cpp
index 4d4e692376..24f354ed81 100644
--- a/Userland/Applications/TextEditor/MainWidget.cpp
+++ b/Userland/Applications/TextEditor/MainWidget.cpp
@@ -19,7 +19,7 @@
#include <LibGUI/CheckBox.h>
#include <LibGUI/FilePicker.h>
#include <LibGUI/FontPicker.h>
-#include <LibGUI/GMLSyntaxHighlighter.h>
+#include <LibGUI/GML/SyntaxHighlighter.h>
#include <LibGUI/GitCommitSyntaxHighlighter.h>
#include <LibGUI/GroupBox.h>
#include <LibGUI/INISyntaxHighlighter.h>
@@ -582,7 +582,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
syntax_menu.add_action(*m_git_highlight);
m_gml_highlight = GUI::Action::create_checkable("&GML", [&](auto&) {
- m_editor->set_syntax_highlighter(make<GUI::GMLSyntaxHighlighter>());
+ m_editor->set_syntax_highlighter(make<GUI::GML::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_gml_highlight);
diff --git a/Userland/DevTools/HackStudio/Editor.cpp b/Userland/DevTools/HackStudio/Editor.cpp
index 4c59dde1dc..59655b974e 100644
--- a/Userland/DevTools/HackStudio/Editor.cpp
+++ b/Userland/DevTools/HackStudio/Editor.cpp
@@ -19,8 +19,8 @@
#include <LibCpp/SyntaxHighlighter.h>
#include <LibGUI/Action.h>
#include <LibGUI/Application.h>
-#include <LibGUI/GMLAutocompleteProvider.h>
-#include <LibGUI/GMLSyntaxHighlighter.h>
+#include <LibGUI/GML/AutocompleteProvider.h>
+#include <LibGUI/GML/SyntaxHighlighter.h>
#include <LibGUI/GitCommitSyntaxHighlighter.h>
#include <LibGUI/INISyntaxHighlighter.h>
#include <LibGUI/Label.h>
@@ -611,7 +611,7 @@ void Editor::set_syntax_highlighter_for(const CodeDocument& document)
set_syntax_highlighter(make<GUI::GitCommitSyntaxHighlighter>());
break;
case Language::GML:
- set_syntax_highlighter(make<GUI::GMLSyntaxHighlighter>());
+ set_syntax_highlighter(make<GUI::GML::SyntaxHighlighter>());
break;
case Language::HTML:
set_syntax_highlighter(make<Web::HTML::SyntaxHighlighter>());
@@ -637,7 +637,7 @@ void Editor::set_autocomplete_provider_for(CodeDocument const& document)
{
switch (document.language()) {
case Language::GML:
- set_autocomplete_provider(make<GUI::GMLAutocompleteProvider>());
+ set_autocomplete_provider(make<GUI::GML::AutocompleteProvider>());
break;
default:
set_autocomplete_provider({});
diff --git a/Userland/DevTools/Playground/main.cpp b/Userland/DevTools/Playground/main.cpp
index 3886894bad..f11f211be0 100644
--- a/Userland/DevTools/Playground/main.cpp
+++ b/Userland/DevTools/Playground/main.cpp
@@ -12,10 +12,10 @@
#include <LibDesktop/Launcher.h>
#include <LibGUI/Application.h>
#include <LibGUI/FilePicker.h>
-#include <LibGUI/GMLAutocompleteProvider.h>
-#include <LibGUI/GMLFormatter.h>
-#include <LibGUI/GMLLexer.h>
-#include <LibGUI/GMLSyntaxHighlighter.h>
+#include <LibGUI/GML/AutocompleteProvider.h>
+#include <LibGUI/GML/Formatter.h>
+#include <LibGUI/GML/Lexer.h>
+#include <LibGUI/GML/SyntaxHighlighter.h>
#include <LibGUI/Icon.h>
#include <LibGUI/Menu.h>
#include <LibGUI/Menubar.h>
@@ -87,8 +87,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto editor = TRY(splitter->try_add<GUI::TextEditor>());
auto preview = TRY(splitter->try_add<GUI::Frame>());
- editor->set_syntax_highlighter(make<GUI::GMLSyntaxHighlighter>());
- editor->set_autocomplete_provider(make<GUI::GMLAutocompleteProvider>());
+ editor->set_syntax_highlighter(make<GUI::GML::SyntaxHighlighter>());
+ editor->set_autocomplete_provider(make<GUI::GML::AutocompleteProvider>());
editor->set_should_autocomplete_automatically(true);
editor->set_automatic_indentation_enabled(true);
editor->set_ruler_visible(true);
@@ -215,9 +215,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto edit_menu = TRY(window->try_add_menu("&Edit"));
TRY(edit_menu->try_add_action(GUI::Action::create("&Format GML", { Mod_Ctrl | Mod_Shift, Key_I }, [&](auto&) {
auto source = editor->text();
- GUI::GMLLexer lexer(source);
+ GUI::GML::Lexer lexer(source);
for (auto& token : lexer.lex()) {
- if (token.m_type == GUI::GMLToken::Type::Comment) {
+ if (token.m_type == GUI::GML::Token::Type::Comment) {
auto result = GUI::MessageBox::show(
window,
"Your GML contains comments, which currently are not supported by the formatter and will be removed. Proceed?",
@@ -229,7 +229,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
break;
}
}
- auto formatted_gml = GUI::format_gml(source);
+ auto formatted_gml = GUI::GML::format_gml(source);
if (!formatted_gml.is_null()) {
editor->set_text(formatted_gml);
} else {
diff --git a/Userland/Libraries/LibGUI/CMakeLists.txt b/Userland/Libraries/LibGUI/CMakeLists.txt
index 47b911c8d0..5c26a05a85 100644
--- a/Userland/Libraries/LibGUI/CMakeLists.txt
+++ b/Userland/Libraries/LibGUI/CMakeLists.txt
@@ -46,11 +46,11 @@ set(SOURCES
GitCommitLexer.cpp
GitCommitSyntaxHighlighter.cpp
GlyphMapWidget.cpp
- GMLAutocompleteProvider.cpp
- GMLFormatter.cpp
- GMLLexer.cpp
- GMLParser.cpp
- GMLSyntaxHighlighter.cpp
+ GML/AutocompleteProvider.cpp
+ GML/Formatter.cpp
+ GML/Lexer.cpp
+ GML/Parser.cpp
+ GML/SyntaxHighlighter.cpp
GroupBox.cpp
HeaderView.cpp
INILexer.cpp
diff --git a/Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp b/Userland/Libraries/LibGUI/GML/AutocompleteProvider.cpp
index d3f2c420f4..db97753c2e 100644
--- a/Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp
+++ b/Userland/Libraries/LibGUI/GML/AutocompleteProvider.cpp
@@ -5,17 +5,17 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
-#include "GMLAutocompleteProvider.h"
-#include "GMLLexer.h"
+#include "AutocompleteProvider.h"
+#include "Lexer.h"
#include <AK/QuickSort.h>
-namespace GUI {
+namespace GUI::GML {
-void GMLAutocompleteProvider::provide_completions(Function<void(Vector<Entry>)> callback)
+void AutocompleteProvider::provide_completions(Function<void(Vector<Entry>)> callback)
{
auto cursor = m_editor->cursor();
auto text = m_editor->text();
- GUI::GMLLexer lexer(text);
+ Lexer lexer(text);
// FIXME: Provide a begin() and end() for lexers PLEASE!
auto all_tokens = lexer.lex();
enum State {
@@ -29,16 +29,16 @@ void GMLAutocompleteProvider::provide_completions(Function<void(Vector<Entry>)>
Vector<String> class_names;
Vector<State> previous_states;
bool should_push_state { true };
- GUI::GMLToken* last_seen_token { nullptr };
- GUI::GMLToken* last_identifier_token { nullptr };
+ Token* last_seen_token { nullptr };
+ Token* last_identifier_token { nullptr };
for (auto& token : all_tokens) {
auto handle_class_child = [&] {
- if (token.m_type == GUI::GMLToken::Type::Identifier) {
+ if (token.m_type == Token::Type::Identifier) {
state = InIdentifier;
identifier_string = token.m_view;
last_identifier_token = &token;
- } else if (token.m_type == GUI::GMLToken::Type::ClassMarker) {
+ } else if (token.m_type == Token::Type::ClassMarker) {
previous_states.append(AfterClassName);
state = Free;
should_push_state = false;
@@ -51,7 +51,7 @@ void GMLAutocompleteProvider::provide_completions(Function<void(Vector<Entry>)>
last_seen_token = &token;
switch (state) {
case Free:
- if (token.m_type == GUI::GMLToken::Type::ClassName) {
+ if (token.m_type == Token::Type::ClassName) {
if (should_push_state)
previous_states.append(state);
else
@@ -62,7 +62,7 @@ void GMLAutocompleteProvider::provide_completions(Function<void(Vector<Entry>)>
}
break;
case InClassName:
- if (token.m_type != GUI::GMLToken::Type::LeftCurly) {
+ if (token.m_type != Token::Type::LeftCurly) {
// Close empty class and immediately handle our parent's next child
class_names.take_last();
state = previous_states.take_last();
@@ -77,20 +77,20 @@ void GMLAutocompleteProvider::provide_completions(Function<void(Vector<Entry>)>
case AfterClassName:
handle_class_child();
- if (token.m_type == GUI::GMLToken::Type::RightCurly) {
+ if (token.m_type == Token::Type::RightCurly) {
class_names.take_last();
state = previous_states.take_last();
break;
}
break;
case InIdentifier:
- if (token.m_type == GUI::GMLToken::Type::Colon)
+ if (token.m_type == Token::Type::Colon)
state = AfterIdentifier;
break;
case AfterIdentifier:
- if (token.m_type == GUI::GMLToken::Type::RightCurly || token.m_type == GUI::GMLToken::Type::LeftCurly)
+ if (token.m_type == Token::Type::RightCurly || token.m_type == Token::Type::LeftCurly)
break;
- if (token.m_type == GUI::GMLToken::Type::ClassMarker) {
+ if (token.m_type == Token::Type::ClassMarker) {
previous_states.append(AfterClassName);
state = Free;
should_push_state = false;
@@ -121,7 +121,7 @@ void GMLAutocompleteProvider::provide_completions(Function<void(Vector<Entry>)>
return fuzzy_str_builder.build();
};
- Vector<GUI::AutocompleteProvider::Entry> class_entries, identifier_entries;
+ Vector<AutocompleteProvider::Entry> class_entries, identifier_entries;
auto register_layouts_matching_pattern = [&](String pattern, size_t partial_input_length) {
Core::ObjectClassRegistration::for_each([&](const Core::ObjectClassRegistration& registration) {
@@ -211,7 +211,7 @@ void GMLAutocompleteProvider::provide_completions(Function<void(Vector<Entry>)>
break;
case AfterClassName:
if (last_seen_token && last_seen_token->m_end.line == cursor.line()) {
- if (last_seen_token->m_type != GUI::GMLToken::Type::Identifier || last_seen_token->m_end.column != cursor.column()) {
+ if (last_seen_token->m_type != Token::Type::Identifier || last_seen_token->m_end.column != cursor.column()) {
// Inside braces, but on the same line as some other stuff (and not the continuation of one!)
// The user expects nothing here.
break;
diff --git a/Userland/Libraries/LibGUI/GMLAutocompleteProvider.h b/Userland/Libraries/LibGUI/GML/AutocompleteProvider.h
index 85133f8e45..98dfe35a07 100644
--- a/Userland/Libraries/LibGUI/GMLAutocompleteProvider.h
+++ b/Userland/Libraries/LibGUI/GML/AutocompleteProvider.h
@@ -6,14 +6,14 @@
#pragma once
-#include "AutocompleteProvider.h"
+#include "../AutocompleteProvider.h"
-namespace GUI {
+namespace GUI::GML {
-class GMLAutocompleteProvider final : public virtual GUI::AutocompleteProvider {
+class AutocompleteProvider final : public virtual GUI::AutocompleteProvider {
public:
- GMLAutocompleteProvider() { }
- virtual ~GMLAutocompleteProvider() override { }
+ AutocompleteProvider() { }
+ virtual ~AutocompleteProvider() override { }
private:
static bool can_have_declared_layout(StringView class_name)
diff --git a/Userland/Libraries/LibGUI/GMLFormatter.cpp b/Userland/Libraries/LibGUI/GML/Formatter.cpp
index 07f378fbcc..b1fcbc93fe 100644
--- a/Userland/Libraries/LibGUI/GMLFormatter.cpp
+++ b/Userland/Libraries/LibGUI/GML/Formatter.cpp
@@ -1,16 +1,17 @@
/*
* Copyright (c) 2021, Linus Groh <linusg@serenityos.org>
+ * Copyright (c) 2022, kleines Filmröllchen <filmroellchen@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
+#include "Formatter.h"
+#include "Parser.h"
#include <AK/JsonObject.h>
#include <AK/JsonValue.h>
#include <AK/StringBuilder.h>
-#include <LibGUI/GMLFormatter.h>
-#include <LibGUI/GMLParser.h>
-namespace GUI {
+namespace GUI::GML {
static String format_gml_object(const JsonObject& node, size_t indentation = 0, bool is_inline = false)
{
diff --git a/Userland/Libraries/LibGUI/GMLFormatter.h b/Userland/Libraries/LibGUI/GML/Formatter.h
index 0f3c347b67..91eec86a43 100644
--- a/Userland/Libraries/LibGUI/GMLFormatter.h
+++ b/Userland/Libraries/LibGUI/GML/Formatter.h
@@ -8,7 +8,7 @@
#include <AK/Forward.h>
-namespace GUI {
+namespace GUI::GML {
String format_gml(StringView);
diff --git a/Userland/Libraries/LibGUI/GMLLexer.cpp b/Userland/Libraries/LibGUI/GML/Lexer.cpp
index 72fc43eba6..8f9678c1ac 100644
--- a/Userland/Libraries/LibGUI/GMLLexer.cpp
+++ b/Userland/Libraries/LibGUI/GML/Lexer.cpp
@@ -4,25 +4,25 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
-#include "GMLLexer.h"
+#include "Lexer.h"
#include <AK/CharacterTypes.h>
#include <AK/Vector.h>
-namespace GUI {
+namespace GUI::GML {
-GMLLexer::GMLLexer(StringView input)
+Lexer::Lexer(StringView input)
: m_input(input)
{
}
-char GMLLexer::peek(size_t offset) const
+char Lexer::peek(size_t offset) const
{
if ((m_index + offset) >= m_input.length())
return 0;
return m_input[m_index + offset];
}
-char GMLLexer::consume()
+char Lexer::consume()
{
VERIFY(m_index < m_input.length());
char ch = m_input[m_index++];
@@ -50,12 +50,12 @@ constexpr bool is_valid_class_character(char ch)
return is_ascii_alphanumeric(ch) || ch == '_' || ch == ':';
}
-Vector<GMLToken> GMLLexer::lex()
+Vector<Token> Lexer::lex()
{
- Vector<GMLToken> tokens;
+ Vector<Token> tokens;
size_t token_start_index = 0;
- GMLPosition token_start_position;
+ Position token_start_position;
auto begin_token = [&] {
token_start_index = m_index;
@@ -63,7 +63,7 @@ Vector<GMLToken> GMLLexer::lex()
};
auto commit_token = [&](auto type) {
- GMLToken token;
+ Token token;
token.m_view = m_input.substring_view(token_start_index, m_index - token_start_index);
token.m_type = type;
token.m_start = token_start_position;
@@ -74,11 +74,11 @@ Vector<GMLToken> GMLLexer::lex()
auto consume_class = [&] {
begin_token();
consume();
- commit_token(GMLToken::Type::ClassMarker);
+ commit_token(Token::Type::ClassMarker);
begin_token();
while (is_valid_class_character(peek()))
consume();
- commit_token(GMLToken::Type::ClassName);
+ commit_token(Token::Type::ClassName);
};
while (m_index < m_input.length()) {
@@ -94,21 +94,21 @@ Vector<GMLToken> GMLLexer::lex()
begin_token();
while (peek() && peek() != '\n')
consume();
- commit_token(GMLToken::Type::Comment);
+ commit_token(Token::Type::Comment);
continue;
}
if (peek(0) == '{') {
begin_token();
consume();
- commit_token(GMLToken::Type::LeftCurly);
+ commit_token(Token::Type::LeftCurly);
continue;
}
if (peek(0) == '}') {
begin_token();
consume();
- commit_token(GMLToken::Type::RightCurly);
+ commit_token(Token::Type::RightCurly);
continue;
}
@@ -122,14 +122,14 @@ Vector<GMLToken> GMLLexer::lex()
consume();
while (is_valid_identifier_character(peek(0)))
consume();
- commit_token(GMLToken::Type::Identifier);
+ commit_token(Token::Type::Identifier);
continue;
}
if (peek(0) == ':') {
begin_token();
consume();
- commit_token(GMLToken::Type::Colon);
+ commit_token(Token::Type::Colon);
while (is_ascii_space(peek()))
consume();
@@ -140,13 +140,13 @@ Vector<GMLToken> GMLLexer::lex()
begin_token();
while (peek() && peek() != '\n')
consume();
- commit_token(GMLToken::Type::JsonValue);
+ commit_token(Token::Type::JsonValue);
}
continue;
}
consume();
- commit_token(GMLToken::Type::Unknown);
+ commit_token(Token::Type::Unknown);
}
return tokens;
}
diff --git a/Userland/Libraries/LibGUI/GMLLexer.h b/Userland/Libraries/LibGUI/GML/Lexer.h
index 9d1f31d84e..bdaa6d7c9e 100644
--- a/Userland/Libraries/LibGUI/GMLLexer.h
+++ b/Userland/Libraries/LibGUI/GML/Lexer.h
@@ -8,7 +8,7 @@
#include <AK/StringView.h>
-namespace GUI {
+namespace GUI::GML {
#define FOR_EACH_TOKEN_TYPE \
__TOKEN(Unknown) \
@@ -21,12 +21,12 @@ namespace GUI {
__TOKEN(Colon) \
__TOKEN(JsonValue)
-struct GMLPosition {
+struct Position {
size_t line;
size_t column;
};
-struct GMLToken {
+struct Token {
enum class Type {
#define __TOKEN(x) x,
FOR_EACH_TOKEN_TYPE
@@ -47,15 +47,15 @@ struct GMLToken {
Type m_type { Type::Unknown };
StringView m_view;
- GMLPosition m_start;
- GMLPosition m_end;
+ Position m_start;
+ Position m_end;
};
-class GMLLexer {
+class Lexer {
public:
- GMLLexer(StringView);
+ Lexer(StringView);
- Vector<GMLToken> lex();
+ Vector<Token> lex();
private:
char peek(size_t offset = 0) const;
@@ -63,7 +63,7 @@ private:
StringView m_input;
size_t m_index { 0 };
- GMLPosition m_position { 0, 0 };
+ Position m_position { 0, 0 };
};
}
diff --git a/Userland/Libraries/LibGUI/GMLParser.cpp b/Userland/Libraries/LibGUI/GML/Parser.cpp
index 2ef1b995e7..2e7e71b225 100644
--- a/Userland/Libraries/LibGUI/GMLParser.cpp
+++ b/Userland/Libraries/LibGUI/GML/Parser.cpp
@@ -1,40 +1,41 @@
/*
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2022, kleines Filmröllchen <filmroellchen@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
+#include "Parser.h"
+#include "Lexer.h"
#include <AK/GenericLexer.h>
#include <AK/JsonObject.h>
#include <AK/JsonValue.h>
#include <AK/Queue.h>
-#include <LibGUI/GMLLexer.h>
-#include <LibGUI/GMLParser.h>
-namespace GUI {
+namespace GUI::GML {
-static Optional<JsonValue> parse_core_object(Queue<GMLToken>& tokens)
+static Optional<JsonValue> parse_core_object(Queue<Token>& tokens)
{
JsonObject object;
JsonArray children;
auto peek = [&] {
if (tokens.is_empty())
- return GMLToken::Type::Unknown;
+ return Token::Type::Unknown;
return tokens.head().m_type;
};
- while (peek() == GMLToken::Type::Comment)
+ while (peek() == Token::Type::Comment)
tokens.dequeue();
- if (peek() != GMLToken::Type::ClassMarker) {
+ if (peek() != Token::Type::ClassMarker) {
dbgln("Expected class marker");
return {};
}
tokens.dequeue();
- if (peek() != GMLToken::Type::ClassName) {
+ if (peek() != Token::Type::ClassName) {
dbgln("Expected class name");
return {};
}
@@ -42,19 +43,19 @@ static Optional<JsonValue> parse_core_object(Queue<GMLToken>& tokens)
auto class_name = tokens.dequeue();
object.set("class", JsonValue(class_name.m_view));
- if (peek() != GMLToken::Type::LeftCurly) {
+ if (peek() != Token::Type::LeftCurly) {
// Empty object
return object;
}
tokens.dequeue();
for (;;) {
- if (peek() == GMLToken::Type::RightCurly) {
+ if (peek() == Token::Type::RightCurly) {
// End of object
break;
}
- if (peek() == GMLToken::Type::ClassMarker) {
+ if (peek() == Token::Type::ClassMarker) {
// It's a child object.
auto value = parse_core_object(tokens);
if (!value.has_value()) {
@@ -66,7 +67,7 @@ static Optional<JsonValue> parse_core_object(Queue<GMLToken>& tokens)
return {};
}
children.append(value.release_value());
- } else if (peek() == GMLToken::Type::Identifier) {
+ } else if (peek() == Token::Type::Identifier) {
// It's a property.
auto property_name = tokens.dequeue();
@@ -75,14 +76,14 @@ static Optional<JsonValue> parse_core_object(Queue<GMLToken>& tokens)
return {};
}
- if (peek() != GMLToken::Type::Colon) {
+ if (peek() != Token::Type::Colon) {
dbgln("Expected ':'");
return {};
}
tokens.dequeue();
JsonValue value;
- if (peek() == GMLToken::Type::ClassMarker) {
+ if (peek() == Token::Type::ClassMarker) {
auto parsed_value = parse_core_object(tokens);
if (!parsed_value.has_value())
return {};
@@ -91,7 +92,7 @@ static Optional<JsonValue> parse_core_object(Queue<GMLToken>& tokens)
return {};
}
value = parsed_value.release_value();
- } else if (peek() == GMLToken::Type::JsonValue) {
+ } else if (peek() == Token::Type::JsonValue) {
auto value_string = tokens.dequeue();
auto parsed_value = JsonValue::from_string(value_string.m_view);
if (parsed_value.is_error()) {
@@ -101,7 +102,7 @@ static Optional<JsonValue> parse_core_object(Queue<GMLToken>& tokens)
value = parsed_value.release_value();
}
object.set(property_name.m_view, move(value));
- } else if (peek() == GMLToken::Type::Comment) {
+ } else if (peek() == Token::Type::Comment) {
tokens.dequeue();
} else {
dbgln("Expected child, property, comment, or }}");
@@ -109,7 +110,7 @@ static Optional<JsonValue> parse_core_object(Queue<GMLToken>& tokens)
}
}
- if (peek() != GMLToken::Type::RightCurly) {
+ if (peek() != Token::Type::RightCurly) {
dbgln("Expected }}");
return {};
}
@@ -123,9 +124,9 @@ static Optional<JsonValue> parse_core_object(Queue<GMLToken>& tokens)
JsonValue parse_gml(StringView string)
{
- auto lexer = GMLLexer(string);
+ auto lexer = Lexer(string);
- Queue<GMLToken> tokens;
+ Queue<Token> tokens;
for (auto& token : lexer.lex())
tokens.enqueue(token);
diff --git a/Userland/Libraries/LibGUI/GMLParser.h b/Userland/Libraries/LibGUI/GML/Parser.h
index 4670199a6e..041fd76914 100644
--- a/Userland/Libraries/LibGUI/GMLParser.h
+++ b/Userland/Libraries/LibGUI/GML/Parser.h
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2022, kleines Filmröllchen <filmroellchen@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -8,7 +9,7 @@
#include <AK/Forward.h>
-namespace GUI {
+namespace GUI::GML {
JsonValue parse_gml(StringView);
diff --git a/Userland/Libraries/LibGUI/GMLSyntaxHighlighter.cpp b/Userland/Libraries/LibGUI/GML/SyntaxHighlighter.cpp
index ff676d94ef..4a6e3f3344 100644
--- a/Userland/Libraries/LibGUI/GMLSyntaxHighlighter.cpp
+++ b/Userland/Libraries/LibGUI/GML/SyntaxHighlighter.cpp
@@ -4,43 +4,43 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
-#include <LibGUI/GMLLexer.h>
-#include <LibGUI/GMLSyntaxHighlighter.h>
+#include "SyntaxHighlighter.h"
+#include "Lexer.h"
#include <LibGfx/Palette.h>
-namespace GUI {
+namespace GUI::GML {
-static Syntax::TextStyle style_for_token_type(const Gfx::Palette& palette, GMLToken::Type type)
+static Syntax::TextStyle style_for_token_type(const Gfx::Palette& palette, Token::Type type)
{
switch (type) {
- case GMLToken::Type::LeftCurly:
- case GMLToken::Type::RightCurly:
+ case Token::Type::LeftCurly:
+ case Token::Type::RightCurly:
return { palette.syntax_punctuation() };
- case GMLToken::Type::ClassMarker:
+ case Token::Type::ClassMarker:
return { palette.syntax_keyword() };
- case GMLToken::Type::ClassName:
+ case Token::Type::ClassName:
return { palette.syntax_identifier(), true };
- case GMLToken::Type::Identifier:
+ case Token::Type::Identifier:
return { palette.syntax_identifier() };
- case GMLToken::Type::JsonValue:
+ case Token::Type::JsonValue:
return { palette.syntax_string() };
- case GMLToken::Type::Comment:
+ case Token::Type::Comment:
return { palette.syntax_comment() };
default:
return { palette.base_text() };
}
}
-bool GMLSyntaxHighlighter::is_identifier(u64 token) const
+bool SyntaxHighlighter::is_identifier(u64 token) const
{
- auto ini_token = static_cast<GUI::GMLToken::Type>(token);
- return ini_token == GUI::GMLToken::Type::Identifier;
+ auto ini_token = static_cast<Token::Type>(token);
+ return ini_token == Token::Type::Identifier;
}
-void GMLSyntaxHighlighter::rehighlight(const Palette& palette)
+void SyntaxHighlighter::rehighlight(const Palette& palette)
{
auto text = m_client->get_text();
- GMLLexer lexer(text);
+ Lexer lexer(text);
auto tokens = lexer.lex();
Vector<GUI::TextDocumentSpan> spans;
@@ -63,21 +63,21 @@ void GMLSyntaxHighlighter::rehighlight(const Palette& palette)
m_client->do_update();
}
-Vector<GMLSyntaxHighlighter::MatchingTokenPair> GMLSyntaxHighlighter::matching_token_pairs_impl() const
+Vector<SyntaxHighlighter::MatchingTokenPair> SyntaxHighlighter::matching_token_pairs_impl() const
{
static Vector<MatchingTokenPair> pairs;
if (pairs.is_empty()) {
- pairs.append({ static_cast<u64>(GMLToken::Type::LeftCurly), static_cast<u64>(GMLToken::Type::RightCurly) });
+ pairs.append({ static_cast<u64>(Token::Type::LeftCurly), static_cast<u64>(Token::Type::RightCurly) });
}
return pairs;
}
-bool GMLSyntaxHighlighter::token_types_equal(u64 token1, u64 token2) const
+bool SyntaxHighlighter::token_types_equal(u64 token1, u64 token2) const
{
- return static_cast<GUI::GMLToken::Type>(token1) == static_cast<GUI::GMLToken::Type>(token2);
+ return static_cast<Token::Type>(token1) == static_cast<Token::Type>(token2);
}
-GMLSyntaxHighlighter::~GMLSyntaxHighlighter()
+SyntaxHighlighter::~SyntaxHighlighter()
{
}
diff --git a/Userland/Libraries/LibGUI/GMLSyntaxHighlighter.h b/Userland/Libraries/LibGUI/GML/SyntaxHighlighter.h
index 399671ac6d..5b52bdacf2 100644
--- a/Userland/Libraries/LibGUI/GMLSyntaxHighlighter.h
+++ b/Userland/Libraries/LibGUI/GML/SyntaxHighlighter.h
@@ -8,12 +8,12 @@
#include <LibSyntax/Highlighter.h>
-namespace GUI {
+namespace GUI::GML {
-class GMLSyntaxHighlighter final : public Syntax::Highlighter {
+class SyntaxHighlighter final : public Syntax::Highlighter {
public:
- GMLSyntaxHighlighter() { }
- virtual ~GMLSyntaxHighlighter() override;
+ SyntaxHighlighter() { }
+ virtual ~SyntaxHighlighter() override;
virtual bool is_identifier(u64) const override;
diff --git a/Userland/Libraries/LibGUI/Widget.cpp b/Userland/Libraries/LibGUI/Widget.cpp
index 1fb396245b..f24ad8f835 100644
--- a/Userland/Libraries/LibGUI/Widget.cpp
+++ b/Userland/Libraries/LibGUI/Widget.cpp
@@ -11,7 +11,7 @@
#include <LibGUI/Application.h>
#include <LibGUI/BoxLayout.h>
#include <LibGUI/Event.h>
-#include <LibGUI/GMLParser.h>
+#include <LibGUI/GML/Parser.h>
#include <LibGUI/Layout.h>
#include <LibGUI/Menu.h>
#include <LibGUI/Painter.h>
@@ -1066,7 +1066,7 @@ bool Widget::load_from_gml(StringView gml_string)
bool Widget::load_from_gml(StringView gml_string, RefPtr<Core::Object> (*unregistered_child_handler)(const String&))
{
- auto value = parse_gml(gml_string);
+ auto value = GML::parse_gml(gml_string);
if (!value.is_object())
return false;
return load_from_json(value.as_object(), unregistered_child_handler);
diff --git a/Userland/Utilities/gml-format.cpp b/Userland/Utilities/gml-format.cpp
index 951cf5bf29..5a2812b5df 100644
--- a/Userland/Utilities/gml-format.cpp
+++ b/Userland/Utilities/gml-format.cpp
@@ -7,7 +7,7 @@
#include <LibCore/ArgsParser.h>
#include <LibCore/File.h>
#include <LibCore/System.h>
-#include <LibGUI/GMLFormatter.h>
+#include <LibGUI/GML/Formatter.h>
#include <LibMain/Main.h>
ErrorOr<bool> format_file(StringView, bool);
@@ -22,7 +22,8 @@ ErrorOr<bool> format_file(StringView path, bool inplace)
auto open_mode = inplace ? Core::OpenMode::ReadWrite : Core::OpenMode::ReadOnly;
file = TRY(Core::File::open(path, open_mode));
}
- auto formatted_gml = GUI::format_gml(file->read_all());
+ auto contents = file->read_all();
+ auto formatted_gml = GUI::GML::format_gml(contents);
if (formatted_gml.is_null()) {
warnln("Failed to parse GML!");
return false;