gitlab-pygments.rb 0.3.2 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +71 -0
  4. data/Gemfile +1 -1
  5. data/LICENSE +17 -0
  6. data/README.md +28 -1
  7. data/Rakefile +2 -5
  8. data/lexers +0 -0
  9. data/lib/pygments/mentos.py +19 -12
  10. data/lib/pygments/popen.rb +21 -4
  11. data/lib/pygments/version.rb +1 -1
  12. data/pygments.rb.gemspec +2 -0
  13. data/test/test_pygments.rb +13 -2
  14. data/vendor/custom_lexers/github.py +206 -3
  15. data/vendor/pygments-main/AUTHORS +41 -3
  16. data/vendor/pygments-main/CHANGES +132 -5
  17. data/vendor/pygments-main/LICENSE +1 -1
  18. data/vendor/pygments-main/Makefile +1 -1
  19. data/vendor/pygments-main/REVISION +1 -1
  20. data/vendor/pygments-main/docs/generate.py +1 -1
  21. data/vendor/pygments-main/docs/src/api.txt +1 -1
  22. data/vendor/pygments-main/docs/src/index.txt +1 -1
  23. data/vendor/pygments-main/docs/src/integrate.txt +5 -0
  24. data/vendor/pygments-main/docs/src/java.txt +70 -0
  25. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +52 -0
  26. data/vendor/pygments-main/external/autopygmentize +64 -0
  27. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
  28. data/vendor/pygments-main/external/markdown-processor.py +2 -2
  29. data/vendor/pygments-main/external/moin-parser.py +1 -1
  30. data/vendor/pygments-main/external/rst-directive-old.py +1 -1
  31. data/vendor/pygments-main/external/rst-directive.py +1 -1
  32. data/vendor/pygments-main/pygmentize +1 -1
  33. data/vendor/pygments-main/pygments/__init__.py +2 -2
  34. data/vendor/pygments-main/pygments/cmdline.py +14 -6
  35. data/vendor/pygments-main/pygments/console.py +1 -1
  36. data/vendor/pygments-main/pygments/filter.py +1 -1
  37. data/vendor/pygments-main/pygments/filters/__init__.py +3 -4
  38. data/vendor/pygments-main/pygments/formatter.py +4 -1
  39. data/vendor/pygments-main/pygments/formatters/__init__.py +1 -1
  40. data/vendor/pygments-main/pygments/formatters/_mapping.py +3 -3
  41. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  42. data/vendor/pygments-main/pygments/formatters/html.py +73 -2
  43. data/vendor/pygments-main/pygments/formatters/img.py +2 -2
  44. data/vendor/pygments-main/pygments/formatters/latex.py +9 -9
  45. data/vendor/pygments-main/pygments/formatters/other.py +1 -3
  46. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
  47. data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
  48. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -1
  49. data/vendor/pygments-main/pygments/formatters/terminal256.py +1 -1
  50. data/vendor/pygments-main/pygments/lexer.py +78 -10
  51. data/vendor/pygments-main/pygments/lexers/__init__.py +13 -2
  52. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +1 -1
  54. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
  55. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +1 -1
  56. data/vendor/pygments-main/pygments/lexers/_mapping.py +92 -36
  57. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
  58. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +2 -2
  59. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +4 -3
  60. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
  61. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +11 -0
  62. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
  63. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
  64. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -3
  65. data/vendor/pygments-main/pygments/lexers/agile.py +525 -38
  66. data/vendor/pygments-main/pygments/lexers/asm.py +45 -7
  67. data/vendor/pygments-main/pygments/lexers/compiled.py +1257 -425
  68. data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
  69. data/vendor/pygments-main/pygments/lexers/dotnet.py +97 -62
  70. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  71. data/vendor/pygments-main/pygments/lexers/functional.py +931 -32
  72. data/vendor/pygments-main/pygments/lexers/github.py +206 -3
  73. data/vendor/pygments-main/pygments/lexers/hdl.py +3 -3
  74. data/vendor/pygments-main/pygments/lexers/jvm.py +309 -44
  75. data/vendor/pygments-main/pygments/lexers/math.py +876 -30
  76. data/vendor/pygments-main/pygments/lexers/other.py +956 -517
  77. data/vendor/pygments-main/pygments/lexers/parsers.py +85 -2
  78. data/vendor/pygments-main/pygments/lexers/shell.py +81 -18
  79. data/vendor/pygments-main/pygments/lexers/special.py +1 -1
  80. data/vendor/pygments-main/pygments/lexers/sql.py +2 -2
  81. data/vendor/pygments-main/pygments/lexers/templates.py +119 -8
  82. data/vendor/pygments-main/pygments/lexers/text.py +155 -15
  83. data/vendor/pygments-main/pygments/lexers/web.py +1578 -397
  84. data/vendor/pygments-main/pygments/modeline.py +40 -0
  85. data/vendor/pygments-main/pygments/plugin.py +1 -1
  86. data/vendor/pygments-main/pygments/scanner.py +1 -1
  87. data/vendor/pygments-main/pygments/style.py +1 -1
  88. data/vendor/pygments-main/pygments/styles/__init__.py +1 -1
  89. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  90. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  91. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  92. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  93. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  94. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  95. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  96. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  97. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  98. data/vendor/pygments-main/pygments/styles/monokai.py +1 -1
  99. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  100. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  101. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  102. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  103. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  104. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  105. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  106. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  107. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  108. data/vendor/pygments-main/pygments/token.py +1 -1
  109. data/vendor/pygments-main/pygments/unistring.py +36 -26
  110. data/vendor/pygments-main/pygments/util.py +46 -1
  111. data/vendor/pygments-main/scripts/check_sources.py +2 -2
  112. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +2 -0
  113. data/vendor/pygments-main/scripts/find_codetags.py +1 -1
  114. data/vendor/pygments-main/scripts/find_error.py +5 -6
  115. data/vendor/pygments-main/setup.cfg +1 -0
  116. data/vendor/pygments-main/setup.py +6 -4
  117. data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
  118. data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
  119. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
  120. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
  121. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
  122. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
  123. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
  124. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
  125. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
  126. data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
  127. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
  128. data/vendor/pygments-main/tests/examplefiles/classes.dylan +89 -4
  129. data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
  130. data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
  131. data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
  132. data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
  133. data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
  134. data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
  135. data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
  136. data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
  137. data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
  138. data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
  139. data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
  140. data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
  141. data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
  142. data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
  143. data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
  144. data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
  145. data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
  146. data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
  147. data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
  148. data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
  149. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
  150. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
  151. data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
  152. data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
  153. data/vendor/pygments-main/tests/examplefiles/http_request_example +2 -1
  154. data/vendor/pygments-main/tests/examplefiles/http_response_example +4 -2
  155. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
  156. data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
  157. data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
  158. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
  159. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
  160. data/vendor/pygments-main/tests/examplefiles/matlab_sample +5 -2
  161. data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
  162. data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
  163. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
  164. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
  165. data/vendor/pygments-main/tests/examplefiles/objc_example.m +7 -0
  166. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
  167. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
  168. data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
  169. data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
  170. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
  171. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
  172. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
  173. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
  174. data/vendor/pygments-main/tests/examplefiles/test.R +149 -115
  175. data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
  176. data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
  177. data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
  178. data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
  179. data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
  180. data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
  181. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
  182. data/vendor/pygments-main/tests/examplefiles/type.lisp +16 -0
  183. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
  184. data/vendor/pygments-main/tests/old_run.py +1 -1
  185. data/vendor/pygments-main/tests/run.py +3 -2
  186. data/vendor/pygments-main/tests/support/tags +36 -0
  187. data/vendor/pygments-main/tests/test_basic_api.py +4 -3
  188. data/vendor/pygments-main/tests/test_clexer.py +1 -1
  189. data/vendor/pygments-main/tests/test_cmdline.py +1 -1
  190. data/vendor/pygments-main/tests/test_examplefiles.py +3 -1
  191. data/vendor/pygments-main/tests/test_html_formatter.py +17 -1
  192. data/vendor/pygments-main/tests/test_latex_formatter.py +1 -1
  193. data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
  194. data/vendor/pygments-main/tests/test_perllexer.py +1 -1
  195. data/vendor/pygments-main/tests/test_regexlexer.py +1 -1
  196. data/vendor/pygments-main/tests/test_token.py +1 -1
  197. data/vendor/pygments-main/tests/test_using_api.py +1 -1
  198. data/vendor/pygments-main/tests/test_util.py +22 -3
  199. metadata +84 -16
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c9e666c39dc7808836454fedca53b08cebb0b2c1
4
+ data.tar.gz: 1f3aa26080fdf52b1c7a310b2ad907441ace89cb
5
+ SHA512:
6
+ metadata.gz: acb7ac600833fc8367fa96691172d62fb5f123701f82dfdb5e2e32c296b2ca047c211d580bfd9c5d3781f8f90152f53cc4acc8ebe28c8ece1cbc135cfa8f53ca
7
+ data.tar.gz: ac813b3fcd1e709a8d07d2a957e8717aafaebdae7dca6fc505d47fac5ab640e64d0ef4ca7ece56106256ebe3f83a2c4d678def8f2380f47f8ccc8bd38efdc48d
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ lib/pygments_ext.*
4
4
  tmp
5
5
  pkg
6
6
  *.pyc
7
+ *.gem
@@ -0,0 +1,71 @@
1
+ changelog
2
+ ===========
3
+
4
+ Version 0.5.4 (Nov 3, 2013)
5
+ -----------------------------
6
+
7
+ * Update lexers file
8
+
9
+ Version 0.5.3 (Sep 17, 2013)
10
+ -----------------------------
11
+
12
+ * Fixes for Slash lexer
13
+ * Improve highlighting for Slash lexer
14
+ * Upgrade to latest pygments (1.7, changes summary follows. See pygments changelog for details)
15
+ * Add Clay lexer
16
+ * Add Perl 6 lexer
17
+ * Add Swig lexer
18
+ * Add nesC lexer
19
+ * Add BlitzBasic lexer
20
+ * Add EBNF lexer
21
+ * Add Igor Pro lexer
22
+ * Add Rexx lexer
23
+ * Add Agda lexer
24
+ * Recognize vim modelines
25
+ * Improve Python 3 lexer
26
+ * Improve Opa lexer
27
+ * Improve Julia lexer
28
+ * Improve Lasso lexer
29
+ * Improve Objective C/C++ lexer
30
+ * Improve Ruby lexer
31
+ * Improve Stan lexer
32
+ * Improve JavaScript lexer
33
+ * Improve HTTP lexer
34
+ * Improve Koka lexer
35
+ * Improve Haxe lexer
36
+ * Improve Prolog lexer
37
+ * Improve F# lexer
38
+
39
+ Version 0.5.2 (July 17, 2013)
40
+ -----------------------------
41
+
42
+ * Add Slash lexer
43
+
44
+ Version 0.5.1 (June 25, 2013)
45
+ -----------------------------
46
+
47
+ * Ensure compatability across distros by detecting if `python2` is available
48
+
49
+ Version 0.5.0 (Apr 13, 2013)
50
+ -----------------------------
51
+
52
+ * Use #rstrip to fix table mode bug
53
+
54
+ Version 0.4.2 (Feb 25, 2013)
55
+ -----------------------------
56
+
57
+ * Add new lexers, including custom lexers
58
+
59
+ Version 0.3.7 (Jan 2, 2013)
60
+ -----------------------------
61
+
62
+ * Fixed missing custom lexers
63
+ * Added syntax highlighting for Hxml
64
+
65
+ Version 0.3.4 (Dec 28, 2012)
66
+ -----------------------------
67
+
68
+ * Add support for Windows
69
+ * Add MIT license
70
+
71
+
data/Gemfile CHANGED
@@ -1,2 +1,2 @@
1
- source :rubygems
1
+ source "https://rubygems.org"
2
2
  gemspec
data/LICENSE ADDED
@@ -0,0 +1,17 @@
1
+ The MIT License (MIT)
2
+ Copyright (c) Ted Nyman and Aman Gupta, 2012-2013
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
5
+ associated documentation files (the "Software"), to deal in the Software without restriction,
6
+ including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
7
+ and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
8
+ subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all copies or substantial
11
+ portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
14
+ LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
15
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
16
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
17
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -14,7 +14,8 @@ pygments.rb request.
14
14
 
15
15
  ## system requirements
16
16
 
17
- - Python 2.5+
17
+ - Python 2.5, Python 2.6, or Python 2.7. You can always use Python 2.x from a `virtualenv` if
18
+ your default Python install is 3.x.
18
19
 
19
20
  ## usage
20
21
 
@@ -49,6 +50,12 @@ Pygments.css
49
50
  Pygments.css('.highlight')
50
51
  ```
51
52
 
53
+ To use a specific pygments style, pass the `:style` option to the `#css` method:
54
+
55
+ ``` ruby
56
+ Pygments.css(:style => "monokai")
57
+ ```
58
+
52
59
  Other Pygments high-level API methods are also available.
53
60
  These methods return arrays detailing all the available lexers, formatters,
54
61
  and styles.
@@ -66,6 +73,8 @@ To use a custom pygments installation, specify the path to
66
73
  Pygments.start("/path/to/pygments")
67
74
  ```
68
75
 
76
+ If you'd like logging, set the environmental variable `MENTOS_LOG` to a file path for your logfile.
77
+
69
78
  ## benchmarks
70
79
 
71
80
 
@@ -87,5 +96,23 @@ Pygments.start("/path/to/pygments")
87
96
  pygments popen (process already started) 0.010000 0.000000 0.010000 ( 0.676515)
88
97
  pygments popen (process already started 2) 0.000000 0.010000 0.010000 ( 0.674189)
89
98
 
99
+ ## license
100
+
101
+ The MIT License (MIT)
102
+
103
+ Copyright (c) Ted Nyman and Aman Gupta, 2012-2013
104
+
105
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
106
+ associated documentation files (the "Software"), to deal in the Software without restriction,
107
+ including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
108
+ and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
109
+ subject to the following conditions:
90
110
 
111
+ The above copyright notice and this permission notice shall be included in all copies or substantial
112
+ portions of the Software.
91
113
 
114
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
115
+ LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
116
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
117
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
118
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile CHANGED
@@ -9,9 +9,7 @@ task :default => :test
9
9
 
10
10
  GEMSPEC = eval(File.read('pygments.rb.gemspec'))
11
11
 
12
- require 'rake/gempackagetask'
13
- Rake::GemPackageTask.new(GEMSPEC) do |pkg|
14
- end
12
+ require 'rubygems/package_task'
15
13
 
16
14
  # ==========================================================
17
15
  # Testing
@@ -33,14 +31,13 @@ end
33
31
 
34
32
  # ==========================================================
35
33
  # Cache lexers
36
- # # ==========================================================
34
+ # ==========================================================
37
35
 
38
36
  # Write all the lexers to a file for easy lookup
39
37
  task :lexers do
40
38
  sh "ruby cache-lexers.rb"
41
39
  end
42
40
 
43
-
44
41
  # ==========================================================
45
42
  # Vendor
46
43
  # ==========================================================
data/lexers CHANGED
Binary file
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python2
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
- import sys, re, os, signal, resource
4
+ import sys, re, os, signal
5
5
  import traceback
6
6
  if 'PYGMENTS_PATH' in os.environ:
7
7
  sys.path.insert(0, os.environ['PYGMENTS_PATH'])
@@ -320,20 +320,27 @@ def main():
320
320
  # Signal handlers to trap signals.
321
321
  signal.signal(signal.SIGINT, _signal_handler)
322
322
  signal.signal(signal.SIGTERM, _signal_handler)
323
- signal.signal(signal.SIGHUP, _signal_handler)
323
+ if sys.platform != "win32":
324
+ signal.signal(signal.SIGHUP, _signal_handler)
324
325
 
325
326
  mentos = Mentos()
326
327
 
327
- # close fd's inherited from the ruby parent
328
- maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1]
329
- if maxfd == resource.RLIM_INFINITY:
330
- maxfd = 65536
331
-
332
- for fd in range(3, maxfd):
333
- try:
334
- os.close(fd)
335
- except:
336
- pass
328
+ if sys.platform == "win32":
329
+ # disable CRLF
330
+ import msvcrt
331
+ msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
332
+ else:
333
+ # close fd's inherited from the ruby parent
334
+ import resource
335
+ maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1]
336
+ if maxfd == resource.RLIM_INFINITY:
337
+ maxfd = 65536
338
+
339
+ for fd in range(3, maxfd):
340
+ try:
341
+ os.close(fd)
342
+ except:
343
+ pass
337
344
 
338
345
  mentos.start()
339
346
 
@@ -20,12 +20,13 @@ module Pygments
20
20
  # Python process that talks to the Pygments library. We'll talk back and
21
21
  # forth across this pipe.
22
22
  def start(pygments_path = File.expand_path('../../../vendor/pygments-main/', __FILE__))
23
+ is_windows = RUBY_PLATFORM =~ /mswin|mingw/
23
24
  begin
24
- @log = Logger.new(ENV['MENTOS_LOG'] ||= '/dev/null')
25
+ @log = Logger.new(ENV['MENTOS_LOG'] ||= is_windows ? 'NUL:' : '/dev/null')
25
26
  @log.level = Logger::INFO
26
27
  @log.datetime_format = "%Y-%m-%d %H:%M "
27
28
  rescue
28
- @log = Logger.new('/dev/null')
29
+ @log = Logger.new(is_windows ? 'NUL:' : '/dev/null')
29
30
  end
30
31
 
31
32
  ENV['PYGMENTS_PATH'] = pygments_path
@@ -35,10 +36,21 @@ module Pygments
35
36
 
36
37
  # A pipe to the mentos python process. #popen4 gives us
37
38
  # the pid and three IO objects to write and read.
38
- @pid, @in, @out, @err = popen4(File.expand_path('../mentos.py', __FILE__))
39
+ script = "#{python_binary} #{File.expand_path('../mentos.py', __FILE__)}"
40
+ @pid, @in, @out, @err = popen4(script)
39
41
  @log.info "[#{Time.now.iso8601}] Starting pid #{@pid.to_s} with fd #{@out.to_i.to_s}."
40
42
  end
41
43
 
44
+ # Detect a suitable Python binary to use. We can't just use `python2`
45
+ # because apparently some old versions of Debian only have `python` or
46
+ # something like that.
47
+ def python_binary
48
+ @python_binary ||= begin
49
+ `which python2`
50
+ $?.success? ? "python2" : "python"
51
+ end
52
+ end
53
+
42
54
  # Stop the child process by issuing a kill -9.
43
55
  #
44
56
  # We then call waitpid() with the pid, which waits for that particular
@@ -126,6 +138,10 @@ module Pygments
126
138
  :filenames => lxr[2],
127
139
  :mimetypes => lxr[3]
128
140
  }
141
+ hash["Augeas"] = {:name=>"Augeas", :aliases=>["augeas"], :filenames=>["*.aug"], :mimetypes=>[]}
142
+ hash["dasm16"] = {:name=>"dasm16", :aliases=>["DASM16"], :filenames=>["*.dasm16", "*.dasm"], :mimetypes=>['text/x-dasm16']}
143
+ hash["Puppet"] = {:name=>"Puppet", :aliases=>["puppet"], :filenames=>["*.pp"], :mimetypes=>[]}
144
+ hash["Slash"] = {:name=>"Slash", :aliases=>["slash"], :filenames=>["*.sl"], :mimetypes=>[]}
129
145
  hash
130
146
  end
131
147
  end
@@ -358,7 +374,8 @@ module Pygments
358
374
  unless method == :lexer_name_for || method == :highlight || method == :css
359
375
  res = Yajl.load(res, :symbolize_keys => true)
360
376
  end
361
- res = res[0..-2]
377
+ res = res.rstrip if res.class == String
378
+ res
362
379
  end
363
380
 
364
381
  # Convert a text header into JSON for easy access.
@@ -1,3 +1,3 @@
1
1
  module Pygments
2
- VERSION = '0.3.2'
2
+ VERSION = '0.5.4'
3
3
  end
@@ -9,6 +9,8 @@ Gem::Specification.new do |s|
9
9
 
10
10
  s.homepage = 'http://github.com/gitlabhq/pygments.rb'
11
11
  s.has_rdoc = false
12
+ s.license = 'MIT'
13
+
12
14
 
13
15
  s.authors = ['Aman Gupta', 'Ted Nyman']
14
16
  s.email = ['aman@tmm1.net']
@@ -17,10 +17,22 @@ class PygmentsHighlightTest < Test::Unit::TestCase
17
17
  assert_equal '<div class', code[0..9]
18
18
  end
19
19
 
20
+ def test_full_html_highlight
21
+ code = P.highlight(RUBY_CODE)
22
+ assert_match '<span class="c1">#!/usr/bin/ruby</span>', code
23
+ assert_equal "<div class=\"highlight\"><pre><span class=\"c1\">#!/usr/bin/ruby</span>\n<span class=\"nb\">puts</span> <span class=\"s1\">&#39;foo&#39;</span>\n</pre></div>", code
24
+ end
25
+
26
+ def test_full_table_highlight
27
+ code = P.highlight(RUBY_CODE, :options => {:linenos => true})
28
+ assert_match '<span class="c1">#!/usr/bin/ruby</span>', code
29
+ assert_equal "<table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre>1\n2</pre></div></td><td class=\"code\"><div class=\"highlight\"><pre><span class=\"c1\">#!/usr/bin/ruby</span>\n<span class=\"nb\">puts</span> <span class=\"s1\">&#39;foo&#39;</span>\n</pre></div>\n</td></tr></table>", code
30
+ end
31
+
20
32
  def test_highlight_works_with_larger_files
21
33
  code = P.highlight(REDIS_CODE)
22
34
  assert_match 'used_memory_peak_human', code
23
- assert_equal 454107, code.bytesize.to_i
35
+ assert_equal 455203, code.bytesize.to_i
24
36
  end
25
37
 
26
38
  def test_returns_nil_on_timeout
@@ -210,7 +222,6 @@ class PygmentsLexerClassTest < Test::Unit::TestCase
210
222
  assert_equal P::Lexer['Groff'], P::Lexer.find_by_extname('.1')
211
223
  assert_equal P::Lexer['Groff'], P::Lexer.find_by_extname('.3')
212
224
  assert_equal P::Lexer['C'], P::Lexer.find_by_extname('.c')
213
- assert_equal P::Lexer['C'], P::Lexer.find_by_extname('.h')
214
225
  assert_equal P::Lexer['Python'], P::Lexer.find_by_extname('.py')
215
226
  assert_equal P::Lexer['Java'], P::Lexer.find_by_extname('.java')
216
227
  end
@@ -10,11 +10,12 @@
10
10
  """
11
11
  import re
12
12
 
13
- from pygments.lexer import RegexLexer, include, bygroups, using, DelegatingLexer
13
+ from pygments.lexer import RegexLexer, ExtendedRegexLexer, include, bygroups, \
14
+ using, DelegatingLexer
14
15
  from pygments.token import Text, Name, Number, String, Comment, Punctuation, \
15
- Other, Keyword, Operator, Literal
16
+ Other, Keyword, Operator, Literal, Whitespace
16
17
 
17
- __all__ = ['Dasm16Lexer', 'PuppetLexer', 'AugeasLexer']
18
+ __all__ = ['Dasm16Lexer', 'PuppetLexer', 'AugeasLexer', "TOMLLexer", "SlashLexer"]
18
19
 
19
20
  class Dasm16Lexer(RegexLexer):
20
21
  """
@@ -360,3 +361,205 @@ class AugeasLexer(RegexLexer):
360
361
  (r'[\*\)]', Comment.Multiline)
361
362
  ],
362
363
  }
364
+
365
+ class TOMLLexer(RegexLexer):
366
+ """
367
+ Lexer for TOML, a simple language for config files
368
+ """
369
+
370
+ name = 'TOML'
371
+ aliases = ['toml']
372
+ filenames = ['*.toml']
373
+
374
+ tokens = {
375
+ 'root': [
376
+
377
+ # Basics, comments, strings
378
+ (r'\s+', Text),
379
+ (r'#.*?$', Comment.Single),
380
+ (r'"(\\\\|\\"|[^"])*"', String),
381
+ (r'(true|false)$', Keyword.Constant),
382
+ ('[a-zA-Z_][a-zA-Z0-9_\-]*', Name),
383
+
384
+ # Datetime
385
+ (r'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z', Number.Integer),
386
+
387
+ # Numbers
388
+ (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?', Number.Float),
389
+ (r'\d+[eE][+-]?[0-9]+j?', Number.Float),
390
+ (r'\-?\d+', Number.Integer),
391
+
392
+ # Punctuation
393
+ (r'[]{}:(),;[]', Punctuation),
394
+ (r'\.', Punctuation),
395
+
396
+ # Operators
397
+ (r'=', Operator)
398
+
399
+ ]
400
+ }
401
+
402
+ class SlashLanguageLexer(ExtendedRegexLexer):
403
+ _nkw = r'(?=[^a-zA-Z_0-9])'
404
+
405
+ def move_state(new_state):
406
+ return ("#pop", new_state)
407
+
408
+ def right_angle_bracket(lexer, match, ctx):
409
+ if len(ctx.stack) > 1 and ctx.stack[-2] == "string":
410
+ ctx.stack.pop()
411
+ yield match.start(), String.Interpol, u"}"
412
+ ctx.pos = match.end()
413
+ pass
414
+
415
+ tokens = {
416
+ "root": [
417
+ (r"<%=", Comment.Preproc, move_state("slash")),
418
+ (r"<%!!", Comment.Preproc, move_state("slash")),
419
+ (r"<%#.*?%>", Comment.Multiline),
420
+ (r"<%", Comment.Preproc, move_state("slash")),
421
+ (r".|\n", Other),
422
+ ],
423
+ "string": [
424
+ (r"\\", String.Escape, move_state("string_e")),
425
+ (r"\"", String, move_state("slash")),
426
+ (r"#\{", String.Interpol, "slash"),
427
+ (r'.|\n', String),
428
+ ],
429
+ "string_e": [
430
+ (r'n', String.Escape, move_state("string")),
431
+ (r't', String.Escape, move_state("string")),
432
+ (r'r', String.Escape, move_state("string")),
433
+ (r'e', String.Escape, move_state("string")),
434
+ (r'x[a-fA-F0-9]{2}', String.Escape, move_state("string")),
435
+ (r'.', String.Escape, move_state("string")),
436
+ ],
437
+ "regexp": [
438
+ (r'}[a-z]*', String.Regex, move_state("slash")),
439
+ (r'\\(.|\n)', String.Regex),
440
+ (r'{', String.Regex, "regexp_r"),
441
+ (r'.|\n', String.Regex),
442
+ ],
443
+ "regexp_r": [
444
+ (r'}[a-z]*', String.Regex, "#pop"),
445
+ (r'\\(.|\n)', String.Regex),
446
+ (r'{', String.Regex, "regexp_r"),
447
+ ],
448
+ "slash": [
449
+ (r"%>", Comment.Preproc, move_state("root")),
450
+ (r"\"", String, move_state("string")),
451
+ (r"'[a-zA-Z0-9_]+", String),
452
+ (r'%r{', String.Regex, move_state("regexp")),
453
+ (r'/\*.*?\*/', Comment.Multiline),
454
+ (r"(#|//).*?\n", Comment.Single),
455
+ (r'-?[0-9]+e[+-]?[0-9]+', Number.Float),
456
+ (r'-?[0-9]+\.[0-9]+(e[+-]?[0-9]+)?', Number.Float),
457
+ (r'-?[0-9]+', Number.Integer),
458
+ (r'nil'+_nkw, Name.Builtin),
459
+ (r'true'+_nkw, Name.Builtin),
460
+ (r'false'+_nkw, Name.Builtin),
461
+ (r'self'+_nkw, Name.Builtin),
462
+ (r'(class)(\s+)([A-Z][a-zA-Z0-9_\']*)',
463
+ bygroups(Keyword, Whitespace, Name.Class)),
464
+ (r'class'+_nkw, Keyword),
465
+ (r'extends'+_nkw, Keyword),
466
+ (r'(def)(\s+)(self)(\s*)(\.)(\s*)([a-z_][a-zA-Z0-9_\']*=?|<<|>>|==|<=>|<=|<|>=|>|\+|-(self)?|~(self)?|\*|/|%|^|&&|&|\||\[\]=?)',
467
+ bygroups(Keyword, Whitespace, Name.Builtin, Whitespace, Punctuation, Whitespace, Name.Function)),
468
+ (r'(def)(\s+)([a-z_][a-zA-Z0-9_\']*=?|<<|>>|==|<=>|<=|<|>=|>|\+|-(self)?|~(self)?|\*|/|%|^|&&|&|\||\[\]=?)',
469
+ bygroups(Keyword, Whitespace, Name.Function)),
470
+ (r'def'+_nkw, Keyword),
471
+ (r'if'+_nkw, Keyword),
472
+ (r'elsif'+_nkw, Keyword),
473
+ (r'else'+_nkw, Keyword),
474
+ (r'unless'+_nkw, Keyword),
475
+ (r'for'+_nkw, Keyword),
476
+ (r'in'+_nkw, Keyword),
477
+ (r'while'+_nkw, Keyword),
478
+ (r'until'+_nkw, Keyword),
479
+ (r'and'+_nkw, Keyword),
480
+ (r'or'+_nkw, Keyword),
481
+ (r'not'+_nkw, Keyword),
482
+ (r'lambda'+_nkw, Keyword),
483
+ (r'try'+_nkw, Keyword),
484
+ (r'catch'+_nkw, Keyword),
485
+ (r'return'+_nkw, Keyword),
486
+ (r'next'+_nkw, Keyword),
487
+ (r'last'+_nkw, Keyword),
488
+ (r'throw'+_nkw, Keyword),
489
+ (r'use'+_nkw, Keyword),
490
+ (r'switch'+_nkw, Keyword),
491
+ (r'\\', Keyword),
492
+ (r'λ', Keyword),
493
+ (r'__FILE__'+_nkw, Name.Builtin.Pseudo),
494
+ (r'__LINE__'+_nkw, Name.Builtin.Pseudo),
495
+ (r'[A-Z][a-zA-Z0-9_\']*'+_nkw, Name.Constant),
496
+ (r'[a-z_][a-zA-Z0-9_\']*'+_nkw, Name),
497
+ (r'@[a-z_][a-zA-Z0-9_\']*'+_nkw, Name.Variable.Instance),
498
+ (r'@@[a-z_][a-zA-Z0-9_\']*'+_nkw, Name.Variable.Class),
499
+ (r'\(', Punctuation),
500
+ (r'\)', Punctuation),
501
+ (r'\[', Punctuation),
502
+ (r'\]', Punctuation),
503
+ (r'\{', Punctuation),
504
+ (r'\}', right_angle_bracket),
505
+ (r';', Punctuation),
506
+ (r',', Punctuation),
507
+ (r'<<=', Operator),
508
+ (r'>>=', Operator),
509
+ (r'<<', Operator),
510
+ (r'>>', Operator),
511
+ (r'==', Operator),
512
+ (r'!=', Operator),
513
+ (r'=>', Operator),
514
+ (r'=', Operator),
515
+ (r'<=>', Operator),
516
+ (r'<=', Operator),
517
+ (r'>=', Operator),
518
+ (r'<', Operator),
519
+ (r'>', Operator),
520
+ (r'\+\+', Operator),
521
+ (r'\+=', Operator),
522
+ (r'-=', Operator),
523
+ (r'\*\*=', Operator),
524
+ (r'\*=', Operator),
525
+ (r'\*\*', Operator),
526
+ (r'\*', Operator),
527
+ (r'/=', Operator),
528
+ (r'\+', Operator),
529
+ (r'-', Operator),
530
+ (r'/', Operator),
531
+ (r'%=', Operator),
532
+ (r'%', Operator),
533
+ (r'^=', Operator),
534
+ (r'&&=', Operator),
535
+ (r'&=', Operator),
536
+ (r'&&', Operator),
537
+ (r'&', Operator),
538
+ (r'\|\|=', Operator),
539
+ (r'\|=', Operator),
540
+ (r'\|\|', Operator),
541
+ (r'\|', Operator),
542
+ (r'!', Operator),
543
+ (r'\.\.\.', Operator),
544
+ (r'\.\.', Operator),
545
+ (r'\.', Operator),
546
+ (r'::', Operator),
547
+ (r':', Operator),
548
+ (r'(\s|\n)+', Whitespace),
549
+ (r'[a-z_][a-zA-Z0-9_\']*', Name.Variable),
550
+ ],
551
+ }
552
+
553
+ class SlashLexer(DelegatingLexer):
554
+ """
555
+ Lexer for the Slash programming language.
556
+ """
557
+
558
+ name = 'Slash'
559
+ aliases = ['slash']
560
+ filenames = ['*.sl']
561
+
562
+ def __init__(self, **options):
563
+ from pygments.lexers.web import HtmlLexer
564
+ super(SlashLexer, self).__init__(HtmlLexer, SlashLanguageLexer, **options)
565
+