pygments.rb 0.3.7 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. data/CHANGELOG +9 -0
  2. data/CHANGELOG.md +6 -0
  3. data/LICENSE +1 -1
  4. data/README.md +1 -1
  5. data/lexers +0 -0
  6. data/lib/pygments/version.rb +1 -1
  7. data/test/test_pygments.rb +0 -1
  8. data/vendor/pygments-main/AUTHORS +14 -1
  9. data/vendor/pygments-main/CHANGES +56 -6
  10. data/vendor/pygments-main/LICENSE +1 -1
  11. data/vendor/pygments-main/Makefile +1 -1
  12. data/vendor/pygments-main/REVISION +1 -0
  13. data/vendor/pygments-main/docs/generate.py +1 -1
  14. data/vendor/pygments-main/docs/src/api.txt +1 -1
  15. data/vendor/pygments-main/docs/src/index.txt +1 -1
  16. data/vendor/pygments-main/docs/src/integrate.txt +5 -0
  17. data/vendor/pygments-main/docs/src/java.txt +70 -0
  18. data/vendor/pygments-main/external/autopygmentize +64 -0
  19. data/vendor/pygments-main/external/markdown-processor.py +2 -2
  20. data/vendor/pygments-main/external/moin-parser.py +1 -1
  21. data/vendor/pygments-main/external/rst-directive-old.py +1 -1
  22. data/vendor/pygments-main/external/rst-directive.py +1 -1
  23. data/vendor/pygments-main/pygments/__init__.py +2 -2
  24. data/vendor/pygments-main/pygments/cmdline.py +14 -6
  25. data/vendor/pygments-main/pygments/console.py +1 -1
  26. data/vendor/pygments-main/pygments/filter.py +1 -1
  27. data/vendor/pygments-main/pygments/filters/__init__.py +1 -1
  28. data/vendor/pygments-main/pygments/formatter.py +1 -1
  29. data/vendor/pygments-main/pygments/formatters/__init__.py +1 -1
  30. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -1
  31. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  32. data/vendor/pygments-main/pygments/formatters/html.py +73 -2
  33. data/vendor/pygments-main/pygments/formatters/img.py +1 -1
  34. data/vendor/pygments-main/pygments/formatters/latex.py +1 -1
  35. data/vendor/pygments-main/pygments/formatters/other.py +1 -1
  36. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
  37. data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
  38. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -1
  39. data/vendor/pygments-main/pygments/formatters/terminal256.py +1 -1
  40. data/vendor/pygments-main/pygments/lexer.py +76 -12
  41. data/vendor/pygments-main/pygments/lexers/__init__.py +2 -2
  42. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
  43. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +1 -1
  44. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +4 -1
  45. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +1 -1
  46. data/vendor/pygments-main/pygments/lexers/_mapping.py +26 -10
  47. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +11 -0
  48. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +2 -2
  49. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +4 -2
  50. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +14 -3
  51. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +11 -0
  52. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +2 -2
  53. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +6 -6
  54. data/vendor/pygments-main/pygments/lexers/agile.py +6 -4
  55. data/vendor/pygments-main/pygments/lexers/asm.py +40 -2
  56. data/vendor/pygments-main/pygments/lexers/compiled.py +751 -438
  57. data/vendor/pygments-main/pygments/lexers/dalvik.py +2 -2
  58. data/vendor/pygments-main/pygments/lexers/dotnet.py +1 -1
  59. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  60. data/vendor/pygments-main/pygments/lexers/functional.py +6 -5
  61. data/vendor/pygments-main/pygments/lexers/hdl.py +3 -3
  62. data/vendor/pygments-main/pygments/lexers/jvm.py +130 -16
  63. data/vendor/pygments-main/pygments/lexers/math.py +250 -9
  64. data/vendor/pygments-main/pygments/lexers/other.py +518 -13
  65. data/vendor/pygments-main/pygments/lexers/parsers.py +3 -2
  66. data/vendor/pygments-main/pygments/lexers/shell.py +48 -2
  67. data/vendor/pygments-main/pygments/lexers/special.py +1 -1
  68. data/vendor/pygments-main/pygments/lexers/sql.py +1 -1
  69. data/vendor/pygments-main/pygments/lexers/templates.py +7 -6
  70. data/vendor/pygments-main/pygments/lexers/text.py +9 -9
  71. data/vendor/pygments-main/pygments/lexers/web.py +264 -51
  72. data/vendor/pygments-main/pygments/plugin.py +1 -1
  73. data/vendor/pygments-main/pygments/scanner.py +1 -1
  74. data/vendor/pygments-main/pygments/style.py +1 -1
  75. data/vendor/pygments-main/pygments/styles/__init__.py +1 -1
  76. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  77. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  78. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  79. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  80. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  81. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  82. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  83. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  84. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  85. data/vendor/pygments-main/pygments/styles/monokai.py +1 -1
  86. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  87. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  88. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  89. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  90. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  91. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  92. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  93. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  94. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  95. data/vendor/pygments-main/pygments/token.py +1 -1
  96. data/vendor/pygments-main/pygments/unistring.py +1 -1
  97. data/vendor/pygments-main/pygments/util.py +1 -1
  98. data/vendor/pygments-main/scripts/check_sources.py +2 -2
  99. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +2 -0
  100. data/vendor/pygments-main/scripts/find_codetags.py +1 -1
  101. data/vendor/pygments-main/scripts/find_error.py +5 -6
  102. data/vendor/pygments-main/setup.cfg +1 -0
  103. data/vendor/pygments-main/setup.py +6 -4
  104. data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
  105. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
  106. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
  107. data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
  108. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
  109. data/vendor/pygments-main/tests/examplefiles/classes.dylan +89 -4
  110. data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
  111. data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
  112. data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
  113. data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
  114. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +2 -2
  115. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
  116. data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
  117. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
  118. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
  119. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
  120. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +191 -701
  121. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
  122. data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
  123. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
  124. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
  125. data/vendor/pygments-main/tests/old_run.py +1 -1
  126. data/vendor/pygments-main/tests/run.py +3 -2
  127. data/vendor/pygments-main/tests/support/tags +36 -0
  128. data/vendor/pygments-main/tests/test_basic_api.py +3 -2
  129. data/vendor/pygments-main/tests/test_clexer.py +1 -1
  130. data/vendor/pygments-main/tests/test_cmdline.py +1 -1
  131. data/vendor/pygments-main/tests/test_examplefiles.py +1 -1
  132. data/vendor/pygments-main/tests/test_html_formatter.py +17 -1
  133. data/vendor/pygments-main/tests/test_latex_formatter.py +1 -1
  134. data/vendor/pygments-main/tests/test_perllexer.py +1 -1
  135. data/vendor/pygments-main/tests/test_regexlexer.py +1 -1
  136. data/vendor/pygments-main/tests/test_token.py +1 -1
  137. data/vendor/pygments-main/tests/test_using_api.py +1 -1
  138. data/vendor/pygments-main/tests/test_util.py +5 -4
  139. metadata +26 -2
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for parser generators.
7
7
 
8
- :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -738,7 +738,8 @@ class TreetopBaseLexer(RegexLexer):
738
738
  (r'[()]', Punctuation),
739
739
  (r'[?+*/&!~]', Operator),
740
740
  (r'\[(?:\\.|\[:\^?[a-z]+:\]|[^\\\]])+\]', String.Regex),
741
- (r'([0-9]*)(\.\.)([0-9]*)', bygroups(Number.Integer, Operator, Number.Integer)),
741
+ (r'([0-9]*)(\.\.)([0-9]*)',
742
+ bygroups(Number.Integer, Operator, Number.Integer)),
742
743
  (r'(<)([^>]+)(>)', bygroups(Punctuation, Name.Class, Punctuation)),
743
744
  (r'{', Punctuation, 'inline_module'),
744
745
  (r'\.', String.Regex),
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for various shells.
7
7
 
8
- :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -18,7 +18,7 @@ from pygments.util import shebang_matches
18
18
 
19
19
 
20
20
  __all__ = ['BashLexer', 'BashSessionLexer', 'TcshLexer', 'BatchLexer',
21
- 'PowerShellLexer']
21
+ 'PowerShellLexer', 'ShellSessionLexer']
22
22
 
23
23
  line_re = re.compile('.*?\n')
24
24
 
@@ -153,6 +153,52 @@ class BashSessionLexer(Lexer):
153
153
  yield pos+i, t, v
154
154
 
155
155
 
156
+ class ShellSessionLexer(Lexer):
157
+ """
158
+ Lexer for shell sessions that works with different command prompts
159
+
160
+ *New in Pygments 1.6.*
161
+ """
162
+
163
+ name = 'Shell Session'
164
+ aliases = ['shell-session']
165
+ filenames = ['*.shell-session']
166
+ mimetypes = ['application/x-sh-session']
167
+
168
+ def get_tokens_unprocessed(self, text):
169
+ bashlexer = BashLexer(**self.options)
170
+
171
+ pos = 0
172
+ curcode = ''
173
+ insertions = []
174
+
175
+ for match in line_re.finditer(text):
176
+ line = match.group()
177
+ m = re.match(r'^((?:\[?\S+@[^$#%]+)[$#%])(.*\n?)', line)
178
+ if m:
179
+ # To support output lexers (say diff output), the output
180
+ # needs to be broken by prompts whenever the output lexer
181
+ # changes.
182
+ if not insertions:
183
+ pos = match.start()
184
+
185
+ insertions.append((len(curcode),
186
+ [(0, Generic.Prompt, m.group(1))]))
187
+ curcode += m.group(2)
188
+ else:
189
+ if insertions:
190
+ toks = bashlexer.get_tokens_unprocessed(curcode)
191
+ for i, t, v in do_insertions(insertions, toks):
192
+ yield pos+i, t, v
193
+ yield match.start(), Generic.Output, line
194
+ insertions = []
195
+ curcode = ''
196
+ if insertions:
197
+ for i, t, v in do_insertions(insertions,
198
+ bashlexer.get_tokens_unprocessed(curcode)):
199
+ yield pos+i, t, v
200
+
201
+
156
202
  class BatchLexer(RegexLexer):
157
203
  """
158
204
  Lexer for the DOS/Windows Batch file format.
@@ -5,7 +5,7 @@
5
5
 
6
6
  Special lexers.
7
7
 
8
- :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -34,7 +34,7 @@
34
34
  The ``tests/examplefiles`` contains a few test files with data to be
35
35
  parsed by these lexers.
36
36
 
37
- :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
37
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
38
38
  :license: BSD, see LICENSE for details.
39
39
  """
40
40
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for various template engines' markup.
7
7
 
8
- :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -224,12 +224,14 @@ class VelocityLexer(RegexLexer):
224
224
  'variable': [
225
225
  (identifier, Name.Variable),
226
226
  (r'\(', Punctuation, 'funcparams'),
227
- (r'(\.)(' + identifier + r')', bygroups(Punctuation, Name.Variable), '#push'),
227
+ (r'(\.)(' + identifier + r')',
228
+ bygroups(Punctuation, Name.Variable), '#push'),
228
229
  (r'\}', Punctuation, '#pop'),
229
230
  (r'', Other, '#pop')
230
231
  ],
231
232
  'directiveparams': [
232
- (r'(&&|\|\||==?|!=?|[-<>+*%&\|\^/])|\b(eq|ne|gt|lt|ge|le|not|in)\b', Operator),
233
+ (r'(&&|\|\||==?|!=?|[-<>+*%&\|\^/])|\b(eq|ne|gt|lt|ge|le|not|in)\b',
234
+ Operator),
233
235
  (r'\[', Operator, 'rangeoperator'),
234
236
  (r'\b' + identifier + r'\b', Name.Function),
235
237
  include('funcparams')
@@ -261,7 +263,8 @@ class VelocityLexer(RegexLexer):
261
263
  rv += 0.15
262
264
  if re.search(r'#\{?foreach\}?\(.+?\).*?#\{?end\}?', text):
263
265
  rv += 0.15
264
- if re.search(r'\$\{?[a-zA-Z_][a-zA-Z0-9_]*(\([^)]*\))?(\.[a-zA-Z0-9_]+(\([^)]*\))?)*\}?', text):
266
+ if re.search(r'\$\{?[a-zA-Z_][a-zA-Z0-9_]*(\([^)]*\))?'
267
+ r'(\.[a-zA-Z0-9_]+(\([^)]*\))?)*\}?', text):
265
268
  rv += 0.01
266
269
  return rv
267
270
 
@@ -1651,7 +1654,6 @@ class LassoHtmlLexer(DelegatingLexer):
1651
1654
  'application/x-httpd-lasso[89]']
1652
1655
 
1653
1656
  def __init__(self, **options):
1654
- options['requiredelimiters'] = True
1655
1657
  super(LassoHtmlLexer, self).__init__(HtmlLexer, LassoLexer, **options)
1656
1658
 
1657
1659
  def analyse_text(text):
@@ -1678,7 +1680,6 @@ class LassoXmlLexer(DelegatingLexer):
1678
1680
  mimetypes = ['application/xml+lasso']
1679
1681
 
1680
1682
  def __init__(self, **options):
1681
- options['requiredelimiters'] = True
1682
1683
  super(LassoXmlLexer, self).__init__(XmlLexer, LassoLexer, **options)
1683
1684
 
1684
1685
  def analyse_text(text):
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for non-source code file types.
7
7
 
8
- :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -65,7 +65,7 @@ class RegeditLexer(RegexLexer):
65
65
  """
66
66
 
67
67
  name = 'reg'
68
- aliases = []
68
+ aliases = ['registry']
69
69
  filenames = ['*.reg']
70
70
  mimetypes = ['text/x-windows-registry']
71
71
 
@@ -616,7 +616,7 @@ class MoinWikiLexer(RegexLexer):
616
616
  (r'(\'\'\'?|\|\||`|__|~~|\^|,,|::)', Comment), # Formatting
617
617
  # Lists
618
618
  (r'^( +)([.*-])( )', bygroups(Text, Name.Builtin, Text)),
619
- (r'^( +)([a-zivx]{1,5}\.)( )', bygroups(Text, Name.Builtin, Text)),
619
+ (r'^( +)([a-z]{1,5}\.)( )', bygroups(Text, Name.Builtin, Text)),
620
620
  # Other Formatting
621
621
  (r'\[\[\w+.*?\]\]', Keyword), # Macro
622
622
  (r'(\[[^\s\]]+)(\s+[^\]]+?)?(\])',
@@ -1824,20 +1824,20 @@ class HxmlLexer(RegexLexer):
1824
1824
  # Targets and other options that take an argument
1825
1825
  (r'(-)(cpp|js|neko|x|as3|swf9?|swf-lib|php|xml|main|lib|D|resource|'
1826
1826
  r'cp|cmd)( +)(.+)',
1827
- bygroups(Punctuation, Keyword, Whitespace, String)),
1827
+ bygroups(Punctuation, Keyword, Whitespace, String)),
1828
1828
  # Options that take only numerical arguments
1829
1829
  (r'(-)(swf-version)( +)(\d+)',
1830
1830
  bygroups(Punctuation, Keyword, Number.Integer)),
1831
- # An Option that defines the size, the fps and the background
1831
+ # An Option that defines the size, the fps and the background
1832
1832
  # color of an flash movie
1833
- (r'(-)(swf-header)( +)(\d+)(:)(\d+)(:)(\d+)(:)([A-Fa-f0-9]{6})',
1833
+ (r'(-)(swf-header)( +)(\d+)(:)(\d+)(:)(\d+)(:)([A-Fa-f0-9]{6})',
1834
1834
  bygroups(Punctuation, Keyword, Whitespace, Number.Integer,
1835
1835
  Punctuation, Number.Integer, Punctuation, Number.Integer,
1836
- Punctuation, Number.Hex)),
1836
+ Punctuation, Number.Hex)),
1837
1837
  # options with two dashes that takes arguments
1838
1838
  (r'(--)(js-namespace|php-front|php-lib|remap|gen-hx-classes)( +)'
1839
- r'(.+)', bygroups(Punctuation, Keyword, Whitespace, String)),
1839
+ r'(.+)', bygroups(Punctuation, Keyword, Whitespace, String)),
1840
1840
  # Single line comment, multiline ones are not allowed.
1841
- (r'#.*', Comment.Single)
1841
+ (r'#.*', Comment.Single)
1842
1842
  ]
1843
1843
  }
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for web-related languages and markup.
7
7
 
8
- :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -27,7 +27,7 @@ __all__ = ['HtmlLexer', 'XmlLexer', 'JavascriptLexer', 'JsonLexer', 'CssLexer',
27
27
  'MxmlLexer', 'HaxeLexer', 'HamlLexer', 'SassLexer', 'ScssLexer',
28
28
  'ObjectiveJLexer', 'CoffeeScriptLexer', 'LiveScriptLexer',
29
29
  'DuelLexer', 'ScamlLexer', 'JadeLexer', 'XQueryLexer',
30
- 'DtdLexer', 'DartLexer', 'LassoLexer']
30
+ 'DtdLexer', 'DartLexer', 'LassoLexer', 'QmlLexer', 'TypeScriptLexer']
31
31
 
32
32
 
33
33
  class JavascriptLexer(RegexLexer):
@@ -791,7 +791,7 @@ class PhpLexer(RegexLexer):
791
791
 
792
792
  name = 'PHP'
793
793
  aliases = ['php', 'php3', 'php4', 'php5']
794
- filenames = ['*.php', '*.php[345]']
794
+ filenames = ['*.php', '*.php[345]', '*.inc']
795
795
  mimetypes = ['text/x-php']
796
796
 
797
797
  flags = re.IGNORECASE | re.DOTALL | re.MULTILINE
@@ -969,7 +969,8 @@ class DtdLexer(RegexLexer):
969
969
 
970
970
  'attlist': [
971
971
  include('common'),
972
- (r'CDATA|IDREFS|IDREF|ID|NMTOKENS|NMTOKEN|ENTITIES|ENTITY|NOTATION', Keyword.Constant),
972
+ (r'CDATA|IDREFS|IDREF|ID|NMTOKENS|NMTOKEN|ENTITIES|ENTITY|NOTATION',
973
+ Keyword.Constant),
973
974
  (r'#REQUIRED|#IMPLIED|#FIXED', Keyword.Constant),
974
975
  (r'xml:space|xml:lang', Keyword.Reserved),
975
976
  (r'[^>\s\|()?+*,]+', Name.Attribute),
@@ -1762,7 +1763,7 @@ class ScssLexer(RegexLexer):
1762
1763
  (r'(@include)( [\w-]+)', bygroups(Keyword, Name.Decorator), 'value'),
1763
1764
  (r'@extend', Keyword, 'selector'),
1764
1765
  (r'@[a-z0-9_-]+', Keyword, 'selector'),
1765
- (r'(\$[\w-]\w*)([ \t]*:)', bygroups(Name.Variable, Operator), 'value'),
1766
+ (r'(\$[\w-]*\w)([ \t]*:)', bygroups(Name.Variable, Operator), 'value'),
1766
1767
  (r'(?=[^;{}][;}])', Name.Attribute, 'attr'),
1767
1768
  (r'(?=[^;{}:]+:[^a-z])', Name.Attribute, 'attr'),
1768
1769
  (r'', Text, 'selector'),
@@ -2936,27 +2937,25 @@ class DartLexer(RegexLexer):
2936
2937
 
2937
2938
  tokens = {
2938
2939
  'root': [
2940
+ include('string_literal'),
2939
2941
  (r'#!(.*?)$', Comment.Preproc),
2940
- (r'(#)(import|library|source)', bygroups(Text, Keyword)),
2942
+ (r'\b(import|export)\b', Keyword, 'import_decl'),
2943
+ (r'\b(library|source|part of|part)\b', Keyword),
2941
2944
  (r'[^\S\n]+', Text),
2942
2945
  (r'//.*?\n', Comment.Single),
2943
2946
  (r'/\*.*?\*/', Comment.Multiline),
2944
- (r'(class|interface)(\s+)',
2947
+ (r'\b(class)\b(\s+)',
2945
2948
  bygroups(Keyword.Declaration, Text), 'class'),
2946
- (r'(assert|break|case|catch|continue|default|do|else|finally|for|'
2949
+ (r'\b(assert|break|case|catch|continue|default|do|else|finally|for|'
2947
2950
  r'if|in|is|new|return|super|switch|this|throw|try|while)\b',
2948
2951
  Keyword),
2949
- (r'(abstract|const|extends|factory|final|get|implements|'
2952
+ (r'\b(abstract|const|extends|factory|final|get|implements|'
2950
2953
  r'native|operator|set|static|typedef|var)\b', Keyword.Declaration),
2951
- (r'(bool|double|Dynamic|int|num|Object|String|void)', Keyword.Type),
2952
- (r'(false|null|true)', Keyword.Constant),
2953
- (r'@"(\\\\|\\"|[^"])*"', String.Double), # raw string
2954
- (r"@'(\\\\|\\'|[^'])*'", String.Single), # raw string
2955
- (r'"', String.Double, 'string_double'),
2956
- (r"'", String.Single, 'string_single'),
2954
+ (r'\b(bool|double|Dynamic|int|num|Object|String|void)\b', Keyword.Type),
2955
+ (r'\b(false|null|true)\b', Keyword.Constant),
2956
+ (r'[~!%^&*+=|?:<>/-]|as', Operator),
2957
2957
  (r'[a-zA-Z_$][a-zA-Z0-9_]*:', Name.Label),
2958
2958
  (r'[a-zA-Z_$][a-zA-Z0-9_]*', Name),
2959
- (r'[~!%^&*+=|?:<>/-]', Operator),
2960
2959
  (r'[(){}\[\],.;]', Punctuation),
2961
2960
  (r'0[xX][0-9a-fA-F]+', Number.Hex),
2962
2961
  # DIGIT+ (‘.’ DIGIT*)? EXPONENT?
@@ -2968,21 +2967,132 @@ class DartLexer(RegexLexer):
2968
2967
  'class': [
2969
2968
  (r'[a-zA-Z_$][a-zA-Z0-9_]*', Name.Class, '#pop')
2970
2969
  ],
2971
- 'string_double': [
2972
- (r'"', String.Double, '#pop'),
2973
- (r'[^"$]+', String.Double),
2970
+ 'import_decl': [
2971
+ include('string_literal'),
2972
+ (r'\s+', Text),
2973
+ (r'\b(as|show|hide)\b', Keyword),
2974
+ (r'[a-zA-Z_$][a-zA-Z0-9_]*', Name),
2975
+ (r'\,', Punctuation),
2976
+ (r'\;', Punctuation, '#pop')
2977
+ ],
2978
+ 'string_literal': [
2979
+ # Raw strings.
2980
+ (r'r"""([\s|\S]*?)"""', String.Double),
2981
+ (r"r'''([\s|\S]*?)'''", String.Single),
2982
+ (r'r"(.*?)"', String.Double),
2983
+ (r"r'(.*?)'", String.Single),
2984
+ # Normal Strings.
2985
+ (r'"""', String.Double, 'string_double_multiline'),
2986
+ (r"'''", String.Single, 'string_single_multiline'),
2987
+ (r'"', String.Double, 'string_double'),
2988
+ (r"'", String.Single, 'string_single')
2989
+ ],
2990
+ 'string_common': [
2991
+ (r"\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\{[0-9A-Fa-f]*\}|[a-z\'\"$\\])",
2992
+ String.Escape),
2974
2993
  (r'(\$)([a-zA-Z_][a-zA-Z0-9_]*)', bygroups(String.Interpol, Name)),
2975
2994
  (r'(\$\{)(.*?)(\})',
2976
- bygroups(String.Interpol, using(this), String.Interpol)),
2995
+ bygroups(String.Interpol, using(this), String.Interpol))
2996
+ ],
2997
+ 'string_double': [
2998
+ (r'"', String.Double, '#pop'),
2999
+ (r'[^\"$\\\n]+', String.Double),
3000
+ include('string_common'),
2977
3001
  (r'\$+', String.Double)
2978
3002
  ],
3003
+ 'string_double_multiline': [
3004
+ (r'"""', String.Double, '#pop'),
3005
+ (r'[^\"$\\]+', String.Double),
3006
+ include('string_common'),
3007
+ (r'(\$|\")+', String.Double)
3008
+ ],
2979
3009
  'string_single': [
2980
3010
  (r"'", String.Single, '#pop'),
2981
- (r"[^'$]+", String.Single),
2982
- (r'(\$)([a-zA-Z_][a-zA-Z0-9_]*)', bygroups(String.Interpol, Name)),
2983
- (r'(\$\{)(.*?)(\})',
2984
- bygroups(String.Interpol, using(this), String.Interpol)),
3011
+ (r"[^\'$\\\n]+", String.Single),
3012
+ include('string_common'),
2985
3013
  (r'\$+', String.Single)
3014
+ ],
3015
+ 'string_single_multiline': [
3016
+ (r"'''", String.Single, '#pop'),
3017
+ (r'[^\'$\\]+', String.Single),
3018
+ include('string_common'),
3019
+ (r'(\$|\')+', String.Single)
3020
+ ]
3021
+ }
3022
+
3023
+
3024
+ class TypeScriptLexer(RegexLexer):
3025
+ """
3026
+ For `TypeScript <http://www.python.org>`_ source code.
3027
+
3028
+ *New in Pygments 1.6.*
3029
+ """
3030
+
3031
+ name = 'TypeScript'
3032
+ aliases = ['ts']
3033
+ filenames = ['*.ts']
3034
+ mimetypes = ['text/x-typescript']
3035
+
3036
+ flags = re.DOTALL
3037
+ tokens = {
3038
+ 'commentsandwhitespace': [
3039
+ (r'\s+', Text),
3040
+ (r'<!--', Comment),
3041
+ (r'//.*?\n', Comment.Single),
3042
+ (r'/\*.*?\*/', Comment.Multiline)
3043
+ ],
3044
+ 'slashstartsregex': [
3045
+ include('commentsandwhitespace'),
3046
+ (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
3047
+ r'([gim]+\b|\B)', String.Regex, '#pop'),
3048
+ (r'(?=/)', Text, ('#pop', 'badregex')),
3049
+ (r'', Text, '#pop')
3050
+ ],
3051
+ 'badregex': [
3052
+ (r'\n', Text, '#pop')
3053
+ ],
3054
+ 'root': [
3055
+ (r'^(?=\s|/|<!--)', Text, 'slashstartsregex'),
3056
+ include('commentsandwhitespace'),
3057
+ (r'\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|'
3058
+ r'(<<|>>>?|==?|!=?|[-<>+*%&\|\^/])=?', Operator, 'slashstartsregex'),
3059
+ (r'[{(\[;,]', Punctuation, 'slashstartsregex'),
3060
+ (r'[})\].]', Punctuation),
3061
+ (r'(for|in|while|do|break|return|continue|switch|case|default|if|else|'
3062
+ r'throw|try|catch|finally|new|delete|typeof|instanceof|void|'
3063
+ r'this)\b', Keyword, 'slashstartsregex'),
3064
+ (r'(var|let|with|function)\b', Keyword.Declaration, 'slashstartsregex'),
3065
+ (r'(abstract|boolean|byte|char|class|const|debugger|double|enum|export|'
3066
+ r'extends|final|float|goto|implements|import|int|interface|long|native|'
3067
+ r'package|private|protected|public|short|static|super|synchronized|throws|'
3068
+ r'transient|volatile)\b', Keyword.Reserved),
3069
+ (r'(true|false|null|NaN|Infinity|undefined)\b', Keyword.Constant),
3070
+ (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
3071
+ r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
3072
+ r'decodeURIComponent|encodeURI|encodeURIComponent|'
3073
+ r'Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|'
3074
+ r'window)\b', Name.Builtin),
3075
+ # Match stuff like: module name {...}
3076
+ (r'\b(module)(\s*)(\s*[a-zA-Z0-9_?.$][\w?.$]*)(\s*)',
3077
+ bygroups(Keyword.Reserved, Text, Name.Other, Text), 'slashstartsregex'),
3078
+ # Match variable type keywords
3079
+ (r'\b(string|bool|number)\b', Keyword.Type),
3080
+ # Match stuff like: constructor
3081
+ (r'\b(constructor|declare|interface|as|AS)\b', Keyword.Reserved),
3082
+ # Match stuff like: super(argument, list)
3083
+ (r'(super)(\s*)(\([a-zA-Z0-9,_?.$\s]+\s*\))',
3084
+ bygroups(Keyword.Reserved, Text), 'slashstartsregex'),
3085
+ # Match stuff like: function() {...}
3086
+ (r'([a-zA-Z_?.$][\w?.$]*)\(\) \{', Name.Other, 'slashstartsregex'),
3087
+ # Match stuff like: (function: return type)
3088
+ (r'([a-zA-Z0-9_?.$][\w?.$]*)(\s*:\s*)([a-zA-Z0-9_?.$][\w?.$]*)',
3089
+ bygroups(Name.Other, Text, Keyword.Type)),
3090
+ (r'[$a-zA-Z_][a-zA-Z0-9_]*', Name.Other),
3091
+ (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
3092
+ (r'0x[0-9a-fA-F]+', Number.Hex),
3093
+ (r'[0-9]+', Number.Integer),
3094
+ (r'"(\\\\|\\"|[^"])*"', String.Double),
3095
+ (r"'(\\\\|\\'|[^'])*'", String.Single),
2986
3096
  ]
2987
3097
  }
2988
3098
 
@@ -3015,19 +3125,14 @@ class LassoLexer(RegexLexer):
3015
3125
  tokens = {
3016
3126
  'root': [
3017
3127
  (r'^#!.+lasso9\b', Comment.Preproc, 'lasso'),
3018
- (r'\s+', Other),
3019
3128
  (r'\[no_square_brackets\]', Comment.Preproc, 'nosquarebrackets'),
3020
3129
  (r'\[noprocess\]', Comment.Preproc, ('delimiters', 'noprocess')),
3021
3130
  (r'\[', Comment.Preproc, ('delimiters', 'squarebrackets')),
3022
3131
  (r'<\?(LassoScript|lasso|=)', Comment.Preproc,
3023
3132
  ('delimiters', 'anglebrackets')),
3024
3133
  (r'<', Other, 'delimiters'),
3025
- include('lasso'),
3026
- ],
3027
- 'nosquarebrackets': [
3028
- (r'<\?(LassoScript|lasso|=)', Comment.Preproc, 'anglebrackets'),
3029
- (r'<', Other),
3030
- (r'[^<]+', Other),
3134
+ (r'\s+', Other),
3135
+ (r'', Other, ('delimiters', 'lassofile')),
3031
3136
  ],
3032
3137
  'delimiters': [
3033
3138
  (r'\[no_square_brackets\]', Comment.Preproc, 'nosquarebrackets'),
@@ -3037,6 +3142,11 @@ class LassoLexer(RegexLexer):
3037
3142
  (r'<', Other),
3038
3143
  (r'[^[<]+', Other),
3039
3144
  ],
3145
+ 'nosquarebrackets': [
3146
+ (r'<\?(LassoScript|lasso|=)', Comment.Preproc, 'anglebrackets'),
3147
+ (r'<', Other),
3148
+ (r'[^<]+', Other),
3149
+ ],
3040
3150
  'noprocess': [
3041
3151
  (r'\[/noprocess\]', Comment.Preproc, '#pop'),
3042
3152
  (r'\[', Other),
@@ -3050,12 +3160,20 @@ class LassoLexer(RegexLexer):
3050
3160
  (r'\?>', Comment.Preproc, '#pop'),
3051
3161
  include('lasso'),
3052
3162
  ],
3053
- 'lasso': [
3054
- # whitespace/comments
3163
+ 'lassofile': [
3164
+ (r'\]', Comment.Preproc, '#pop'),
3165
+ (r'\?>', Comment.Preproc, '#pop'),
3166
+ include('lasso'),
3167
+ ],
3168
+ 'whitespacecomments': [
3055
3169
  (r'\s+', Text),
3056
3170
  (r'//.*?\n', Comment.Single),
3057
3171
  (r'/\*\*!.*?\*/', String.Doc),
3058
3172
  (r'/\*.*?\*/', Comment.Multiline),
3173
+ ],
3174
+ 'lasso': [
3175
+ # whitespace/comments
3176
+ include('whitespacecomments'),
3059
3177
 
3060
3178
  # literals
3061
3179
  (r'\d*\.\d+(e[+-]?\d+)?', Number.Float),
@@ -3098,10 +3216,9 @@ class LassoLexer(RegexLexer):
3098
3216
  (r'(define)(\s+)([a-z_][\w.]*)',
3099
3217
  bygroups(Keyword.Declaration, Text, Name.Function),
3100
3218
  'signature'),
3101
- (r'(public|protected|private|provide)(\s+)([a-z_][\w.]*=?|'
3102
- r'[-+*/%<>]|==)(\s*)(\()',
3103
- bygroups(Keyword, Text, Name.Function, Text, Punctuation),
3104
- ('signature', 'parameter')),
3219
+ (r'(public|protected|private|provide)(\s+)(([a-z_][\w.]*=?|'
3220
+ r'[-+*/%<>]|==)(?=\s*\())', bygroups(Keyword, Text, Name.Function),
3221
+ 'signature'),
3105
3222
  (r'(public|protected|private)(\s+)([a-z_][\w.]*)',
3106
3223
  bygroups(Keyword, Text, Name.Function)),
3107
3224
 
@@ -3112,6 +3229,9 @@ class LassoLexer(RegexLexer):
3112
3229
  r'null)\b', Keyword.Type),
3113
3230
  (r'([a-z_][\w.]*)(\s+)(in)\b', bygroups(Name, Text, Keyword)),
3114
3231
  (r'(let|into)(\s+)([a-z_][\w.]*)', bygroups(Keyword, Text, Name)),
3232
+ (r'require\b', Keyword, 'requiresection'),
3233
+ (r'(/?)(Namespace_Using)\b',
3234
+ bygroups(Punctuation, Keyword.Namespace)),
3115
3235
  (r'(/?)(Cache|Database_Names|Database_SchemaNames|'
3116
3236
  r'Database_TableNames|Define_Tag|Define_Type|Email_Batch|'
3117
3237
  r'Encode_Set|HTML_Comment|Handle|Handle_Error|Header|If|Inline|'
@@ -3119,19 +3239,21 @@ class LassoLexer(RegexLexer):
3119
3239
  r'Link_CurrentRecord|Link_Detail|Link_FirstGroup|'
3120
3240
  r'Link_FirstRecord|Link_LastGroup|Link_LastRecord|Link_NextGroup|'
3121
3241
  r'Link_NextRecord|Link_PrevGroup|Link_PrevRecord|Log|Loop|'
3122
- r'Namespace_Using|NoProcess|Output_None|Portal|Private|Protect|'
3123
- r'Records|Referer|Referrer|Repeating|ResultSet|Rows|Search_Args|'
3124
- r'Search_Arguments|Select|Sort_Args|Sort_Arguments|Thread_Atomic|'
3125
- r'Value_List|While|Abort|Case|Else|If_Empty|If_False|If_Null|'
3126
- r'If_True|Loop_Abort|Loop_Continue|Loop_Count|Params|Params_Up|'
3127
- r'Return|Return_Value|Run_Children|SOAP_DefineTag|'
3128
- r'SOAP_LastRequest|SOAP_LastResponse|Tag_Name|ascending|average|'
3129
- r'by|define|descending|do|equals|frozen|group|handle_failure|'
3130
- r'import|in|into|join|let|match|max|min|on|order|parent|protected|'
3131
- r'provide|public|require|skip|split_thread|sum|take|thread|to|'
3132
- r'trait|type|where|with|yield)\b', bygroups(Punctuation, Keyword)),
3242
+ r'NoProcess|Output_None|Portal|Private|Protect|Records|Referer|'
3243
+ r'Referrer|Repeating|ResultSet|Rows|Search_Args|Search_Arguments|'
3244
+ r'Select|Sort_Args|Sort_Arguments|Thread_Atomic|Value_List|While|'
3245
+ r'Abort|Case|Else|If_Empty|If_False|If_Null|If_True|Loop_Abort|'
3246
+ r'Loop_Continue|Loop_Count|Params|Params_Up|Return|Return_Value|'
3247
+ r'Run_Children|SOAP_DefineTag|SOAP_LastRequest|SOAP_LastResponse|'
3248
+ r'Tag_Name|ascending|average|by|define|descending|do|equals|'
3249
+ r'frozen|group|handle_failure|import|in|into|join|let|match|max|'
3250
+ r'min|on|order|parent|protected|provide|public|require|skip|'
3251
+ r'split_thread|sum|take|thread|to|trait|type|where|with|yield)\b',
3252
+ bygroups(Punctuation, Keyword)),
3133
3253
 
3134
3254
  # other
3255
+ (r'(([a-z_][\w.]*=?|[-+*/%<>]|==)(?=\s*\([^)]*\)\s*=>))',
3256
+ Name.Function, 'signature'),
3135
3257
  (r'(and|or|not)\b', Operator.Word),
3136
3258
  (r'([a-z_][\w.]*)(\s*)(::\s*)([a-z_][\w.]*)(\s*)(=)',
3137
3259
  bygroups(Name, Text, Punctuation, Name.Label, Text, Operator)),
@@ -3160,16 +3282,34 @@ class LassoLexer(RegexLexer):
3160
3282
  r'[abefnrtv?\"\'\\]|$)', String.Escape),
3161
3283
  ],
3162
3284
  'signature': [
3163
- (r'[(,]', Punctuation, 'parameter'),
3164
3285
  (r'=>', Operator, '#pop'),
3286
+ (r'\)', Punctuation, '#pop'),
3287
+ (r'[(,]', Punctuation, 'parameter'),
3165
3288
  include('lasso'),
3166
3289
  ],
3167
3290
  'parameter': [
3168
- (r'\.\.\.', Name.Builtin.Pseudo),
3169
- (r'-?[a-z_][\w.]*', Name.Attribute, '#pop'),
3170
3291
  (r'\)', Punctuation, '#pop'),
3292
+ (r'-?[a-z_][\w.]*', Name.Attribute, '#pop'),
3293
+ (r'\.\.\.', Name.Builtin.Pseudo),
3171
3294
  include('lasso'),
3172
3295
  ],
3296
+ 'requiresection': [
3297
+ (r'(([a-z_][\w.]*=?|[-+*/%<>]|==)(?=\s*\())', Name, 'requiresignature'),
3298
+ (r'(([a-z_][\w.]*=?|[-+*/%<>]|==)(?=(\s*::\s*[\w.]+)?\s*,))', Name),
3299
+ (r'[a-z_][\w.]*=?|[-+*/%<>]|==', Name, '#pop'),
3300
+ (r'(::\s*)([a-z_][\w.]*)', bygroups(Punctuation, Name.Label)),
3301
+ (r',', Punctuation),
3302
+ include('whitespacecomments'),
3303
+ ],
3304
+ 'requiresignature': [
3305
+ (r'(\)(?=(\s*::\s*[\w.]+)?\s*,))', Punctuation, '#pop'),
3306
+ (r'\)', Punctuation, '#pop:2'),
3307
+ (r'-?[a-z_][\w.]*', Name.Attribute),
3308
+ (r'(::\s*)([a-z_][\w.]*)', bygroups(Punctuation, Name.Label)),
3309
+ (r'\.\.\.', Name.Builtin.Pseudo),
3310
+ (r'[(,]', Punctuation),
3311
+ include('whitespacecomments'),
3312
+ ],
3173
3313
  }
3174
3314
 
3175
3315
  def __init__(self, **options):
@@ -3208,3 +3348,76 @@ class LassoLexer(RegexLexer):
3208
3348
  if re.search(r'\[\n|\?>', text):
3209
3349
  rv += 0.4
3210
3350
  return rv
3351
+
3352
+
3353
+ class QmlLexer(RegexLexer):
3354
+ """
3355
+ For QML files. See http://doc.qt.digia.com/4.7/qdeclarativeintroduction.html.
3356
+
3357
+ *New in Pygments 1.6.*
3358
+ """
3359
+
3360
+ # QML is based on javascript, so much of this is taken from the
3361
+ # JavascriptLexer above.
3362
+
3363
+ name = 'QML'
3364
+ aliases = ['qml', 'Qt Meta Language', 'Qt modeling Language']
3365
+ filenames = ['*.qml',]
3366
+ mimetypes = [ 'application/x-qml',]
3367
+
3368
+
3369
+ # pasted from JavascriptLexer, with some additions
3370
+ flags = re.DOTALL
3371
+ tokens = {
3372
+ 'commentsandwhitespace': [
3373
+ (r'\s+', Text),
3374
+ (r'<!--', Comment),
3375
+ (r'//.*?\n', Comment.Single),
3376
+ (r'/\*.*?\*/', Comment.Multiline)
3377
+ ],
3378
+ 'slashstartsregex': [
3379
+ include('commentsandwhitespace'),
3380
+ (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
3381
+ r'([gim]+\b|\B)', String.Regex, '#pop'),
3382
+ (r'(?=/)', Text, ('#pop', 'badregex')),
3383
+ (r'', Text, '#pop')
3384
+ ],
3385
+ 'badregex': [
3386
+ (r'\n', Text, '#pop')
3387
+ ],
3388
+ 'root' : [
3389
+ (r'^(?=\s|/|<!--)', Text, 'slashstartsregex'),
3390
+ include('commentsandwhitespace'),
3391
+ (r'\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|'
3392
+ r'(<<|>>>?|==?|!=?|[-<>+*%&\|\^/])=?', Operator, 'slashstartsregex'),
3393
+ (r'[{(\[;,]', Punctuation, 'slashstartsregex'),
3394
+ (r'[})\].]', Punctuation),
3395
+
3396
+ # QML insertions
3397
+ (r'\bid\s*:\s*[A-Za-z][_A-Za-z.0-9]*',Keyword.Declaration,
3398
+ 'slashstartsregex'),
3399
+ (r'\b[A-Za-z][_A-Za-z.0-9]*\s*:',Keyword, 'slashstartsregex'),
3400
+
3401
+ # the rest from JavascriptLexer
3402
+ (r'(for|in|while|do|break|return|continue|switch|case|default|if|else|'
3403
+ r'throw|try|catch|finally|new|delete|typeof|instanceof|void|'
3404
+ r'this)\b', Keyword, 'slashstartsregex'),
3405
+ (r'(var|let|with|function)\b', Keyword.Declaration, 'slashstartsregex'),
3406
+ (r'(abstract|boolean|byte|char|class|const|debugger|double|enum|export|'
3407
+ r'extends|final|float|goto|implements|import|int|interface|long|native|'
3408
+ r'package|private|protected|public|short|static|super|synchronized|throws|'
3409
+ r'transient|volatile)\b', Keyword.Reserved),
3410
+ (r'(true|false|null|NaN|Infinity|undefined)\b', Keyword.Constant),
3411
+ (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
3412
+ r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
3413
+ r'decodeURIComponent|encodeURI|encodeURIComponent|'
3414
+ r'Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|'
3415
+ r'window)\b', Name.Builtin),
3416
+ (r'[$a-zA-Z_][a-zA-Z0-9_]*', Name.Other),
3417
+ (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
3418
+ (r'0x[0-9a-fA-F]+', Number.Hex),
3419
+ (r'[0-9]+', Number.Integer),
3420
+ (r'"(\\\\|\\"|[^"])*"', String.Double),
3421
+ (r"'(\\\\|\\'|[^'])*'", String.Single),
3422
+ ]
3423
+ }