pygments.rb 0.3.7 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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 other languages.
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,8 @@ __all__ = ['BrainfuckLexer', 'BefungeLexer', 'RedcodeLexer', 'MOOCodeLexer',
34
34
  'HybrisLexer', 'AwkLexer', 'Cfengine3Lexer', 'SnobolLexer',
35
35
  'ECLLexer', 'UrbiscriptLexer', 'OpenEdgeLexer', 'BroLexer',
36
36
  'MscgenLexer', 'KconfigLexer', 'VGLLexer', 'SourcePawnLexer',
37
- 'RobotFrameworkLexer']
37
+ 'RobotFrameworkLexer', 'PuppetLexer', 'NSISLexer', 'RPMSpecLexer',
38
+ 'CbmBasicV2Lexer', 'AutoItLexer']
38
39
 
39
40
 
40
41
  class ECLLexer(RegexLexer):
@@ -1257,7 +1258,8 @@ class ModelicaLexer(RegexLexer):
1257
1258
  ],
1258
1259
  'classes': [
1259
1260
  (r'(block|class|connector|function|model|package|'
1260
- r'record|type)\b', Name.Class),
1261
+ r'record|type)(\s+)([A-Za-z_]+)',
1262
+ bygroups(Keyword, Text, Name.Class))
1261
1263
  ],
1262
1264
  'string': [
1263
1265
  (r'"', String, '#pop'),
@@ -1485,9 +1487,9 @@ class RebolLexer(RegexLexer):
1485
1487
  (r'}', Comment, '#pop'),
1486
1488
  ],
1487
1489
  'commentBlock': [
1488
- (r'\[',Comment, '#push'),
1489
- (r'\]',Comment, '#pop'),
1490
- (r'[^(\[\])]*', Comment),
1490
+ (r'\[', Comment, '#push'),
1491
+ (r'\]', Comment, '#pop'),
1492
+ (r'[^(\[\])]+', Comment),
1491
1493
  ],
1492
1494
  }
1493
1495
 
@@ -1738,6 +1740,7 @@ class NewspeakLexer(RegexLexer):
1738
1740
  ]
1739
1741
  }
1740
1742
 
1743
+
1741
1744
  class GherkinLexer(RegexLexer):
1742
1745
  """
1743
1746
  For `Gherkin <http://github.com/aslakhellesoy/gherkin/>` syntax.
@@ -1834,10 +1837,16 @@ class GherkinLexer(RegexLexer):
1834
1837
  include('table_vars'),
1835
1838
  include('numbers'),
1836
1839
  (r'(\s*)(@[^@\r\n\t ]+)', bygroups(Name.Function, Name.Tag)),
1837
- (step_keywords, bygroups(Name.Function, Keyword), "step_content_root"),
1838
- (feature_keywords, bygroups(Keyword, Keyword, Name.Function), 'narrative'),
1839
- (feature_element_keywords, bygroups(Name.Function, Keyword, Keyword, Name.Function), "feature_elements"),
1840
- (examples_keywords, bygroups(Name.Function, Keyword, Keyword, Name.Function), "examples_table"),
1840
+ (step_keywords, bygroups(Name.Function, Keyword),
1841
+ 'step_content_root'),
1842
+ (feature_keywords, bygroups(Keyword, Keyword, Name.Function),
1843
+ 'narrative'),
1844
+ (feature_element_keywords,
1845
+ bygroups(Name.Function, Keyword, Keyword, Name.Function),
1846
+ 'feature_elements'),
1847
+ (examples_keywords,
1848
+ bygroups(Name.Function, Keyword, Keyword, Name.Function),
1849
+ 'examples_table'),
1841
1850
  (r'(\s|.)', Name.Function),
1842
1851
  ]
1843
1852
  }
@@ -2773,7 +2782,7 @@ class OpenEdgeLexer(RegexLexer):
2773
2782
 
2774
2783
  keywords = (r'(?i)(^|(?<=[^0-9a-z_\-]))(' +
2775
2784
  r'|'.join(OPENEDGEKEYWORDS) +
2776
- r')\s*($|(?=[^0-9a-z_\-]))')
2785
+ r')\s*($|(?=[^0-9a-z_\-]))')
2777
2786
  tokens = {
2778
2787
  'root': [
2779
2788
  (r'/\*', Comment.Multiline, 'comment'),
@@ -2836,7 +2845,7 @@ class BroLexer(RegexLexer):
2836
2845
  r'|pattern|port|record|set|string|subnet|table|time|timer'
2837
2846
  r'|vector)\b', Keyword.Type),
2838
2847
  (r'(T|F)\b', Keyword.Constant),
2839
- (r'(&)((?:add|delete|expire)_func|attr|(create|read|write)_expire'
2848
+ (r'(&)((?:add|delete|expire)_func|attr|(?:create|read|write)_expire'
2840
2849
  r'|default|disable_print_hook|raw_output|encrypt|group|log'
2841
2850
  r'|mergeable|optional|persistent|priority|redef'
2842
2851
  r'|rotate_(?:interval|size)|synchronized)\b', bygroups(Punctuation,
@@ -2884,6 +2893,44 @@ class BroLexer(RegexLexer):
2884
2893
  }
2885
2894
 
2886
2895
 
2896
+ class CbmBasicV2Lexer(RegexLexer):
2897
+ """
2898
+ For CBM BASIC V2 sources.
2899
+
2900
+ *New in Pygments 1.6.*
2901
+ """
2902
+ name = 'CBM BASIC V2'
2903
+ aliases = ['cbmbas']
2904
+ filenames = ['*.bas']
2905
+
2906
+ flags = re.IGNORECASE
2907
+
2908
+ tokens = {
2909
+ 'root': [
2910
+ (r'rem.*\n', Comment.Single),
2911
+ (r'\s+', Text),
2912
+ (r'new|run|end|for|to|next|step|go(to|sub)?|on|return|stop|cont'
2913
+ r'|if|then|input#?|read|wait|load|save|verify|poke|sys|print#?'
2914
+ r'|list|clr|cmd|open|close|get#?', Keyword.Reserved),
2915
+ (r'data|restore|dim|let|def|fn', Keyword.Declaration),
2916
+ (r'tab|spc|sgn|int|abs|usr|fre|pos|sqr|rnd|log|exp|cos|sin|tan|atn'
2917
+ r'|peek|len|val|asc|(str|chr|left|right|mid)\$', Name.Builtin),
2918
+ (r'[-+*/^<>=]', Operator),
2919
+ (r'not|and|or', Operator.Word),
2920
+ (r'"[^"\n]*.', String),
2921
+ (r'\d+|[-+]?\d*\.\d*(e[-+]?\d+)?', Number.Float),
2922
+ (r'[\(\),:;]', Punctuation),
2923
+ (r'\w+[$%]?', Name),
2924
+ ]
2925
+ }
2926
+
2927
+ def analyse_text(self, text):
2928
+ # if it starts with a line number, it shouldn't be a "modern" Basic
2929
+ # like VB.net
2930
+ if re.match(r'\d+', text):
2931
+ return True
2932
+
2933
+
2887
2934
  class MscgenLexer(RegexLexer):
2888
2935
  """
2889
2936
  For `Mscgen <http://www.mcternan.me.uk/mscgen/>`_ files.
@@ -3158,5 +3205,463 @@ class SourcePawnLexer(RegexLexer):
3158
3205
  if value in self.SM_TYPES:
3159
3206
  token = Keyword.Type
3160
3207
  elif value in self._functions:
3161
- tokens = Name.Builtin
3208
+ token = Name.Builtin
3162
3209
  yield index, token, value
3210
+
3211
+
3212
+ class PuppetLexer(RegexLexer):
3213
+ """
3214
+ For `Puppet <http://puppetlabs.com/>`__ configuration DSL.
3215
+
3216
+ *New in Pygments 1.6.*
3217
+ """
3218
+ name = 'Puppet'
3219
+ aliases = ['puppet']
3220
+ filenames = ['*.pp']
3221
+
3222
+ tokens = {
3223
+ 'root': [
3224
+ include('comments'),
3225
+ include('keywords'),
3226
+ include('names'),
3227
+ include('numbers'),
3228
+ include('operators'),
3229
+ include('strings'),
3230
+
3231
+ (r'[]{}:(),;[]', Punctuation),
3232
+ (r'[^\S\n]+', Text),
3233
+ ],
3234
+
3235
+ 'comments': [
3236
+ (r'\s*#.*$', Comment),
3237
+ (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),
3238
+ ],
3239
+
3240
+ 'operators': [
3241
+ (r'(=>|\?|<|>|=|\+|-|/|\*|~|!|\|)', Operator),
3242
+ (r'(in|and|or|not)\b', Operator.Word),
3243
+ ],
3244
+
3245
+ 'names': [
3246
+ ('[a-zA-Z_][a-zA-Z0-9_]*', Name.Attribute),
3247
+ (r'(\$\S+)(\[)(\S+)(\])', bygroups(Name.Variable, Punctuation,
3248
+ String, Punctuation)),
3249
+ (r'\$\S+', Name.Variable),
3250
+ ],
3251
+
3252
+ 'numbers': [
3253
+ # Copypasta from the Python lexer
3254
+ (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?', Number.Float),
3255
+ (r'\d+[eE][+-]?[0-9]+j?', Number.Float),
3256
+ (r'0[0-7]+j?', Number.Oct),
3257
+ (r'0[xX][a-fA-F0-9]+', Number.Hex),
3258
+ (r'\d+L', Number.Integer.Long),
3259
+ (r'\d+j?', Number.Integer)
3260
+ ],
3261
+
3262
+ 'keywords': [
3263
+ # Left out 'group' and 'require'
3264
+ # Since they're often used as attributes
3265
+ (r'(?i)(absent|alert|alias|audit|augeas|before|case|check|class|'
3266
+ r'computer|configured|contained|create_resources|crit|cron|debug|'
3267
+ r'default|define|defined|directory|else|elsif|emerg|err|exec|'
3268
+ r'extlookup|fail|false|file|filebucket|fqdn_rand|generate|host|if|'
3269
+ r'import|include|info|inherits|inline_template|installed|'
3270
+ r'interface|k5login|latest|link|loglevel|macauthorization|'
3271
+ r'mailalias|maillist|mcx|md5|mount|mounted|nagios_command|'
3272
+ r'nagios_contact|nagios_contactgroup|nagios_host|'
3273
+ r'nagios_hostdependency|nagios_hostescalation|nagios_hostextinfo|'
3274
+ r'nagios_hostgroup|nagios_service|nagios_servicedependency|'
3275
+ r'nagios_serviceescalation|nagios_serviceextinfo|'
3276
+ r'nagios_servicegroup|nagios_timeperiod|node|noop|notice|notify|'
3277
+ r'package|present|purged|realize|regsubst|resources|role|router|'
3278
+ r'running|schedule|scheduled_task|search|selboolean|selmodule|'
3279
+ r'service|sha1|shellquote|split|sprintf|ssh_authorized_key|sshkey|'
3280
+ r'stage|stopped|subscribe|tag|tagged|template|tidy|true|undef|'
3281
+ r'unmounted|user|versioncmp|vlan|warning|yumrepo|zfs|zone|'
3282
+ r'zpool)\b', Keyword),
3283
+ ],
3284
+
3285
+ 'strings': [
3286
+ (r'"([^"])*"', String),
3287
+ (r'\'([^\'])*\'', String),
3288
+ ],
3289
+
3290
+ }
3291
+
3292
+
3293
+ class NSISLexer(RegexLexer):
3294
+ """
3295
+ For `NSIS <http://nsis.sourceforge.net/>`_ scripts.
3296
+
3297
+ *New in Pygments 1.6.*
3298
+ """
3299
+ name = 'NSIS'
3300
+ aliases = ['nsis', 'nsi', 'nsh']
3301
+ filenames = ['*.nsi', '*.nsh']
3302
+ mimetypes = ['text/x-nsis']
3303
+
3304
+ flags = re.IGNORECASE
3305
+
3306
+ tokens = {
3307
+ 'root': [
3308
+ (r'[;\#].*\n', Comment),
3309
+ (r"'.*'", String.Single),
3310
+ (r'"', String.Double, 'str_double'),
3311
+ (r'`', String.Backtick, 'str_backtick'),
3312
+ include('macro'),
3313
+ include('interpol'),
3314
+ include('basic'),
3315
+ (r'\$\{[a-z_|][\w|]*\}', Keyword.Pseudo),
3316
+ (r'/[a-z_]\w*', Name.Attribute),
3317
+ ('.', Text),
3318
+ ],
3319
+ 'basic': [
3320
+ (r'(\n)(Function)(\s+)([._a-z][.\w]*)\b',
3321
+ bygroups(Text, Keyword, Text, Name.Function)),
3322
+ (r'\b([_a-z]\w*)(::)([a-z][a-z0-9]*)\b',
3323
+ bygroups(Keyword.Namespace, Punctuation, Name.Function)),
3324
+ (r'\b([_a-z]\w*)(:)', bygroups(Name.Label, Punctuation)),
3325
+ (r'(\b[ULS]|\B)([\!\<\>=]?=|\<\>?|\>)\B', Operator),
3326
+ (r'[|+-]', Operator),
3327
+ (r'\\', Punctuation),
3328
+ (r'\b(Abort|Add(?:BrandingImage|Size)|'
3329
+ r'Allow(?:RootDirInstall|SkipFiles)|AutoCloseWindow|'
3330
+ r'BG(?:Font|Gradient)|BrandingText|BringToFront|Call(?:InstDLL)?|'
3331
+ r'(?:Sub)?Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|'
3332
+ r'ComponentText|CopyFiles|CRCCheck|'
3333
+ r'Create(?:Directory|Font|Shortcut)|Delete(?:INI(?:Sec|Str)|'
3334
+ r'Reg(?:Key|Value))?|DetailPrint|DetailsButtonText|'
3335
+ r'Dir(?:Show|Text|Var|Verify)|(?:Disabled|Enabled)Bitmap|'
3336
+ r'EnableWindow|EnumReg(?:Key|Value)|Exch|Exec(?:Shell|Wait)?|'
3337
+ r'ExpandEnvStrings|File(?:BufSize|Close|ErrorText|Open|'
3338
+ r'Read(?:Byte)?|Seek|Write(?:Byte)?)?|'
3339
+ r'Find(?:Close|First|Next|Window)|FlushINI|Function(?:End)?|'
3340
+ r'Get(?:CurInstType|CurrentAddress|DlgItem|DLLVersion(?:Local)?|'
3341
+ r'ErrorLevel|FileTime(?:Local)?|FullPathName|FunctionAddress|'
3342
+ r'InstDirError|LabelAddress|TempFileName)|'
3343
+ r'Goto|HideWindow|Icon|'
3344
+ r'If(?:Abort|Errors|FileExists|RebootFlag|Silent)|'
3345
+ r'InitPluginsDir|Install(?:ButtonText|Colors|Dir(?:RegKey)?)|'
3346
+ r'Inst(?:ProgressFlags|Type(?:[GS]etText)?)|Int(?:CmpU?|Fmt|Op)|'
3347
+ r'IsWindow|LangString(?:UP)?|'
3348
+ r'License(?:BkColor|Data|ForceSelection|LangString|Text)|'
3349
+ r'LoadLanguageFile|LockWindow|Log(?:Set|Text)|MessageBox|'
3350
+ r'MiscButtonText|Name|Nop|OutFile|(?:Uninst)?Page(?:Ex(?:End)?)?|'
3351
+ r'PluginDir|Pop|Push|Quit|Read(?:(?:Env|INI|Reg)Str|RegDWORD)|'
3352
+ r'Reboot|(?:Un)?RegDLL|Rename|RequestExecutionLevel|ReserveFile|'
3353
+ r'Return|RMDir|SearchPath|Section(?:Divider|End|'
3354
+ r'(?:(?:Get|Set)(?:Flags|InstTypes|Size|Text))|Group(?:End)?|In)?|'
3355
+ r'SendMessage|Set(?:AutoClose|BrandingImage|Compress(?:ionLevel|'
3356
+ r'or(?:DictSize)?)?|CtlColors|CurInstType|DatablockOptimize|'
3357
+ r'DateSave|Details(?:Print|View)|Error(?:s|Level)|FileAttributes|'
3358
+ r'Font|OutPath|Overwrite|PluginUnload|RebootFlag|ShellVarContext|'
3359
+ r'Silent|StaticBkColor)|'
3360
+ r'Show(?:(?:I|Uni)nstDetails|Window)|Silent(?:Un)?Install|Sleep|'
3361
+ r'SpaceTexts|Str(?:CmpS?|Cpy|Len)|SubSection(?:End)?|'
3362
+ r'Uninstall(?:ButtonText|(?:Sub)?Caption|EXEName|Icon|Text)|'
3363
+ r'UninstPage|Var|VI(?:AddVersionKey|ProductVersion)|WindowIcon|'
3364
+ r'Write(?:INIStr|Reg(:?Bin|DWORD|(?:Expand)?Str)|Uninstaller)|'
3365
+ r'XPStyle)\b', Keyword),
3366
+ (r'\b(CUR|END|(?:FILE_ATTRIBUTE_)?'
3367
+ r'(?:ARCHIVE|HIDDEN|NORMAL|OFFLINE|READONLY|SYSTEM|TEMPORARY)|'
3368
+ r'HK(CC|CR|CU|DD|LM|PD|U)|'
3369
+ r'HKEY_(?:CLASSES_ROOT|CURRENT_(?:CONFIG|USER)|DYN_DATA|'
3370
+ r'LOCAL_MACHINE|PERFORMANCE_DATA|USERS)|'
3371
+ r'ID(?:ABORT|CANCEL|IGNORE|NO|OK|RETRY|YES)|'
3372
+ r'MB_(?:ABORTRETRYIGNORE|DEFBUTTON[1-4]|'
3373
+ r'ICON(?:EXCLAMATION|INFORMATION|QUESTION|STOP)|'
3374
+ r'OK(?:CANCEL)?|RETRYCANCEL|RIGHT|SETFOREGROUND|TOPMOST|USERICON|'
3375
+ r'YESNO(?:CANCEL)?)|SET|SHCTX|'
3376
+ r'SW_(?:HIDE|SHOW(?:MAXIMIZED|MINIMIZED|NORMAL))|'
3377
+ r'admin|all|auto|both|bottom|bzip2|checkbox|colored|current|false|'
3378
+ r'force|hide|highest|if(?:diff|newer)|lastused|leave|left|'
3379
+ r'listonly|lzma|nevershow|none|normal|off|on|pop|push|'
3380
+ r'radiobuttons|right|show|silent|silentlog|smooth|textonly|top|'
3381
+ r'true|try|user|zlib)\b', Name.Constant),
3382
+ ],
3383
+ 'macro': [
3384
+ (r'\!(addincludedir(?:dir)?|addplugindir|appendfile|cd|define|'
3385
+ r'delfilefile|echo(?:message)?|else|endif|error|execute|'
3386
+ r'if(?:macro)?n?(?:def)?|include|insertmacro|macro(?:end)?|packhdr|'
3387
+ r'search(?:parse|replace)|system|tempfilesymbol|undef|verbose|'
3388
+ r'warning)\b', Comment.Preproc),
3389
+ ],
3390
+ 'interpol': [
3391
+ (r'\$(R?[0-9])', Name.Builtin.Pseudo), # registers
3392
+ (r'\$(ADMINTOOLS|APPDATA|CDBURN_AREA|COOKIES|COMMONFILES(?:32|64)|'
3393
+ r'DESKTOP|DOCUMENTS|EXE(?:DIR|FILE|PATH)|FAVORITES|FONTS|HISTORY|'
3394
+ r'HWNDPARENT|INTERNET_CACHE|LOCALAPPDATA|MUSIC|NETHOOD|PICTURES|'
3395
+ r'PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES(?:32|64)|QUICKLAUNCH|'
3396
+ r'RECENT|RESOURCES(?:_LOCALIZED)?|SENDTO|SM(?:PROGRAMS|STARTUP)|'
3397
+ r'STARTMENU|SYSDIR|TEMP(?:LATES)?|VIDEOS|WINDIR|\{NSISDIR\})',
3398
+ Name.Builtin),
3399
+ (r'\$(CMDLINE|INSTDIR|OUTDIR|LANGUAGE)', Name.Variable.Global),
3400
+ (r'\$[a-z_]\w*', Name.Variable),
3401
+ ],
3402
+ 'str_double': [
3403
+ (r'"', String, '#pop'),
3404
+ (r'\$(\\[nrt"]|\$)', String.Escape),
3405
+ include('interpol'),
3406
+ (r'.', String.Double),
3407
+ ],
3408
+ 'str_backtick': [
3409
+ (r'`', String, '#pop'),
3410
+ (r'\$(\\[nrt"]|\$)', String.Escape),
3411
+ include('interpol'),
3412
+ (r'.', String.Double),
3413
+ ],
3414
+ }
3415
+
3416
+
3417
+ class RPMSpecLexer(RegexLexer):
3418
+ """
3419
+ For RPM *.spec files
3420
+
3421
+ *New in Pygments 1.6.*
3422
+ """
3423
+
3424
+ name = 'RPMSpec'
3425
+ aliases = ['spec']
3426
+ filenames = ['*.spec']
3427
+ mimetypes = ['text/x-rpm-spec']
3428
+
3429
+ _directives = ('(?:package|prep|build|install|clean|check|pre[a-z]*|'
3430
+ 'post[a-z]*|trigger[a-z]*|files)')
3431
+
3432
+ tokens = {
3433
+ 'root': [
3434
+ (r'#.*\n', Comment),
3435
+ include('basic'),
3436
+ ],
3437
+ 'description': [
3438
+ (r'^(%' + _directives + ')(.*)$',
3439
+ bygroups(Name.Decorator, Text), '#pop'),
3440
+ (r'\n', Text),
3441
+ (r'.', Text),
3442
+ ],
3443
+ 'changelog': [
3444
+ (r'\*.*\n', Generic.Subheading),
3445
+ (r'^(%' + _directives + ')(.*)$',
3446
+ bygroups(Name.Decorator, Text), '#pop'),
3447
+ (r'\n', Text),
3448
+ (r'.', Text),
3449
+ ],
3450
+ 'string': [
3451
+ (r'"', String.Double, '#pop'),
3452
+ (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
3453
+ include('interpol'),
3454
+ (r'.', String.Double),
3455
+ ],
3456
+ 'basic': [
3457
+ include('macro'),
3458
+ (r'(?i)^(Name|Version|Release|Epoch|Summary|Group|License|Packager|'
3459
+ r'Vendor|Icon|URL|Distribution|Prefix|Patch[0-9]*|Source[0-9]*|'
3460
+ r'Requires\(?[a-z]*\)?|[a-z]+Req|Obsoletes|Provides|Conflicts|'
3461
+ r'Build[a-z]+|[a-z]+Arch|Auto[a-z]+)(:)(.*)$',
3462
+ bygroups(Generic.Heading, Punctuation, using(this))),
3463
+ (r'^%description', Name.Decorator, 'description'),
3464
+ (r'^%changelog', Name.Decorator, 'changelog'),
3465
+ (r'^(%' + _directives + ')(.*)$', bygroups(Name.Decorator, Text)),
3466
+ (r'%(attr|defattr|dir|doc(?:dir)?|setup|config(?:ure)?|'
3467
+ r'make(?:install)|ghost|patch[0-9]+|find_lang|exclude|verify)',
3468
+ Keyword),
3469
+ include('interpol'),
3470
+ (r"'.*'", String.Single),
3471
+ (r'"', String.Double, 'string'),
3472
+ (r'.', Text),
3473
+ ],
3474
+ 'macro': [
3475
+ (r'%define.*\n', Comment.Preproc),
3476
+ (r'%\{\!\?.*%define.*\}', Comment.Preproc),
3477
+ (r'(%(?:if(?:n?arch)?|else(?:if)?|endif))(.*)$',
3478
+ bygroups(Comment.Preproc, Text)),
3479
+ ],
3480
+ 'interpol': [
3481
+ (r'%\{?__[a-z_]+\}?', Name.Function),
3482
+ (r'%\{?_([a-z_]+dir|[a-z_]+path|prefix)\}?', Keyword.Pseudo),
3483
+ (r'%\{\?[A-Za-z0-9_]+\}', Name.Variable),
3484
+ (r'\$\{?RPM_[A-Z0-9_]+\}?', Name.Variable.Global),
3485
+ (r'%\{[a-zA-Z][a-zA-Z0-9_]+\}', Keyword.Constant),
3486
+ ]
3487
+ }
3488
+
3489
+
3490
+ class AutoItLexer(RegexLexer):
3491
+ """
3492
+ For `AutoIt <http://www.autoitscript.com/site/autoit/>`_ files.
3493
+
3494
+ AutoIt is a freeware BASIC-like scripting language
3495
+ designed for automating the Windows GUI and general scripting
3496
+
3497
+ *New in Pygments 1.6.*
3498
+ """
3499
+ name = 'AutoIt'
3500
+ aliases = ['autoit', 'Autoit']
3501
+ filenames = ['*.au3']
3502
+ mimetypes = ['text/x-autoit']
3503
+
3504
+ # Keywords, functions, macros from au3.keywords.properties
3505
+ # which can be found in AutoIt installed directory, e.g.
3506
+ # c:\Program Files (x86)\AutoIt3\SciTE\au3.keywords.properties
3507
+
3508
+ keywords = """\
3509
+ #include-once #include #endregion #forcedef #forceref #region
3510
+ and byref case continueloop dim do else elseif endfunc endif
3511
+ endselect exit exitloop for func global
3512
+ if local next not or return select step
3513
+ then to until wend while exit""".split()
3514
+
3515
+ functions = """\
3516
+ abs acos adlibregister adlibunregister asc ascw asin assign atan
3517
+ autoitsetoption autoitwingettitle autoitwinsettitle beep binary binarylen
3518
+ binarymid binarytostring bitand bitnot bitor bitrotate bitshift bitxor
3519
+ blockinput break call cdtray ceiling chr chrw clipget clipput consoleread
3520
+ consolewrite consolewriteerror controlclick controlcommand controldisable
3521
+ controlenable controlfocus controlgetfocus controlgethandle controlgetpos
3522
+ controlgettext controlhide controllistview controlmove controlsend
3523
+ controlsettext controlshow controltreeview cos dec dircopy dircreate
3524
+ dirgetsize dirmove dirremove dllcall dllcalladdress dllcallbackfree
3525
+ dllcallbackgetptr dllcallbackregister dllclose dllopen dllstructcreate
3526
+ dllstructgetdata dllstructgetptr dllstructgetsize dllstructsetdata
3527
+ drivegetdrive drivegetfilesystem drivegetlabel drivegetserial drivegettype
3528
+ drivemapadd drivemapdel drivemapget drivesetlabel drivespacefree
3529
+ drivespacetotal drivestatus envget envset envupdate eval execute exp
3530
+ filechangedir fileclose filecopy filecreatentfslink filecreateshortcut
3531
+ filedelete fileexists filefindfirstfile filefindnextfile fileflush
3532
+ filegetattrib filegetencoding filegetlongname filegetpos filegetshortcut
3533
+ filegetshortname filegetsize filegettime filegetversion fileinstall filemove
3534
+ fileopen fileopendialog fileread filereadline filerecycle filerecycleempty
3535
+ filesavedialog fileselectfolder filesetattrib filesetpos filesettime
3536
+ filewrite filewriteline floor ftpsetproxy guicreate guictrlcreateavi
3537
+ guictrlcreatebutton guictrlcreatecheckbox guictrlcreatecombo
3538
+ guictrlcreatecontextmenu guictrlcreatedate guictrlcreatedummy
3539
+ guictrlcreateedit guictrlcreategraphic guictrlcreategroup guictrlcreateicon
3540
+ guictrlcreateinput guictrlcreatelabel guictrlcreatelist
3541
+ guictrlcreatelistview guictrlcreatelistviewitem guictrlcreatemenu
3542
+ guictrlcreatemenuitem guictrlcreatemonthcal guictrlcreateobj
3543
+ guictrlcreatepic guictrlcreateprogress guictrlcreateradio
3544
+ guictrlcreateslider guictrlcreatetab guictrlcreatetabitem
3545
+ guictrlcreatetreeview guictrlcreatetreeviewitem guictrlcreateupdown
3546
+ guictrldelete guictrlgethandle guictrlgetstate guictrlread guictrlrecvmsg
3547
+ guictrlregisterlistviewsort guictrlsendmsg guictrlsendtodummy
3548
+ guictrlsetbkcolor guictrlsetcolor guictrlsetcursor guictrlsetdata
3549
+ guictrlsetdefbkcolor guictrlsetdefcolor guictrlsetfont guictrlsetgraphic
3550
+ guictrlsetimage guictrlsetlimit guictrlsetonevent guictrlsetpos
3551
+ guictrlsetresizing guictrlsetstate guictrlsetstyle guictrlsettip guidelete
3552
+ guigetcursorinfo guigetmsg guigetstyle guiregistermsg guisetaccelerators
3553
+ guisetbkcolor guisetcoord guisetcursor guisetfont guisethelp guiseticon
3554
+ guisetonevent guisetstate guisetstyle guistartgroup guiswitch hex hotkeyset
3555
+ httpsetproxy httpsetuseragent hwnd inetclose inetget inetgetinfo inetgetsize
3556
+ inetread inidelete iniread inireadsection inireadsectionnames
3557
+ inirenamesection iniwrite iniwritesection inputbox int isadmin isarray
3558
+ isbinary isbool isdeclared isdllstruct isfloat ishwnd isint iskeyword
3559
+ isnumber isobj isptr isstring log memgetstats mod mouseclick mouseclickdrag
3560
+ mousedown mousegetcursor mousegetpos mousemove mouseup mousewheel msgbox
3561
+ number objcreate objcreateinterface objevent objevent objget objname
3562
+ onautoitexitregister onautoitexitunregister opt ping pixelchecksum
3563
+ pixelgetcolor pixelsearch pluginclose pluginopen processclose processexists
3564
+ processgetstats processlist processsetpriority processwait processwaitclose
3565
+ progressoff progresson progressset ptr random regdelete regenumkey
3566
+ regenumval regread regwrite round run runas runaswait runwait send
3567
+ sendkeepactive seterror setextended shellexecute shellexecutewait shutdown
3568
+ sin sleep soundplay soundsetwavevolume splashimageon splashoff splashtexton
3569
+ sqrt srandom statusbargettext stderrread stdinwrite stdioclose stdoutread
3570
+ string stringaddcr stringcompare stringformat stringfromasciiarray
3571
+ stringinstr stringisalnum stringisalpha stringisascii stringisdigit
3572
+ stringisfloat stringisint stringislower stringisspace stringisupper
3573
+ stringisxdigit stringleft stringlen stringlower stringmid stringregexp
3574
+ stringregexpreplace stringreplace stringright stringsplit stringstripcr
3575
+ stringstripws stringtoasciiarray stringtobinary stringtrimleft
3576
+ stringtrimright stringupper tan tcpaccept tcpclosesocket tcpconnect
3577
+ tcplisten tcpnametoip tcprecv tcpsend tcpshutdown tcpstartup timerdiff
3578
+ timerinit tooltip traycreateitem traycreatemenu traygetmsg trayitemdelete
3579
+ trayitemgethandle trayitemgetstate trayitemgettext trayitemsetonevent
3580
+ trayitemsetstate trayitemsettext traysetclick trayseticon traysetonevent
3581
+ traysetpauseicon traysetstate traysettooltip traytip ubound udpbind
3582
+ udpclosesocket udpopen udprecv udpsend udpshutdown udpstartup vargettype
3583
+ winactivate winactive winclose winexists winflash wingetcaretpos
3584
+ wingetclasslist wingetclientsize wingethandle wingetpos wingetprocess
3585
+ wingetstate wingettext wingettitle winkill winlist winmenuselectitem
3586
+ winminimizeall winminimizeallundo winmove winsetontop winsetstate
3587
+ winsettitle winsettrans winwait winwaitactive winwaitclose
3588
+ winwaitnotactive""".split()
3589
+
3590
+ macros = """\
3591
+ @appdatacommondir @appdatadir @autoitexe @autoitpid @autoitversion
3592
+ @autoitx64 @com_eventobj @commonfilesdir @compiled @computername @comspec
3593
+ @cpuarch @cr @crlf @desktopcommondir @desktopdepth @desktopdir
3594
+ @desktopheight @desktoprefresh @desktopwidth @documentscommondir @error
3595
+ @exitcode @exitmethod @extended @favoritescommondir @favoritesdir
3596
+ @gui_ctrlhandle @gui_ctrlid @gui_dragfile @gui_dragid @gui_dropid
3597
+ @gui_winhandle @homedrive @homepath @homeshare @hotkeypressed @hour
3598
+ @ipaddress1 @ipaddress2 @ipaddress3 @ipaddress4 @kblayout @lf
3599
+ @logondnsdomain @logondomain @logonserver @mday @min @mon @msec @muilang
3600
+ @mydocumentsdir @numparams @osarch @osbuild @oslang @osservicepack @ostype
3601
+ @osversion @programfilesdir @programscommondir @programsdir @scriptdir
3602
+ @scriptfullpath @scriptlinenumber @scriptname @sec @startmenucommondir
3603
+ @startmenudir @startupcommondir @startupdir @sw_disable @sw_enable @sw_hide
3604
+ @sw_lock @sw_maximize @sw_minimize @sw_restore @sw_show @sw_showdefault
3605
+ @sw_showmaximized @sw_showminimized @sw_showminnoactive @sw_showna
3606
+ @sw_shownoactivate @sw_shownormal @sw_unlock @systemdir @tab @tempdir
3607
+ @tray_id @trayiconflashing @trayiconvisible @username @userprofiledir @wday
3608
+ @windowsdir @workingdir @yday @year""".split()
3609
+
3610
+ tokens = {
3611
+ 'root': [
3612
+ (r';.*\n', Comment.Single),
3613
+ (r'(#comments-start|#cs).*?(#comments-end|#ce)', Comment.Multiline),
3614
+ (r'[\[\]{}(),;]', Punctuation),
3615
+ (r'(and|or|not)\b', Operator.Word),
3616
+ (r'[\$|@][a-zA-Z_][a-zA-Z0-9_]*', Name.Variable),
3617
+ (r'!=|==|:=|\.=|<<|>>|[-~+/*%=<>&^|?:!.]', Operator),
3618
+ include('commands'),
3619
+ include('labels'),
3620
+ include('builtInFunctions'),
3621
+ include('builtInMarcros'),
3622
+ (r'"', String, combined('stringescape', 'dqs')),
3623
+ include('numbers'),
3624
+ (r'[a-zA-Z_#@$][a-zA-Z0-9_#@$]*', Name),
3625
+ (r'\\|\'', Text),
3626
+ (r'\`([\,\%\`abfnrtv\-\+;])', String.Escape),
3627
+ (r'_\n', Text), # Line continuation
3628
+ include('garbage'),
3629
+ ],
3630
+ 'commands': [
3631
+ (r'(?i)(\s*)(%s)\b' % '|'.join(keywords),
3632
+ bygroups(Text, Name.Builtin)),
3633
+ ],
3634
+ 'builtInFunctions': [
3635
+ (r'(?i)(%s)\b' % '|'.join(functions),
3636
+ Name.Function),
3637
+ ],
3638
+ 'builtInMarcros': [
3639
+ (r'(?i)(%s)\b' % '|'.join(macros),
3640
+ Name.Variable.Global),
3641
+ ],
3642
+ 'labels': [
3643
+ # sendkeys
3644
+ (r'(^\s*)({\S+?})', bygroups(Text, Name.Label)),
3645
+ ],
3646
+ 'numbers': [
3647
+ (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),
3648
+ (r'\d+[eE][+-]?[0-9]+', Number.Float),
3649
+ (r'0\d+', Number.Oct),
3650
+ (r'0[xX][a-fA-F0-9]+', Number.Hex),
3651
+ (r'\d+L', Number.Integer.Long),
3652
+ (r'\d+', Number.Integer)
3653
+ ],
3654
+ 'stringescape': [
3655
+ (r'\"\"|\`([\,\%\`abfnrtv])', String.Escape),
3656
+ ],
3657
+ 'strings': [
3658
+ (r'[^"\n]+', String),
3659
+ ],
3660
+ 'dqs': [
3661
+ (r'"', String, '#pop'),
3662
+ include('strings')
3663
+ ],
3664
+ 'garbage': [
3665
+ (r'[^\S\n]', Text),
3666
+ ],
3667
+ }