summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/pygments/lexers/thingsdb.py
diff options
context:
space:
mode:
authorcyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
committercyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
commit6d7ba58f880be618ade07f8ea080fe8c4bf8a896 (patch)
treeb1c931051ffcebd2bd9d61d98d6233ffa289bbce /venv/lib/python3.11/site-packages/pygments/lexers/thingsdb.py
parent4f884c9abc32990b4061a1bb6997b4b37e58ea0b (diff)
venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/pygments/lexers/thingsdb.py')
-rw-r--r--venv/lib/python3.11/site-packages/pygments/lexers/thingsdb.py116
1 files changed, 116 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/pygments/lexers/thingsdb.py b/venv/lib/python3.11/site-packages/pygments/lexers/thingsdb.py
new file mode 100644
index 0000000..13230f8
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/pygments/lexers/thingsdb.py
@@ -0,0 +1,116 @@
+"""
+ pygments.lexers.thingsdb
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Lexers for the ThingsDB language.
+
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from pygments.lexer import RegexLexer, include, bygroups
+from pygments.token import Comment, Keyword, Name, Number, String, Text, \
+ Operator, Punctuation, Whitespace
+
+__all__ = ['ThingsDBLexer']
+
+
+class ThingsDBLexer(RegexLexer):
+ """
+ Lexer for the ThingsDB programming language.
+
+ .. versionadded:: 2.9
+ """
+ name = 'ThingsDB'
+ aliases = ['ti', 'thingsdb']
+ filenames = ['*.ti']
+
+ tokens = {
+ 'root': [
+ include('expression'),
+ ],
+ 'expression': [
+ include('comments'),
+ include('whitespace'),
+
+ # numbers
+ (r'[-+]?0b[01]+', Number.Bin),
+ (r'[-+]?0o[0-8]+', Number.Oct),
+ (r'([-+]?0x[0-9a-fA-F]+)', Number.Hex),
+ (r'[-+]?[0-9]+', Number.Integer),
+ (r'[-+]?((inf|nan)([^0-9A-Za-z_]|$)|[0-9]*\.[0-9]+(e[+-][0-9]+)?)',
+ Number.Float),
+
+ # strings
+ (r'(?:"(?:[^"]*)")+', String.Double),
+ (r"(?:'(?:[^']*)')+", String.Single),
+
+ # literals
+ (r'(true|false|nil)\b', Keyword.Constant),
+
+ # regular expressions
+ (r'(/[^/\\]*(?:\\.[^/\\]*)*/i?)', String.Regex),
+
+ # thing id's
+ (r'#[0-9]+', Comment.Preproc),
+
+ # name, assignments and functions
+ include('names'),
+
+ (r'[(){}\[\],;]', Punctuation),
+ (r'[+\-*/%&|<>^!~@=:?]', Operator),
+ ],
+ 'names': [
+ (r'(\.)'
+ r'(add|call|contains|del|endswith|extend|filter|find|findindex|'
+ r'get|has|id|indexof|keys|len|lower|map|pop|push|remove|set|sort|'
+ r'splice|startswith|test|unwrap|upper|values|wrap)'
+ r'(\()',
+ bygroups(Name.Function, Name.Function, Punctuation), 'arguments'),
+ (r'(array|assert|assert_err|auth_err|backup_info|backups_info|'
+ r'bad_data_err|bool|closure|collection_info|collections_info|'
+ r'counters|deep|del_backup|del_collection|del_expired|del_node|'
+ r'del_procedure|del_token|del_type|del_user|err|float|'
+ r'forbidden_err|grant|int|isarray|isascii|isbool|isbytes|iserr|'
+ r'isfloat|isinf|isint|islist|isnan|isnil|israw|isset|isstr|'
+ r'isthing|istuple|isutf8|lookup_err|max_quota_err|mod_type|new|'
+ r'new_backup|new_collection|new_node|new_procedure|new_token|'
+ r'new_type|new_user|node_err|node_info|nodes_info|now|'
+ r'num_arguments_err|operation_err|overflow_err|procedure_doc|'
+ r'procedure_info|procedures_info|raise|refs|rename_collection|'
+ r'rename_user|reset_counters|return|revoke|run|set_log_level|set|'
+ r'set_quota|set_type|shutdown|str|syntax_err|thing|try|type|'
+ r'type_err|type_count|type_info|types_info|user_info|users_info|'
+ r'value_err|wse|zero_div_err)'
+ r'(\()',
+ bygroups(Name.Function, Punctuation),
+ 'arguments'),
+ (r'(\.[A-Za-z_][0-9A-Za-z_]*)'
+ r'(\s*)(=)',
+ bygroups(Name.Attribute, Text, Operator)),
+ (r'\.[A-Za-z_][0-9A-Za-z_]*', Name.Attribute),
+ (r'([A-Za-z_][0-9A-Za-z_]*)(\s*)(=)',
+ bygroups(Name.Variable, Text, Operator)),
+ (r'[A-Za-z_][0-9A-Za-z_]*', Name.Variable),
+ ],
+ 'whitespace': [
+ (r'\n', Whitespace),
+ (r'\s+', Whitespace),
+ ],
+ 'comments': [
+ (r'//(.*?)\n', Comment.Single),
+ (r'/\*', Comment.Multiline, 'comment'),
+ ],
+ 'comment': [
+ (r'[^*/]+', Comment.Multiline),
+ (r'/\*', Comment.Multiline, '#push'),
+ (r'\*/', Comment.Multiline, '#pop'),
+ (r'[*/]', Comment.Multiline),
+ ],
+ 'arguments': [
+ include('expression'),
+ (',', Punctuation),
+ (r'\(', Punctuation, '#push'),
+ (r'\)', Punctuation, '#pop'),
+ ],
+ }