pygments.rb 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +1 -1
  3. data/CHANGELOG.adoc +5 -0
  4. data/bench.rb +2 -2
  5. data/lib/pygments/lexer.rb +1 -1
  6. data/lib/pygments/mentos.py +6 -4
  7. data/lib/pygments/popen.rb +14 -7
  8. data/lib/pygments/version.rb +1 -1
  9. data/lib/pygments.rb +8 -2
  10. data/pygments.rb.gemspec +4 -4
  11. data/test/test_pygments.rb +13 -7
  12. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/AUTHORS +8 -1
  13. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/INSTALLER +0 -0
  14. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/LICENSE +0 -0
  15. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/METADATA +1 -1
  16. data/vendor/pygments-main/Pygments-2.10.0.dist-info/RECORD +524 -0
  17. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/REQUESTED +0 -0
  18. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/WHEEL +0 -0
  19. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/entry_points.txt +0 -0
  20. data/vendor/pygments-main/{Pygments-2.8.1.dist-info → Pygments-2.10.0.dist-info}/top_level.txt +0 -0
  21. data/vendor/pygments-main/bin/pygmentize +1 -1
  22. data/vendor/pygments-main/pygments/__init__.py +1 -1
  23. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -0
  24. data/vendor/pygments-main/pygments/formatters/html.py +20 -7
  25. data/vendor/pygments-main/pygments/formatters/pangomarkup.py +83 -0
  26. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +55 -14
  27. data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +401 -0
  28. data/vendor/pygments-main/pygments/lexers/_mapping.py +68 -52
  29. data/vendor/pygments-main/pygments/lexers/actionscript.py +2 -2
  30. data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
  31. data/vendor/pygments-main/pygments/lexers/amdgpu.py +9 -4
  32. data/vendor/pygments-main/pygments/lexers/apdlexer.py +448 -0
  33. data/vendor/pygments-main/pygments/lexers/apl.py +6 -3
  34. data/vendor/pygments-main/pygments/lexers/asc.py +51 -0
  35. data/vendor/pygments-main/pygments/lexers/asm.py +86 -58
  36. data/vendor/pygments-main/pygments/lexers/automation.py +1 -1
  37. data/vendor/pygments-main/pygments/lexers/bibtex.py +2 -2
  38. data/vendor/pygments-main/pygments/lexers/c_cpp.py +60 -33
  39. data/vendor/pygments-main/pygments/lexers/c_like.py +102 -3
  40. data/vendor/pygments-main/pygments/lexers/cddl.py +2 -2
  41. data/vendor/pygments-main/pygments/lexers/chapel.py +53 -29
  42. data/vendor/pygments-main/pygments/lexers/clean.py +6 -6
  43. data/vendor/pygments-main/pygments/lexers/configs.py +133 -43
  44. data/vendor/pygments-main/pygments/lexers/csound.py +2 -2
  45. data/vendor/pygments-main/pygments/lexers/devicetree.py +1 -1
  46. data/vendor/pygments-main/pygments/lexers/dotnet.py +1 -1
  47. data/vendor/pygments-main/pygments/lexers/erlang.py +1 -1
  48. data/vendor/pygments-main/pygments/lexers/floscript.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/futhark.py +5 -4
  50. data/vendor/pygments-main/pygments/lexers/gcodelexer.py +36 -0
  51. data/vendor/pygments-main/pygments/lexers/go.py +1 -1
  52. data/vendor/pygments-main/pygments/lexers/graphics.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/graphviz.py +5 -4
  54. data/vendor/pygments-main/pygments/lexers/gsql.py +92 -0
  55. data/vendor/pygments-main/pygments/lexers/haskell.py +4 -4
  56. data/vendor/pygments-main/pygments/lexers/haxe.py +1 -1
  57. data/vendor/pygments-main/pygments/lexers/installers.py +2 -2
  58. data/vendor/pygments-main/pygments/lexers/javascript.py +145 -127
  59. data/vendor/pygments-main/pygments/lexers/jslt.py +94 -0
  60. data/vendor/pygments-main/pygments/lexers/julia.py +135 -183
  61. data/vendor/pygments-main/pygments/lexers/jvm.py +262 -202
  62. data/vendor/pygments-main/pygments/lexers/kuin.py +299 -0
  63. data/vendor/pygments-main/pygments/lexers/lisp.py +18 -15
  64. data/vendor/pygments-main/pygments/lexers/markup.py +3 -3
  65. data/vendor/pygments-main/pygments/lexers/matlab.py +23 -10
  66. data/vendor/pygments-main/pygments/lexers/meson.py +155 -0
  67. data/vendor/pygments-main/pygments/lexers/mime.py +6 -21
  68. data/vendor/pygments-main/pygments/lexers/ml.py +1 -1
  69. data/vendor/pygments-main/pygments/lexers/nimrod.py +1 -1
  70. data/vendor/pygments-main/pygments/lexers/objective.py +3 -3
  71. data/vendor/pygments-main/pygments/lexers/parsers.py +1 -1
  72. data/vendor/pygments-main/pygments/lexers/procfile.py +43 -0
  73. data/vendor/pygments-main/pygments/lexers/promql.py +1 -1
  74. data/vendor/pygments-main/pygments/lexers/python.py +19 -5
  75. data/vendor/pygments-main/pygments/lexers/resource.py +1 -1
  76. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
  77. data/vendor/pygments-main/pygments/lexers/ruby.py +1 -1
  78. data/vendor/pygments-main/pygments/lexers/rust.py +9 -10
  79. data/vendor/pygments-main/pygments/lexers/scripting.py +7 -7
  80. data/vendor/pygments-main/pygments/lexers/shell.py +11 -8
  81. data/vendor/pygments-main/pygments/lexers/smithy.py +79 -0
  82. data/vendor/pygments-main/pygments/lexers/smv.py +1 -1
  83. data/vendor/pygments-main/pygments/lexers/special.py +15 -2
  84. data/vendor/pygments-main/pygments/lexers/supercollider.py +1 -1
  85. data/vendor/pygments-main/pygments/lexers/tcl.py +3 -3
  86. data/vendor/pygments-main/pygments/lexers/teal.py +88 -0
  87. data/vendor/pygments-main/pygments/lexers/templates.py +19 -19
  88. data/vendor/pygments-main/pygments/lexers/teraterm.py +1 -1
  89. data/vendor/pygments-main/pygments/lexers/testing.py +1 -1
  90. data/vendor/pygments-main/pygments/lexers/theorem.py +4 -2
  91. data/vendor/pygments-main/pygments/lexers/thingsdb.py +118 -0
  92. data/vendor/pygments-main/pygments/lexers/tnt.py +25 -15
  93. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
  94. data/vendor/pygments-main/pygments/lexers/webassembly.py +120 -0
  95. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  96. data/vendor/pygments-main/pygments/style.py +1 -1
  97. data/vendor/pygments-main/pygments/styles/__init__.py +2 -0
  98. data/vendor/pygments-main/pygments/styles/friendly.py +1 -0
  99. data/vendor/pygments-main/pygments/styles/gruvbox.py +107 -0
  100. data/vendor/pygments-main/pygments/styles/native.py +1 -0
  101. metadata +29 -14
  102. data/vendor/pygments-main/Pygments-2.8.1.dist-info/RECORD +0 -494
@@ -25,7 +25,7 @@ class NimrodLexer(RegexLexer):
25
25
  """
26
26
 
27
27
  name = 'Nimrod'
28
- aliases = ['nim', 'nimrod']
28
+ aliases = ['nimrod', 'nim']
29
29
  filenames = ['*.nim', '*.nimrod']
30
30
  mimetypes = ['text/x-nim']
31
31
 
@@ -412,7 +412,7 @@ class SwiftLexer(RegexLexer):
412
412
  ],
413
413
  'keywords': [
414
414
  (words((
415
- 'as', 'break', 'case', 'catch', 'continue', 'default', 'defer',
415
+ 'as', 'async', 'await', 'break', 'case', 'catch', 'continue', 'default', 'defer',
416
416
  'do', 'else', 'fallthrough', 'for', 'guard', 'if', 'in', 'is',
417
417
  'repeat', 'return', '#selector', 'switch', 'throw', 'try',
418
418
  'where', 'while'), suffix=r'\b'),
@@ -440,8 +440,8 @@ class SwiftLexer(RegexLexer):
440
440
  (r'(var|let)(\s+)([a-zA-Z_]\w*)', bygroups(Keyword.Declaration,
441
441
  Text, Name.Variable)),
442
442
  (words((
443
- 'class', 'deinit', 'enum', 'extension', 'func', 'import', 'init',
444
- 'internal', 'let', 'operator', 'private', 'protocol', 'public',
443
+ 'actor', 'associatedtype', 'class', 'deinit', 'enum', 'extension', 'func', 'import',
444
+ 'init', 'internal', 'let', 'operator', 'private', 'protocol', 'public',
445
445
  'static', 'struct', 'subscript', 'typealias', 'var'), suffix=r'\b'),
446
446
  Keyword.Declaration)
447
447
  ],
@@ -652,7 +652,7 @@ class AntlrActionScriptLexer(DelegatingLexer):
652
652
  """
653
653
 
654
654
  name = 'ANTLR With ActionScript Target'
655
- aliases = ['antlr-as', 'antlr-actionscript']
655
+ aliases = ['antlr-actionscript', 'antlr-as']
656
656
  filenames = ['*.G', '*.g']
657
657
 
658
658
  def __init__(self, **options):
@@ -0,0 +1,43 @@
1
+ """
2
+ pygments.lexers.procfile
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexer for Procfile file format.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ from pygments.lexer import RegexLexer, bygroups
12
+ from pygments.token import Name, Number, String, Text, Punctuation
13
+
14
+ __all__ = ["ProcfileLexer"]
15
+
16
+
17
+ class ProcfileLexer(RegexLexer):
18
+ """
19
+ Lexer for Procfile file format.
20
+
21
+ The format is used to run processes on Heroku or is used by Foreman or
22
+ Honcho tools.
23
+ For more information about the definition of the format, see:
24
+ https://devcenter.heroku.com/articles/procfile#procfile-format
25
+
26
+ .. versionadded:: 2.10
27
+ """
28
+ name = 'Procfile'
29
+ aliases = ['procfile']
30
+ filenames = ['Procfile']
31
+
32
+ tokens = {
33
+ 'root': [
34
+ (r'^([a-z]+)(:)', bygroups(Name.Label, Punctuation)),
35
+ (r'\s+', Text.Whitespace),
36
+ (r'"[^"]*"', String),
37
+ (r"'[^']*'", String),
38
+ (r'[0-9]+', Number.Integer),
39
+ (r'\$[a-zA-Z_][\w]*', Name.Variable),
40
+ (r'(\w+)(=)(\w+)', bygroups(Name.Variable, Punctuation, String)),
41
+ (r'([\w\-\./]+)', Text),
42
+ ],
43
+ }
@@ -166,7 +166,7 @@ class PromQLLexer(RegexLexer):
166
166
  (r"\n", Whitespace),
167
167
  (r"\s+", Whitespace),
168
168
  (r",", Punctuation),
169
- (r'([_a-zA-Z][a-zA-Z0-9_]*?)(\s*?)(=~|!=|=|~!)(\s*?)(")(.*?)(")',
169
+ (r'([_a-zA-Z][a-zA-Z0-9_]*?)(\s*?)(=~|!=|=|!~)(\s*?)("|\')(.*?)("|\')',
170
170
  bygroups(Name.Label, Whitespace, Operator, Whitespace,
171
171
  Punctuation, String, Punctuation)),
172
172
  ],
@@ -160,6 +160,7 @@ class PythonLexer(RegexLexer):
160
160
  ("([uUbB]?)(')", bygroups(String.Affix, String.Single),
161
161
  combined('stringescape', 'sqs')),
162
162
  (r'[^\S\n]+', Text),
163
+ include('numbers'),
163
164
  (r'!=|==|<<|>>|:=|[-~+/*%=<>&^|.]', Operator),
164
165
  (r'[]{}:(),;[]', Punctuation),
165
166
  (r'(in|is|and|or|not)\b', Operator.Word),
@@ -168,7 +169,6 @@ class PythonLexer(RegexLexer):
168
169
  include('magicfuncs'),
169
170
  include('magicvars'),
170
171
  include('name'),
171
- include('numbers'),
172
172
  ],
173
173
  'expr-inside-fstring': [
174
174
  (r'[{([]', Punctuation, 'expr-inside-fstring-inner'),
@@ -727,7 +727,7 @@ class PythonTracebackLexer(RegexLexer):
727
727
  (r'^( File )("[^"]+")(, line )(\d+)(\n)',
728
728
  bygroups(Text, Name.Builtin, Text, Number, Text)),
729
729
  (r'^( )(.+)(\n)',
730
- bygroups(Text, using(PythonLexer), Text)),
730
+ bygroups(Text, using(PythonLexer), Text), 'markers'),
731
731
  (r'^([ \t]*)(\.\.\.)(\n)',
732
732
  bygroups(Text, Comment, Text)), # for doctests...
733
733
  (r'^([^:]+)(: )(.+)(\n)',
@@ -735,6 +735,15 @@ class PythonTracebackLexer(RegexLexer):
735
735
  (r'^([a-zA-Z_][\w.]*)(:?\n)',
736
736
  bygroups(Generic.Error, Text), '#pop')
737
737
  ],
738
+ 'markers': [
739
+ # Either `PEP 657 <https://www.python.org/dev/peps/pep-0657/>`
740
+ # error locations in Python 3.11+, or single-caret markers
741
+ # for syntax errors before that.
742
+ (r'^( {4,})(\^+)(\n)',
743
+ bygroups(Text, Punctuation.Marker, Text),
744
+ '#pop'),
745
+ default('#pop'),
746
+ ],
738
747
  }
739
748
 
740
749
 
@@ -773,7 +782,7 @@ class Python2TracebackLexer(RegexLexer):
773
782
  (r'^( File )("[^"]+")(, line )(\d+)(\n)',
774
783
  bygroups(Text, Name.Builtin, Text, Number, Text)),
775
784
  (r'^( )(.+)(\n)',
776
- bygroups(Text, using(Python2Lexer), Text)),
785
+ bygroups(Text, using(Python2Lexer), Text), 'marker'),
777
786
  (r'^([ \t]*)(\.\.\.)(\n)',
778
787
  bygroups(Text, Comment, Text)), # for doctests...
779
788
  (r'^([^:]+)(: )(.+)(\n)',
@@ -781,6 +790,11 @@ class Python2TracebackLexer(RegexLexer):
781
790
  (r'^([a-zA-Z_]\w*)(:?\n)',
782
791
  bygroups(Generic.Error, Text), '#pop')
783
792
  ],
793
+ 'marker': [
794
+ # For syntax errors.
795
+ (r'( {4,})(\^)', bygroups(Text, Punctuation.Marker), '#pop'),
796
+ default('#pop'),
797
+ ],
784
798
  }
785
799
 
786
800
 
@@ -845,14 +859,14 @@ class CythonLexer(RegexLexer):
845
859
  ],
846
860
  'builtins': [
847
861
  (words((
848
- '__import__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin',
862
+ '__import__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bint',
849
863
  'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr',
850
864
  'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'delattr',
851
865
  'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit',
852
866
  'file', 'filter', 'float', 'frozenset', 'getattr', 'globals',
853
867
  'hasattr', 'hash', 'hex', 'id', 'input', 'int', 'intern', 'isinstance',
854
868
  'issubclass', 'iter', 'len', 'list', 'locals', 'long', 'map', 'max',
855
- 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'property',
869
+ 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'Py_ssize_t',
856
870
  'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed',
857
871
  'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod',
858
872
  'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'unsigned',
@@ -24,7 +24,7 @@ class ResourceLexer(RegexLexer):
24
24
  .. versionadded:: 2.0
25
25
  """
26
26
  name = 'ResourceBundle'
27
- aliases = ['resource', 'resourcebundle']
27
+ aliases = ['resourcebundle', 'resource']
28
28
  filenames = []
29
29
 
30
30
  _types = (':table', ':array', ':string', ':bin', ':import', ':intvector',
@@ -23,7 +23,7 @@ class RNCCompactLexer(RegexLexer):
23
23
  """
24
24
 
25
25
  name = 'Relax-NG Compact'
26
- aliases = ['rnc', 'rng-compact']
26
+ aliases = ['rng-compact', 'rnc']
27
27
  filenames = ['*.rnc']
28
28
 
29
29
  tokens = {
@@ -33,7 +33,7 @@ class RubyLexer(ExtendedRegexLexer):
33
33
  """
34
34
 
35
35
  name = 'Ruby'
36
- aliases = ['rb', 'ruby', 'duby']
36
+ aliases = ['ruby', 'rb', 'duby']
37
37
  filenames = ['*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec',
38
38
  '*.rbx', '*.duby', 'Gemfile']
39
39
  mimetypes = ['text/x-ruby', 'application/x-ruby']
@@ -109,7 +109,7 @@ class RustLexer(RegexLexer):
109
109
  # Types in positions.
110
110
  (r'(?::|->)', Text, 'typename'),
111
111
  # Labels
112
- (r'(break|continue)(\s*)(\'[A-Za-z_]\w*)?',
112
+ (r'(break|continue)(\b\s*)(\'[A-Za-z_]\w*)?',
113
113
  bygroups(Keyword, Text.Whitespace, Name.Label)),
114
114
 
115
115
  # Character literals
@@ -135,7 +135,7 @@ class RustLexer(RegexLexer):
135
135
  # String literals
136
136
  (r'b"', String, 'bytestring'),
137
137
  (r'"', String, 'string'),
138
- (r'b?r(#*)".*?"\1', String),
138
+ (r'(?s)b?r(#*)".*?"\1', String),
139
139
 
140
140
  # Lifetime names
141
141
  (r"'", Operator, 'lifetime'),
@@ -152,6 +152,11 @@ class RustLexer(RegexLexer):
152
152
 
153
153
  # Attributes
154
154
  (r'#!?\[', Comment.Preproc, 'attribute['),
155
+
156
+ # Misc
157
+ # Lone hashes: not used in Rust syntax, but allowed in macro
158
+ # arguments, most famously for quote::quote!()
159
+ (r'#', Text),
155
160
  ],
156
161
  'comment': [
157
162
  (r'[^*/]+', Comment.Multiline),
@@ -208,16 +213,10 @@ class RustLexer(RegexLexer):
208
213
  'attribute_common': [
209
214
  (r'"', String, 'string'),
210
215
  (r'\[', Comment.Preproc, 'attribute['),
211
- (r'\(', Comment.Preproc, 'attribute('),
212
216
  ],
213
217
  'attribute[': [
214
218
  include('attribute_common'),
215
- (r'\];?', Comment.Preproc, '#pop'),
216
- (r'[^"\]]+', Comment.Preproc),
217
- ],
218
- 'attribute(': [
219
- include('attribute_common'),
220
- (r'\);?', Comment.Preproc, '#pop'),
221
- (r'[^")]+', Comment.Preproc),
219
+ (r'\]', Comment.Preproc, '#pop'),
220
+ (r'[^"\]\[]+', Comment.Preproc),
222
221
  ],
223
222
  }
@@ -168,9 +168,9 @@ class MoonScriptLexer(LuaLexer):
168
168
  .. versionadded:: 1.5
169
169
  """
170
170
 
171
- name = "MoonScript"
172
- aliases = ["moon", "moonscript"]
173
- filenames = ["*.moon"]
171
+ name = 'MoonScript'
172
+ aliases = ['moonscript', 'moon']
173
+ filenames = ['*.moon']
174
174
  mimetypes = ['text/x-moonscript', 'application/x-moonscript']
175
175
 
176
176
  tokens = {
@@ -237,7 +237,7 @@ class ChaiscriptLexer(RegexLexer):
237
237
  """
238
238
 
239
239
  name = 'ChaiScript'
240
- aliases = ['chai', 'chaiscript']
240
+ aliases = ['chaiscript', 'chai']
241
241
  filenames = ['*.chai']
242
242
  mimetypes = ['text/x-chaiscript', 'application/x-chaiscript']
243
243
 
@@ -1236,9 +1236,9 @@ class MiniScriptLexer(RegexLexer):
1236
1236
  .. versionadded:: 2.6
1237
1237
  """
1238
1238
 
1239
- name = "MiniScript"
1240
- aliases = ["ms", "miniscript"]
1241
- filenames = ["*.ms"]
1239
+ name = 'MiniScript'
1240
+ aliases = ['miniscript', 'ms']
1241
+ filenames = ['*.ms']
1242
1242
  mimetypes = ['text/x-minicript', 'application/x-miniscript']
1243
1243
 
1244
1244
  tokens = {
@@ -192,10 +192,13 @@ class ShellSessionBaseLexer(Lexer):
192
192
  [(0, Generic.Prompt, m.group(1))]))
193
193
  curcode += m.group(2)
194
194
  backslash_continuation = curcode.endswith('\\\n')
195
- elif line.startswith(self._ps2) and backslash_continuation:
196
- insertions.append((len(curcode),
197
- [(0, Generic.Prompt, line[:len(self._ps2)])]))
198
- curcode += line[len(self._ps2):]
195
+ elif backslash_continuation:
196
+ if line.startswith(self._ps2):
197
+ insertions.append((len(curcode),
198
+ [(0, Generic.Prompt, line[:len(self._ps2)])]))
199
+ curcode += line[len(self._ps2):]
200
+ else:
201
+ curcode += line
199
202
  backslash_continuation = curcode.endswith('\\\n')
200
203
  else:
201
204
  if insertions:
@@ -238,7 +241,7 @@ class BatchLexer(RegexLexer):
238
241
  .. versionadded:: 0.7
239
242
  """
240
243
  name = 'Batchfile'
241
- aliases = ['bat', 'batch', 'dosbatch', 'winbatch']
244
+ aliases = ['batch', 'bat', 'dosbatch', 'winbatch']
242
245
  filenames = ['*.bat', '*.cmd']
243
246
  mimetypes = ['application/x-dos-batch']
244
247
 
@@ -652,7 +655,7 @@ class PowerShellLexer(RegexLexer):
652
655
  .. versionadded:: 1.5
653
656
  """
654
657
  name = 'PowerShell'
655
- aliases = ['powershell', 'posh', 'ps1', 'psm1']
658
+ aliases = ['powershell', 'pwsh', 'posh', 'ps1', 'psm1']
656
659
  filenames = ['*.ps1', '*.psm1']
657
660
  mimetypes = ['text/x-powershell']
658
661
 
@@ -730,7 +733,7 @@ class PowerShellLexer(RegexLexer):
730
733
  (r'\[[a-z_\[][\w. `,\[\]]*\]', Name.Constant), # .net [type]s
731
734
  (r'-[a-z_]\w*', Name),
732
735
  (r'\w+', Name),
733
- (r'[.,;@{}\[\]$()=+*/\\&%!~?^`|<>-]|::', Punctuation),
736
+ (r'[.,;:@{}\[\]$()=+*/\\&%!~?^`|<>-]', Punctuation),
734
737
  ],
735
738
  'child': [
736
739
  (r'\)', Punctuation, '#pop'),
@@ -768,7 +771,7 @@ class PowerShellSessionLexer(ShellSessionBaseLexer):
768
771
  """
769
772
 
770
773
  name = 'PowerShell Session'
771
- aliases = ['ps1con']
774
+ aliases = ['pwsh-session', 'ps1con']
772
775
  filenames = []
773
776
  mimetypes = []
774
777
 
@@ -0,0 +1,79 @@
1
+ """
2
+ pygments.lexers.smithy
3
+ ~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for the Smithy IDL.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ import re
12
+
13
+ from pygments.lexer import RegexLexer, bygroups, words
14
+ from pygments.token import Text, Comment, Keyword, Name, String, \
15
+ Number, Whitespace, Punctuation
16
+
17
+ __all__ = ['SmithyLexer']
18
+
19
+
20
+ class SmithyLexer(RegexLexer):
21
+ """
22
+ For Smithy IDL
23
+
24
+ .. versionadded:: 2.10
25
+ """
26
+ name = 'Smithy'
27
+ filenames = ['*.smithy']
28
+ aliases = ['smithy']
29
+
30
+ flags = re.MULTILINE | re.UNICODE
31
+ unquoted = r'[A-Za-z0-9_\.#$-]+'
32
+ identifier = r"[A-Za-z0-9_\.#$-]+"
33
+
34
+ simple_shapes = (
35
+ 'use', 'byte', 'short', 'integer', 'long', 'float', 'document',
36
+ 'double', 'bigInteger', 'bigDecimal', 'boolean', 'blob', 'string',
37
+ 'timestamp',
38
+ )
39
+
40
+ aggregate_shapes = (
41
+ 'apply', 'list', 'map', 'set', 'structure', 'union', 'resource',
42
+ 'operation', 'service', 'trait'
43
+ )
44
+
45
+ tokens = {
46
+ 'root': [
47
+ (r'///.*$', Comment.Multiline),
48
+ (r'//.*$', Comment),
49
+ (r'@[0-9a-zA-Z\.#-]*', Name.Decorator),
50
+ (r'(=)', Name.Decorator),
51
+ (r'^(\$version)(:)(.+)',
52
+ bygroups(Keyword.Declaration, Name.Decorator, Name.Class)),
53
+ (r'^(namespace)(\s+' + identifier + r')\b',
54
+ bygroups(Keyword.Declaration, Name.Class)),
55
+ (words(simple_shapes,
56
+ prefix=r'^', suffix=r'(\s+' + identifier + r')\b'),
57
+ bygroups(Keyword.Declaration, Name.Class)),
58
+ (words(aggregate_shapes,
59
+ prefix=r'^', suffix=r'(\s+' + identifier + r')'),
60
+ bygroups(Keyword.Declaration, Name.Class)),
61
+ (r'^(metadata)(\s+.+)(\s*)(=)',
62
+ bygroups(Keyword.Declaration, Name.Class, Whitespace, Name.Decorator)),
63
+ (r"(true|false|null)", Keyword.Constant),
64
+ (r"(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)", Number),
65
+ (identifier + ":", Name.Label),
66
+ (identifier, Name.Variable.Class),
67
+ (r'\[', Text, "#push"),
68
+ (r'\]', Text, "#pop"),
69
+ (r'\(', Text, "#push"),
70
+ (r'\)', Text, "#pop"),
71
+ (r'\{', Text, "#push"),
72
+ (r'\}', Text, "#pop"),
73
+ (r'"{3}(\\\\|\n|\\")*"{3}', String.Doc),
74
+ (r'"(\\\\|\n|\\"|[^"])*"', String.Double),
75
+ (r"'(\\\\|\n|\\'|[^'])*'", String.Single),
76
+ (r'[:,]+', Punctuation),
77
+ (r'\s+', Whitespace),
78
+ ]
79
+ }
@@ -68,7 +68,7 @@ class NuSMVLexer(RegexLexer):
68
68
  (r'\-?\d+\b', Number.Integer),
69
69
  (r'0[su][bB]\d*_[01_]+', Number.Bin),
70
70
  (r'0[su][oO]\d*_[0-7_]+', Number.Oct),
71
- (r'0[su][dD]\d*_[\d_]+', Number.Dec),
71
+ (r'0[su][dD]\d*_[\d_]+', Number.Decimal),
72
72
  (r'0[su][hH]\d*_[\da-fA-F_]+', Number.Hex),
73
73
 
74
74
  # Whitespace, punctuation and the rest
@@ -12,11 +12,11 @@ import ast
12
12
  import re
13
13
 
14
14
  from pygments.lexer import Lexer
15
- from pygments.token import Token, Error, Text
15
+ from pygments.token import Token, Error, Text, Generic
16
16
  from pygments.util import get_choice_opt
17
17
 
18
18
 
19
- __all__ = ['TextLexer', 'RawTokenLexer']
19
+ __all__ = ['TextLexer', 'OutputLexer', 'RawTokenLexer']
20
20
 
21
21
 
22
22
  class TextLexer(Lexer):
@@ -36,6 +36,19 @@ class TextLexer(Lexer):
36
36
  return TextLexer.priority
37
37
 
38
38
 
39
+ class OutputLexer(Lexer):
40
+ """
41
+ Simple lexer that highlights everything as ``Token.Generic.Output``.
42
+
43
+ .. versionadded:: 2.10
44
+ """
45
+ name = 'Text output'
46
+ aliases = ['output']
47
+
48
+ def get_tokens_unprocessed(self, text):
49
+ yield 0, Generic.Output, text
50
+
51
+
39
52
  _ttype_cache = {}
40
53
 
41
54
  line_re = re.compile('.*?\n')
@@ -25,7 +25,7 @@ class SuperColliderLexer(RegexLexer):
25
25
  """
26
26
 
27
27
  name = 'SuperCollider'
28
- aliases = ['sc', 'supercollider']
28
+ aliases = ['supercollider', 'sc']
29
29
  filenames = ['*.sc', '*.scd']
30
30
  mimetypes = ['application/supercollider', 'text/supercollider', ]
31
31
 
@@ -10,7 +10,7 @@
10
10
 
11
11
  from pygments.lexer import RegexLexer, include, words
12
12
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
13
- Number
13
+ Number, Whitespace
14
14
  from pygments.util import shebang_matches
15
15
 
16
16
  __all__ = ['TclLexer']
@@ -79,13 +79,13 @@ class TclLexer(RegexLexer):
79
79
  (r'!=|==|<<|>>|<=|>=|&&|\|\||\*\*|[-+~!*/%<>&^|?:]', Operator),
80
80
  ],
81
81
  'data': [
82
- (r'\s+', Text),
82
+ (r'\s+', Whitespace),
83
83
  (r'0x[a-fA-F0-9]+', Number.Hex),
84
84
  (r'0[0-7]+', Number.Oct),
85
85
  (r'\d+\.\d+', Number.Float),
86
86
  (r'\d+', Number.Integer),
87
87
  (r'\$([\w.:-]+)', Name.Variable),
88
- (r'([\w.:-]+)', Text),
88
+ (r'([\w.,@:-]+)', Text),
89
89
  ],
90
90
  'params': [
91
91
  (r';', Keyword, '#pop'),
@@ -0,0 +1,88 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.teal
4
+ ~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexer for TEAL.
7
+
8
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ from pygments.lexer import RegexLexer, bygroups, include, words
13
+ from pygments.token import Comment, Name, Number, String, Text, Keyword
14
+
15
+ __all__ = ['TealLexer']
16
+
17
+ class TealLexer(RegexLexer):
18
+ """
19
+ For the `Transaction Execution Approval Language (TEAL)
20
+ <https://developer.algorand.org/docs/reference/teal/specification/>`
21
+
22
+ For more information about the grammar, see:
23
+ https://github.com/algorand/go-algorand/blob/master/data/transactions/logic/assembler.go
24
+
25
+ .. versionadded:: 2.9
26
+ """
27
+ name = 'teal'
28
+ aliases = ['teal']
29
+ filenames = ['*.teal']
30
+
31
+ keywords = words({
32
+ 'Sender', 'Fee', 'FirstValid', 'FirstValidTime', 'LastValid', 'Note',
33
+ 'Lease', 'Receiver', 'Amount', 'CloseRemainderTo', 'VotePK',
34
+ 'SelectionPK', 'VoteFirst', 'VoteLast', 'VoteKeyDilution', 'Type',
35
+ 'TypeEnum', 'XferAsset', 'AssetAmount', 'AssetSender', 'AssetReceiver',
36
+ 'AssetCloseTo', 'GroupIndex', 'TxID', 'ApplicationID', 'OnCompletion',
37
+ 'ApplicationArgs', 'NumAppArgs', 'Accounts', 'NumAccounts',
38
+ 'ApprovalProgram', 'ClearStateProgram', 'RekeyTo', 'ConfigAsset',
39
+ 'ConfigAssetTotal', 'ConfigAssetDecimals', 'ConfigAssetDefaultFrozen',
40
+ 'ConfigAssetUnitName', 'ConfigAssetName', 'ConfigAssetURL',
41
+ 'ConfigAssetMetadataHash', 'ConfigAssetManager', 'ConfigAssetReserve',
42
+ 'ConfigAssetFreeze', 'ConfigAssetClawback', 'FreezeAsset',
43
+ 'FreezeAssetAccount', 'FreezeAssetFrozen',
44
+ 'NoOp', 'OptIn', 'CloseOut', 'ClearState', 'UpdateApplication',
45
+ 'DeleteApplication',
46
+ 'MinTxnFee', 'MinBalance', 'MaxTxnLife', 'ZeroAddress', 'GroupSize',
47
+ 'LogicSigVersion', 'Round', 'LatestTimestamp', 'CurrentApplicationID',
48
+ 'AssetBalance', 'AssetFrozen',
49
+ 'AssetTotal', 'AssetDecimals', 'AssetDefaultFrozen', 'AssetUnitName',
50
+ 'AssetName', 'AssetURL', 'AssetMetadataHash', 'AssetManager',
51
+ 'AssetReserve', 'AssetFreeze', 'AssetClawback',
52
+ }, suffix = r'\b')
53
+
54
+ identifier = r'[^ \t\n]+(?=\/\/)|[^ \t\n]+'
55
+ newline = r'\r?\n'
56
+ tokens = {
57
+ 'root': [
58
+ include('whitespace'),
59
+ # pragmas match specifically on the space character
60
+ (r'^#pragma .*' + newline, Comment.Directive),
61
+ # labels must be followed by a space,
62
+ # but anything after that is ignored
63
+ ('(' + identifier + ':' + ')' + '([ \t].*)',
64
+ bygroups(Name.Label, Comment.Single)),
65
+ (identifier, Name.Function, 'function-args'),
66
+ ],
67
+ 'function-args': [
68
+ include('whitespace'),
69
+ (r'"', String, 'string'),
70
+ (r'(b(?:ase)?(?:32|64) ?)(\(?[a-zA-Z0-9+/=]+\)?)',
71
+ bygroups(String.Affix, String.Other)),
72
+ (r'[A-Z2-7]{58}', Number), # address
73
+ (r'0x[\da-fA-F]+', Number.Hex),
74
+ (r'\d+', Number.Integer),
75
+ (keywords, Keyword),
76
+ (identifier, Name.Attributes), # branch targets
77
+ (newline, Text, '#pop'),
78
+ ],
79
+ 'string': [
80
+ (r'\\(?:["nrt\\]|x\d\d)', String.Escape),
81
+ (r'[^\\\"\n]+', String),
82
+ (r'"', String, '#pop'),
83
+ ],
84
+ 'whitespace': [
85
+ (r'[ \t]+', Text),
86
+ (r'//[^\n]+', Comment.Single),
87
+ ],
88
+ }