From 471fa7dbd52a9887d1fa40ffdfb392de737cec72 Mon Sep 17 00:00:00 2001 From: Brent Roose Date: Tue, 19 Mar 2024 11:59:06 +0100 Subject: [PATCH] Add yaml --- src/Highlighter.php | 3 + .../Patterns/YamlArrayBracketsPattern.php | 26 +++++++++ .../Yaml/Patterns/YamlColonPattern.php | 27 +++++++++ .../Yaml/Patterns/YamlCommentPattern.php | 26 +++++++++ .../Yaml/Patterns/YamlDashPattern.php | 26 +++++++++ .../YamlDoubleAccoladesValuePattern.php | 26 +++++++++ .../Patterns/YamlDoubleQuoteValuePattern.php | 26 +++++++++ .../Patterns/YamlObjectBracketsPattern.php | 26 +++++++++ .../Yaml/Patterns/YamlPipePattern.php | 26 +++++++++ .../Yaml/Patterns/YamlPropertyPattern.php | 27 +++++++++ .../Patterns/YamlSingleQuoteValuePattern.php | 26 +++++++++ .../Yaml/Patterns/YamlVariablePattern.php | 26 +++++++++ src/Languages/Yaml/YamlLanguage.php | 46 ++++++++++++++++ src/Themes/highlight-light-lite.css | 2 +- tests/Languages/Yaml/YamlLanguageTest.php | 55 +++++++++++++++++++ tests/test.md | 28 ++++------ 16 files changed, 405 insertions(+), 17 deletions(-) create mode 100644 src/Languages/Yaml/Patterns/YamlArrayBracketsPattern.php create mode 100644 src/Languages/Yaml/Patterns/YamlColonPattern.php create mode 100644 src/Languages/Yaml/Patterns/YamlCommentPattern.php create mode 100644 src/Languages/Yaml/Patterns/YamlDashPattern.php create mode 100644 src/Languages/Yaml/Patterns/YamlDoubleAccoladesValuePattern.php create mode 100644 src/Languages/Yaml/Patterns/YamlDoubleQuoteValuePattern.php create mode 100644 src/Languages/Yaml/Patterns/YamlObjectBracketsPattern.php create mode 100644 src/Languages/Yaml/Patterns/YamlPipePattern.php create mode 100644 src/Languages/Yaml/Patterns/YamlPropertyPattern.php create mode 100644 src/Languages/Yaml/Patterns/YamlSingleQuoteValuePattern.php create mode 100644 src/Languages/Yaml/Patterns/YamlVariablePattern.php create mode 100644 src/Languages/Yaml/YamlLanguage.php create mode 100644 tests/Languages/Yaml/YamlLanguageTest.php diff --git a/src/Highlighter.php b/src/Highlighter.php index 24f5419..e4f2cb2 100644 --- a/src/Highlighter.php +++ b/src/Highlighter.php @@ -9,6 +9,7 @@ use Tempest\Highlight\Languages\Html\HtmlLanguage; use Tempest\Highlight\Languages\Php\PhpLanguage; use Tempest\Highlight\Languages\Sql\SqlLanguage; +use Tempest\Highlight\Languages\Yaml\YamlLanguage; use Tempest\Highlight\Themes\CssTheme; use Tempest\Highlight\Tokens\GroupTokens; use Tempest\Highlight\Tokens\ParseTokens; @@ -28,6 +29,8 @@ public function __construct( ->setLanguage('html', new HtmlLanguage()) ->setLanguage('sql', new SqlLanguage()) ->setLanguage('blade', new BladeLanguage()) + ->setLanguage('yaml', new YamlLanguage()) + ->setLanguage('yml', new YamlLanguage()) ->setLanguage('css', new CssLanguage()); } diff --git a/src/Languages/Yaml/Patterns/YamlArrayBracketsPattern.php b/src/Languages/Yaml/Patterns/YamlArrayBracketsPattern.php new file mode 100644 index 0000000..af29785 --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlArrayBracketsPattern.php @@ -0,0 +1,26 @@ +(\[|\]))'; + } + + public function getTokenType(): TokenType + { + return TokenType::PROPERTY; + } +} diff --git a/src/Languages/Yaml/Patterns/YamlColonPattern.php b/src/Languages/Yaml/Patterns/YamlColonPattern.php new file mode 100644 index 0000000..3241622 --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlColonPattern.php @@ -0,0 +1,27 @@ +:)/m'; + } + + public function getTokenType(): TokenType + { + return TokenType::PROPERTY; + } +} diff --git a/src/Languages/Yaml/Patterns/YamlCommentPattern.php b/src/Languages/Yaml/Patterns/YamlCommentPattern.php new file mode 100644 index 0000000..e6725e1 --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlCommentPattern.php @@ -0,0 +1,26 @@ +\#(.)*)'; + } + + public function getTokenType(): TokenType + { + return TokenType::COMMENT; + } +} diff --git a/src/Languages/Yaml/Patterns/YamlDashPattern.php b/src/Languages/Yaml/Patterns/YamlDashPattern.php new file mode 100644 index 0000000..7283c07 --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlDashPattern.php @@ -0,0 +1,26 @@ +-)/m'; + } + + public function getTokenType(): TokenType + { + return TokenType::PROPERTY; + } +} diff --git a/src/Languages/Yaml/Patterns/YamlDoubleAccoladesValuePattern.php b/src/Languages/Yaml/Patterns/YamlDoubleAccoladesValuePattern.php new file mode 100644 index 0000000..6c66096 --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlDoubleAccoladesValuePattern.php @@ -0,0 +1,26 @@ +(\{\{|\}\}))'; + } + + public function getTokenType(): TokenType + { + return TokenType::VALUE; + } +} diff --git a/src/Languages/Yaml/Patterns/YamlDoubleQuoteValuePattern.php b/src/Languages/Yaml/Patterns/YamlDoubleQuoteValuePattern.php new file mode 100644 index 0000000..97831c7 --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlDoubleQuoteValuePattern.php @@ -0,0 +1,26 @@ +(.|\n)*?)\"'; + } + + public function getTokenType(): TokenType + { + return TokenType::VALUE; + } +} diff --git a/src/Languages/Yaml/Patterns/YamlObjectBracketsPattern.php b/src/Languages/Yaml/Patterns/YamlObjectBracketsPattern.php new file mode 100644 index 0000000..a59392d --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlObjectBracketsPattern.php @@ -0,0 +1,26 @@ +(\{|\}))'; + } + + public function getTokenType(): TokenType + { + return TokenType::PROPERTY; + } +} diff --git a/src/Languages/Yaml/Patterns/YamlPipePattern.php b/src/Languages/Yaml/Patterns/YamlPipePattern.php new file mode 100644 index 0000000..79e883f --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlPipePattern.php @@ -0,0 +1,26 @@ +\|)/m'; + } + + public function getTokenType(): TokenType + { + return TokenType::PROPERTY; + } +} diff --git a/src/Languages/Yaml/Patterns/YamlPropertyPattern.php b/src/Languages/Yaml/Patterns/YamlPropertyPattern.php new file mode 100644 index 0000000..e88ff2c --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlPropertyPattern.php @@ -0,0 +1,27 @@ +[\w-]+)\:'; + } + + public function getTokenType(): TokenType + { + return TokenType::KEYWORD; + } +} diff --git a/src/Languages/Yaml/Patterns/YamlSingleQuoteValuePattern.php b/src/Languages/Yaml/Patterns/YamlSingleQuoteValuePattern.php new file mode 100644 index 0000000..f6e92b7 --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlSingleQuoteValuePattern.php @@ -0,0 +1,26 @@ +(.|\n)*?)\''; + } + + public function getTokenType(): TokenType + { + return TokenType::VALUE; + } +} diff --git a/src/Languages/Yaml/Patterns/YamlVariablePattern.php b/src/Languages/Yaml/Patterns/YamlVariablePattern.php new file mode 100644 index 0000000..aee42e0 --- /dev/null +++ b/src/Languages/Yaml/Patterns/YamlVariablePattern.php @@ -0,0 +1,26 @@ +[\w\s\.]+)\}\}'; + } + + public function getTokenType(): TokenType + { + return TokenType::PROPERTY; + } +} diff --git a/src/Languages/Yaml/YamlLanguage.php b/src/Languages/Yaml/YamlLanguage.php new file mode 100644 index 0000000..c0d38e9 --- /dev/null +++ b/src/Languages/Yaml/YamlLanguage.php @@ -0,0 +1,46 @@ +assertSame( + $expected, + $highlighter->parse($content, 'yaml'), + ); + } + + public static function data(): array + { + return [ + [<<php-version-stats-january-2024: + date: 2024-01-29 + string: "PHP version stats: January, 2024" + single-string: 'PHP version stats: January, 2024' + pipe: | + hello + world + array: [ true ] #comment + object: + - { title: "a", link: "prop" } + runs-on: ${{ matrix.os }} +TXT], + ]; + } +} diff --git a/tests/test.md b/tests/test.md index a1af176..5cb28b2 100644 --- a/tests/test.md +++ b/tests/test.md @@ -1,18 +1,14 @@ -```html - -
- -
- +```yaml +php-version-stats-january-2024: + date: 2024-01-29 + string: "PHP version stats: January, 2024" + single-string: 'PHP version stats: January, 2024' + pipe: | + hello + world + array: [ true ] #comment + object: + - { title: "a", link: "prop" } + runs-on: ${{ matrix.os }} ```