summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/pygments/lexers/bdd.py
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.11/site-packages/pygments/lexers/bdd.py')
-rw-r--r--venv/lib/python3.11/site-packages/pygments/lexers/bdd.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/pygments/lexers/bdd.py b/venv/lib/python3.11/site-packages/pygments/lexers/bdd.py
new file mode 100644
index 0000000..8cf47f8
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/pygments/lexers/bdd.py
@@ -0,0 +1,58 @@
+"""
+ pygments.lexers.bdd
+ ~~~~~~~~~~~~~~~~~~~
+
+ Lexer for BDD(Behavior-driven development).
+ More information: https://en.wikipedia.org/wiki/Behavior-driven_development
+
+ :copyright: Copyright 2006-2023 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|'
+ r'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