From 3804d91118091ebf6580d3d1ca4d11dbac7f7a5a Mon Sep 17 00:00:00 2001 From: James Westman Date: Wed, 24 Nov 2021 19:12:59 -0600 Subject: [PATCH] tokenizer: Fix multiline comment regex --- gtkblueprinttool/tokenizer.py | 2 +- tests/samples/comments.blp | 15 +++++++++++++++ tests/samples/comments.ui | 9 +++++++++ tests/test_samples.py | 1 + 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/samples/comments.blp create mode 100644 tests/samples/comments.ui diff --git a/gtkblueprinttool/tokenizer.py b/gtkblueprinttool/tokenizer.py index 0368899..76ae2ca 100644 --- a/gtkblueprinttool/tokenizer.py +++ b/gtkblueprinttool/tokenizer.py @@ -57,7 +57,7 @@ _tokens = [ (TokenType.CLOSE_BLOCK, r"\}"), (TokenType.STMT_END, r";"), (TokenType.WHITESPACE, r"\s+"), - (TokenType.COMMENT, r"/\*[\s\S]*\*/"), + (TokenType.COMMENT, r"\/\*[\s\S]*?\*\/"), (TokenType.COMMENT, r"\/\/[^\n]*"), (TokenType.OPEN_BRACKET, r"\["), (TokenType.CLOSE_BRACKET, r"\]"), diff --git a/tests/samples/comments.blp b/tests/samples/comments.blp new file mode 100644 index 0000000..e0adfc6 --- /dev/null +++ b/tests/samples/comments.blp @@ -0,0 +1,15 @@ +using Gtk 4.0; +using GObject 2.0; + +GObject.Object { + /* multiline-style comment 1 */ +} + +Gtk.Label { + /* Translators: multiline-style comment 2 */ + label: _("Test"); // single-line comment + /**/ visible: false; /**/ +} + +/* Note: The output XML does not need to contain translator comments. The + translation tooling reads blueprint files, not the generated files. */ diff --git a/tests/samples/comments.ui b/tests/samples/comments.ui new file mode 100644 index 0000000..b916a09 --- /dev/null +++ b/tests/samples/comments.ui @@ -0,0 +1,9 @@ + + + + + + Test + false + + diff --git a/tests/test_samples.py b/tests/test_samples.py index 13f61b3..b8b6110 100644 --- a/tests/test_samples.py +++ b/tests/test_samples.py @@ -96,6 +96,7 @@ class TestSamples(unittest.TestCase): self.assert_sample("binding") self.assert_sample("child_type") self.assert_sample("combo_box_text") + self.assert_sample("comments") self.assert_sample("enum") self.assert_sample("file_filter") self.assert_sample("flags")