diff --git a/src/Highlighter.php b/src/Highlighter.php index 1c76e06..1e24796 100644 --- a/src/Highlighter.php +++ b/src/Highlighter.php @@ -17,6 +17,7 @@ use Tempest\Highlight\Languages\JavaScript\JavaScriptLanguage; use Tempest\Highlight\Languages\Json\JsonLanguage; use Tempest\Highlight\Languages\Php\PhpLanguage; +use Tempest\Highlight\Languages\Python\PythonLanguage; use Tempest\Highlight\Languages\Sql\SqlLanguage; use Tempest\Highlight\Languages\Text\TextLanguage; use Tempest\Highlight\Languages\Twig\TwigLanguage; @@ -49,6 +50,7 @@ public function __construct( ->addLanguage(new JavaScriptLanguage()) ->addLanguage(new JsonLanguage()) ->addLanguage(new PhpLanguage()) + ->addLanguage(new PythonLanguage()) ->addLanguage(new SqlLanguage()) ->addLanguage(new XmlLanguage()) ->addLanguage(new YamlLanguage()) diff --git a/src/Languages/Python/Patterns/PyArgumentPattern.php b/src/Languages/Python/Patterns/PyArgumentPattern.php new file mode 100644 index 0000000..fd5e1e4 --- /dev/null +++ b/src/Languages/Python/Patterns/PyArgumentPattern.php @@ -0,0 +1,24 @@ +\w+)(s*=)'; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::VARIABLE; + } +} diff --git a/src/Languages/Python/Patterns/PyBooleanPattern.php b/src/Languages/Python/Patterns/PyBooleanPattern.php new file mode 100644 index 0000000..dd7f83d --- /dev/null +++ b/src/Languages/Python/Patterns/PyBooleanPattern.php @@ -0,0 +1,24 @@ +(?:False|None|True))\b'; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::TYPE; + } +} diff --git a/src/Languages/Python/Patterns/PyBuiltinPattern.php b/src/Languages/Python/Patterns/PyBuiltinPattern.php new file mode 100644 index 0000000..60275bb --- /dev/null +++ b/src/Languages/Python/Patterns/PyBuiltinPattern.php @@ -0,0 +1,38 @@ +builtinFunctions); + + return "\b(?(?:{$builtinFunctions}))\b"; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::TYPE; + } +} diff --git a/src/Languages/Python/Patterns/PyClassNamePattern.php b/src/Languages/Python/Patterns/PyClassNamePattern.php new file mode 100644 index 0000000..b667051 --- /dev/null +++ b/src/Languages/Python/Patterns/PyClassNamePattern.php @@ -0,0 +1,27 @@ +\w*)(?=[\s*\:(])'; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::PROPERTY; + } +} diff --git a/src/Languages/Python/Patterns/PyCommentPattern.php b/src/Languages/Python/Patterns/PyCommentPattern.php new file mode 100644 index 0000000..bb96a8d --- /dev/null +++ b/src/Languages/Python/Patterns/PyCommentPattern.php @@ -0,0 +1,24 @@ +#.*)'; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::COMMENT; + } +} diff --git a/src/Languages/Python/Patterns/PyDecoratorPattern.php b/src/Languages/Python/Patterns/PyDecoratorPattern.php new file mode 100644 index 0000000..7989504 --- /dev/null +++ b/src/Languages/Python/Patterns/PyDecoratorPattern.php @@ -0,0 +1,27 @@ +@\s*\w*(?:\.\w+)*)'; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::PROPERTY; + } +} diff --git a/src/Languages/Python/Patterns/PyFunctionPattern.php b/src/Languages/Python/Patterns/PyFunctionPattern.php new file mode 100644 index 0000000..cc92274 --- /dev/null +++ b/src/Languages/Python/Patterns/PyFunctionPattern.php @@ -0,0 +1,26 @@ +\w*)(?=\s*\()'; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::PROPERTY; + } +} diff --git a/src/Languages/Python/Patterns/PyKeywordPattern.php b/src/Languages/Python/Patterns/PyKeywordPattern.php new file mode 100644 index 0000000..c5a1554 --- /dev/null +++ b/src/Languages/Python/Patterns/PyKeywordPattern.php @@ -0,0 +1,33 @@ +keywords); + + return "\b(?(?:_(?=\s*:){$keywords}))\b"; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::KEYWORD; + } +} diff --git a/src/Languages/Python/Patterns/PyOperatorPattern.php b/src/Languages/Python/Patterns/PyOperatorPattern.php new file mode 100644 index 0000000..9920a9d --- /dev/null +++ b/src/Languages/Python/Patterns/PyOperatorPattern.php @@ -0,0 +1,24 @@ +([-+&%=]=?|!=|:=|>>=|<<=|\|=|\^=|\*\*?=?|\/\/?=?|<[<=]?|>[=>]?|[\|^~]))"; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::OPERATOR; + } +} diff --git a/src/Languages/Python/Patterns/PyTripleDoubleQuoteStringPattern.php b/src/Languages/Python/Patterns/PyTripleDoubleQuoteStringPattern.php new file mode 100644 index 0000000..7f249b7 --- /dev/null +++ b/src/Languages/Python/Patterns/PyTripleDoubleQuoteStringPattern.php @@ -0,0 +1,24 @@ +"""(.|\n)*?""")/m'; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::VALUE; + } +} diff --git a/src/Languages/Python/Patterns/PyTripleSingleQuoteStringPattern.php b/src/Languages/Python/Patterns/PyTripleSingleQuoteStringPattern.php new file mode 100644 index 0000000..7f12024 --- /dev/null +++ b/src/Languages/Python/Patterns/PyTripleSingleQuoteStringPattern.php @@ -0,0 +1,24 @@ +\'\'\'(.|\n)*?\'\'\')/m'; + } + + public function getTokenType(): TokenTypeEnum + { + return TokenTypeEnum::VALUE; + } +} diff --git a/src/Languages/Python/PythonLanguage.php b/src/Languages/Python/PythonLanguage.php new file mode 100644 index 0000000..6d13f1b --- /dev/null +++ b/src/Languages/Python/PythonLanguage.php @@ -0,0 +1,74 @@ +