-
-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
16 changed files
with
405 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: 'branches: [main]', output: ['[', ']'])] | ||
final readonly class YamlArrayBracketsPattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '(?<match>(\[|\]))'; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::PROPERTY; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: '- name: Setup problem matchers |', output: ':')] | ||
#[PatternTest(input: '- { link: "/blog/new-in-php-83" }', output: ':')] | ||
final readonly class YamlColonPattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '/^[\-\{\s\w]*(?<match>:)/m'; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::PROPERTY; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: '# comment', output: '# comment')] | ||
final readonly class YamlCommentPattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '(?<match>\#(.)*)'; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::COMMENT; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: '- name: Setup problem matchers |', output: '-')] | ||
final readonly class YamlDashPattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '/^[\s]*(?<match>-)/m'; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::PROPERTY; | ||
} | ||
} |
26 changes: 26 additions & 0 deletions
26
src/Languages/Yaml/Patterns/YamlDoubleAccoladesValuePattern.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: 'runs-on: ${{ matrix.os }}', output: ['{{', '}}'])] | ||
final readonly class YamlDoubleAccoladesValuePattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '(?<match>(\{\{|\}\}))'; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::VALUE; | ||
} | ||
} |
26 changes: 26 additions & 0 deletions
26
src/Languages/Yaml/Patterns/YamlDoubleQuoteValuePattern.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: 'bar: "baz"', output: 'baz')] | ||
final readonly class YamlDoubleQuoteValuePattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '\"(?<match>(.|\n)*?)\"'; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::VALUE; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: 'branches: { link: "/blog/new-in-php-83", title: "Whats new in PHP 8.3" }', output: ['{', '}'])] | ||
final readonly class YamlObjectBracketsPattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '(?<match>(\{|\}))'; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::PROPERTY; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: '- name: Setup problem matchers |', output: '|')] | ||
final readonly class YamlPipePattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '/^[-\s\w\:]+(?<match>\|)/m'; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::PROPERTY; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: 'name: Fix Styling', output: 'name')] | ||
#[PatternTest(input: 'property-name: value', output: 'property-name')] | ||
final readonly class YamlPropertyPattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '(?<match>[\w-]+)\:'; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::KEYWORD; | ||
} | ||
} |
26 changes: 26 additions & 0 deletions
26
src/Languages/Yaml/Patterns/YamlSingleQuoteValuePattern.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: "bar: 'baz'", output: 'baz')] | ||
final readonly class YamlSingleQuoteValuePattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '\'(?<match>(.|\n)*?)\''; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::VALUE; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml\Patterns; | ||
|
||
use Tempest\Highlight\IsPattern; | ||
use Tempest\Highlight\Pattern; | ||
use Tempest\Highlight\PatternTest; | ||
use Tempest\Highlight\Tokens\TokenType; | ||
|
||
#[PatternTest(input: 'runs-on: ${{ matrix.os }}', output: ' matrix.os ')] | ||
final readonly class YamlVariablePattern implements Pattern | ||
{ | ||
use IsPattern; | ||
|
||
public function getPattern(): string | ||
{ | ||
return '\$\{\{(?<match>[\w\s\.]+)\}\}'; | ||
} | ||
|
||
public function getTokenType(): TokenType | ||
{ | ||
return TokenType::PROPERTY; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Tempest\Highlight\Languages\Yaml; | ||
|
||
use Tempest\Highlight\Languages\Base\BaseLanguage; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlArrayBracketsPattern; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlColonPattern; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlCommentPattern; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlDashPattern; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlDoubleAccoladesValuePattern; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlDoubleQuoteValuePattern; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlObjectBracketsPattern; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlPipePattern; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlPropertyPattern; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlSingleQuoteValuePattern; | ||
use Tempest\Highlight\Languages\Yaml\Patterns\YamlVariablePattern; | ||
|
||
class YamlLanguage extends BaseLanguage | ||
{ | ||
public function getInjections(): array | ||
{ | ||
return [ | ||
...parent::getInjections(), | ||
]; | ||
} | ||
|
||
public function getPatterns(): array | ||
{ | ||
return [ | ||
...parent::getPatterns(), | ||
new YamlPropertyPattern(), | ||
new YamlDashPattern(), | ||
new YamlColonPattern(), | ||
new YamlPipePattern(), | ||
new YamlVariablePattern(), | ||
new YamlArrayBracketsPattern(), | ||
new YamlObjectBracketsPattern(), | ||
new YamlDoubleQuoteValuePattern(), | ||
new YamlSingleQuoteValuePattern(), | ||
new YamlCommentPattern(), | ||
new YamlDoubleAccoladesValuePattern(), | ||
]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.