summaryrefslogtreecommitdiffstats
path: root/contrib/python/Pygments/py3/pygments/lexers/bdd.py
diff options
context:
space:
mode:
authorDevtools Arcadia <[email protected]>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <[email protected]>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/python/Pygments/py3/pygments/lexers/bdd.py
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/python/Pygments/py3/pygments/lexers/bdd.py')
-rw-r--r--contrib/python/Pygments/py3/pygments/lexers/bdd.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/contrib/python/Pygments/py3/pygments/lexers/bdd.py b/contrib/python/Pygments/py3/pygments/lexers/bdd.py
new file mode 100644
index 00000000000..99d2d2868fe
--- /dev/null
+++ b/contrib/python/Pygments/py3/pygments/lexers/bdd.py
@@ -0,0 +1,56 @@
+"""
+ pygments.lexers.bdd
+ ~~~~~~~~~~~~~~~~~~~
+
+ Lexer for BDD(Behavior-driven development).
+ More information: https://en.wikipedia.org/wiki/Behavior-driven_development
+
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from pygments.lexer import RegexLexer, include
+from pygments.token import Comment, Keyword, Name, String, Number, Text, Punctuation, Whitespace
+
+__all__ = ['BddLexer']
+
+class BddLexer(RegexLexer):
+ """
+ Lexer for BDD(Behavior-driven development), which highlights not only keywords,
+ but also comments, punctuations, strings, numbers, and variables.
+
+ .. versionadded:: 2.11
+ """
+
+ name = 'Bdd'
+ aliases = ['bdd']
+ filenames = ['*.feature']
+ mimetypes = ['text/x-bdd']
+
+ step_keywords = r'Given|When|Then|Add|And|Feature|Scenario Outline|Scenario|Background|Examples|But'
+
+ tokens = {
+ 'comments': [
+ (r'^\s*#.*$', Comment),
+ ],
+ 'miscellaneous': [
+ (r'(<|>|\[|\]|=|\||:|\(|\)|\{|\}|,|\.|;|-|_|\$)', Punctuation),
+ (r'((?<=\<)[^\\>]+(?=\>))', Name.Variable),
+ (r'"([^\"]*)"', String),
+ (r'^@\S+', Name.Label),
+ ],
+ 'numbers': [
+ (r'(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number),
+ ],
+ 'root': [
+ (r'\n|\s+', Whitespace),
+ (step_keywords, Keyword),
+ include('comments'),
+ include('miscellaneous'),
+ include('numbers'),
+ (r'\S+', Text),
+ ]
+ }
+
+ def analyse_text(self, text):
+ return