mortar-pygments.rb 0.5.5

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 (472) hide show
  1. data/.gitignore +6 -0
  2. data/CHANGELOG.md +71 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE +17 -0
  5. data/README.md +121 -0
  6. data/Rakefile +66 -0
  7. data/bench.rb +22 -0
  8. data/cache-lexers.rb +8 -0
  9. data/lexers +0 -0
  10. data/lib/pygments/lexer.rb +148 -0
  11. data/lib/pygments/mentos.py +351 -0
  12. data/lib/pygments/popen.rb +406 -0
  13. data/lib/pygments/version.rb +3 -0
  14. data/lib/pygments.rb +8 -0
  15. data/pygments.rb.gemspec +25 -0
  16. data/test/test_data.c +2581 -0
  17. data/test/test_data.py +514 -0
  18. data/test/test_data_generated +2582 -0
  19. data/test/test_pygments.rb +287 -0
  20. data/vendor/custom_lexers/github.py +565 -0
  21. data/vendor/pygments-main/AUTHORS +153 -0
  22. data/vendor/pygments-main/CHANGES +889 -0
  23. data/vendor/pygments-main/LICENSE +25 -0
  24. data/vendor/pygments-main/MANIFEST.in +6 -0
  25. data/vendor/pygments-main/Makefile +59 -0
  26. data/vendor/pygments-main/REVISION +1 -0
  27. data/vendor/pygments-main/TODO +15 -0
  28. data/vendor/pygments-main/docs/generate.py +472 -0
  29. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  30. data/vendor/pygments-main/docs/src/api.txt +270 -0
  31. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  32. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  33. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  34. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  35. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  36. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  37. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  38. data/vendor/pygments-main/docs/src/index.txt +69 -0
  39. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  40. data/vendor/pygments-main/docs/src/integrate.txt +48 -0
  41. data/vendor/pygments-main/docs/src/java.txt +70 -0
  42. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +603 -0
  43. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  44. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  45. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  46. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  47. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  48. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  49. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  50. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  51. data/vendor/pygments-main/external/autopygmentize +64 -0
  52. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
  53. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  54. data/vendor/pygments-main/external/moin-parser.py +112 -0
  55. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  56. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  57. data/vendor/pygments-main/external/rst-directive.py +83 -0
  58. data/vendor/pygments-main/ez_setup.py +276 -0
  59. data/vendor/pygments-main/pygmentize +7 -0
  60. data/vendor/pygments-main/pygments/__init__.py +91 -0
  61. data/vendor/pygments-main/pygments/cmdline.py +441 -0
  62. data/vendor/pygments-main/pygments/console.py +74 -0
  63. data/vendor/pygments-main/pygments/filter.py +74 -0
  64. data/vendor/pygments-main/pygments/filters/__init__.py +356 -0
  65. data/vendor/pygments-main/pygments/formatter.py +95 -0
  66. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  67. data/vendor/pygments-main/pygments/formatters/_mapping.py +92 -0
  68. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  69. data/vendor/pygments-main/pygments/formatters/html.py +821 -0
  70. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  71. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  72. data/vendor/pygments-main/pygments/formatters/other.py +115 -0
  73. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  74. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  75. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  76. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  77. data/vendor/pygments-main/pygments/lexer.py +765 -0
  78. data/vendor/pygments-main/pygments/lexers/__init__.py +240 -0
  79. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  80. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  81. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
  82. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  83. data/vendor/pygments-main/pygments/lexers/_mapping.py +355 -0
  84. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
  85. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  86. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +233 -0
  87. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
  88. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +40 -0
  89. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
  90. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
  91. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -0
  92. data/vendor/pygments-main/pygments/lexers/agile.py +2290 -0
  93. data/vendor/pygments-main/pygments/lexers/asm.py +398 -0
  94. data/vendor/pygments-main/pygments/lexers/compiled.py +3723 -0
  95. data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
  96. data/vendor/pygments-main/pygments/lexers/dotnet.py +671 -0
  97. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  98. data/vendor/pygments-main/pygments/lexers/functional.py +2731 -0
  99. data/vendor/pygments-main/pygments/lexers/github.py +565 -0
  100. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  101. data/vendor/pygments-main/pygments/lexers/jvm.py +1112 -0
  102. data/vendor/pygments-main/pygments/lexers/math.py +1918 -0
  103. data/vendor/pygments-main/pygments/lexers/other.py +3778 -0
  104. data/vendor/pygments-main/pygments/lexers/parsers.py +778 -0
  105. data/vendor/pygments-main/pygments/lexers/shell.py +424 -0
  106. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  107. data/vendor/pygments-main/pygments/lexers/sql.py +609 -0
  108. data/vendor/pygments-main/pygments/lexers/templates.py +1742 -0
  109. data/vendor/pygments-main/pygments/lexers/text.py +1893 -0
  110. data/vendor/pygments-main/pygments/lexers/web.py +4045 -0
  111. data/vendor/pygments-main/pygments/modeline.py +40 -0
  112. data/vendor/pygments-main/pygments/plugin.py +74 -0
  113. data/vendor/pygments-main/pygments/scanner.py +104 -0
  114. data/vendor/pygments-main/pygments/style.py +117 -0
  115. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  116. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  117. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  118. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  119. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  120. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  121. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  122. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  123. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  124. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  125. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  126. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  127. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  128. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  129. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  130. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  131. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  132. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  133. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  134. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  135. data/vendor/pygments-main/pygments/token.py +195 -0
  136. data/vendor/pygments-main/pygments/unistring.py +140 -0
  137. data/vendor/pygments-main/pygments/util.py +277 -0
  138. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  139. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +32 -0
  140. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  141. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  142. data/vendor/pygments-main/scripts/find_error.py +170 -0
  143. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  144. data/vendor/pygments-main/scripts/pylintrc +301 -0
  145. data/vendor/pygments-main/scripts/reindent.py +291 -0
  146. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  147. data/vendor/pygments-main/setup.cfg +7 -0
  148. data/vendor/pygments-main/setup.py +90 -0
  149. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  150. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  151. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  152. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  153. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  154. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  155. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  156. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  157. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  158. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  159. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  160. data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
  161. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  162. data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
  163. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  164. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  165. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
  166. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  167. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  168. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
  169. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
  170. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
  171. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  172. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  173. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  174. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  175. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
  176. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  177. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  178. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  179. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  180. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  181. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  182. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  183. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  184. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  185. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  186. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
  187. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  188. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  189. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
  190. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  191. data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
  192. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
  193. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  194. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  195. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  196. data/vendor/pygments-main/tests/examplefiles/classes.dylan +125 -0
  197. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  198. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  199. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  200. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  201. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  202. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  203. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  204. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  205. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  206. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  207. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  208. data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
  209. data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
  210. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  211. data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
  212. data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
  213. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  214. data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
  215. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  216. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  217. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  218. data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
  219. data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
  220. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  221. data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
  222. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  223. data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
  224. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  225. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  226. data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
  227. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  228. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  229. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  230. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  231. data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
  232. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  233. data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
  234. data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
  235. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  236. data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
  237. data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
  238. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  239. data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
  240. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  241. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  242. data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
  243. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  244. data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
  245. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  246. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  247. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  248. data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
  249. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  250. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  251. data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
  252. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  253. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  254. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  255. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  256. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  257. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  258. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  259. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  260. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  261. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
  262. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  263. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  264. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  265. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  266. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  267. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
  268. data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
  269. data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
  270. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  271. data/vendor/pygments-main/tests/examplefiles/http_request_example +15 -0
  272. data/vendor/pygments-main/tests/examplefiles/http_response_example +29 -0
  273. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  274. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
  275. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  276. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  277. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  278. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  279. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  280. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  281. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  282. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  283. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  284. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  285. data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
  286. data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
  287. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  288. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  289. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
  290. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
  291. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  292. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  293. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  294. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  295. data/vendor/pygments-main/tests/examplefiles/matlab_sample +30 -0
  296. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  297. data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
  298. data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
  299. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
  300. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  301. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  302. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  303. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
  304. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  305. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  306. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  307. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  308. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  309. data/vendor/pygments-main/tests/examplefiles/objc_example.m +32 -0
  310. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  311. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  312. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  313. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  314. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  315. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
  316. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  317. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  318. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  319. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  320. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  321. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  322. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
  323. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  324. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  325. data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
  326. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  327. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  328. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  329. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  330. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  331. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  332. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  333. data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
  334. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  335. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
  336. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  337. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
  338. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  339. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  340. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  341. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  342. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  343. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  344. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  345. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  346. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  347. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  348. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  349. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
  350. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
  351. data/vendor/pygments-main/tests/examplefiles/test.R +153 -0
  352. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  353. data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
  354. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  355. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  356. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  357. data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
  358. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  359. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  360. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  361. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  362. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  363. data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
  364. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  365. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  366. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  367. data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
  368. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  369. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  370. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  371. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  372. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  373. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  374. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  375. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  376. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  377. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  378. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  379. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  380. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  381. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  382. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  383. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  384. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  385. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  386. data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
  387. data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
  388. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  389. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  390. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  391. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  392. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  393. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  394. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  395. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  396. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  397. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  398. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  399. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  400. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  401. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  402. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  403. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
  404. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  405. data/vendor/pygments-main/tests/examplefiles/type.lisp +1218 -0
  406. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  407. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  408. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  409. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
  410. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  411. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  412. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  413. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  414. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  415. data/vendor/pygments-main/tests/old_run.py +138 -0
  416. data/vendor/pygments-main/tests/run.py +49 -0
  417. data/vendor/pygments-main/tests/support/tags +36 -0
  418. data/vendor/pygments-main/tests/support.py +15 -0
  419. data/vendor/pygments-main/tests/test_basic_api.py +295 -0
  420. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  421. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  422. data/vendor/pygments-main/tests/test_examplefiles.py +99 -0
  423. data/vendor/pygments-main/tests/test_html_formatter.py +178 -0
  424. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  425. data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
  426. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  427. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  428. data/vendor/pygments-main/tests/test_token.py +46 -0
  429. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  430. data/vendor/pygments-main/tests/test_util.py +135 -0
  431. data/vendor/simplejson/.gitignore +10 -0
  432. data/vendor/simplejson/.travis.yml +5 -0
  433. data/vendor/simplejson/CHANGES.txt +291 -0
  434. data/vendor/simplejson/LICENSE.txt +19 -0
  435. data/vendor/simplejson/MANIFEST.in +5 -0
  436. data/vendor/simplejson/README.rst +19 -0
  437. data/vendor/simplejson/conf.py +179 -0
  438. data/vendor/simplejson/index.rst +628 -0
  439. data/vendor/simplejson/scripts/make_docs.py +18 -0
  440. data/vendor/simplejson/setup.py +104 -0
  441. data/vendor/simplejson/simplejson/__init__.py +510 -0
  442. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  443. data/vendor/simplejson/simplejson/decoder.py +425 -0
  444. data/vendor/simplejson/simplejson/encoder.py +567 -0
  445. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  446. data/vendor/simplejson/simplejson/scanner.py +77 -0
  447. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  448. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  449. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  450. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  451. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  452. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  453. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  454. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  455. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  456. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  457. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  458. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  459. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  460. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  461. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  462. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  463. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  464. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  465. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  466. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  467. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  468. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  469. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  470. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  471. data/vendor/simplejson/simplejson/tool.py +39 -0
  472. metadata +566 -0
@@ -0,0 +1,356 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.filters
4
+ ~~~~~~~~~~~~~~~~
5
+
6
+ Module containing filter lookup functions and default
7
+ filters.
8
+
9
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
10
+ :license: BSD, see LICENSE for details.
11
+ """
12
+
13
+ import re
14
+
15
+ from pygments.token import String, Comment, Keyword, Name, Error, Whitespace, \
16
+ string_to_tokentype
17
+ from pygments.filter import Filter
18
+ from pygments.util import get_list_opt, get_int_opt, get_bool_opt, \
19
+ get_choice_opt, ClassNotFound, OptionError
20
+ from pygments.plugin import find_plugin_filters
21
+
22
+
23
+ def find_filter_class(filtername):
24
+ """
25
+ Lookup a filter by name. Return None if not found.
26
+ """
27
+ if filtername in FILTERS:
28
+ return FILTERS[filtername]
29
+ for name, cls in find_plugin_filters():
30
+ if name == filtername:
31
+ return cls
32
+ return None
33
+
34
+
35
+ def get_filter_by_name(filtername, **options):
36
+ """
37
+ Return an instantiated filter. Options are passed to the filter
38
+ initializer if wanted. Raise a ClassNotFound if not found.
39
+ """
40
+ cls = find_filter_class(filtername)
41
+ if cls:
42
+ return cls(**options)
43
+ else:
44
+ raise ClassNotFound('filter %r not found' % filtername)
45
+
46
+
47
+ def get_all_filters():
48
+ """
49
+ Return a generator of all filter names.
50
+ """
51
+ for name in FILTERS:
52
+ yield name
53
+ for name, _ in find_plugin_filters():
54
+ yield name
55
+
56
+
57
+ def _replace_special(ttype, value, regex, specialttype,
58
+ replacefunc=lambda x: x):
59
+ last = 0
60
+ for match in regex.finditer(value):
61
+ start, end = match.start(), match.end()
62
+ if start != last:
63
+ yield ttype, value[last:start]
64
+ yield specialttype, replacefunc(value[start:end])
65
+ last = end
66
+ if last != len(value):
67
+ yield ttype, value[last:]
68
+
69
+
70
+ class CodeTagFilter(Filter):
71
+ """
72
+ Highlight special code tags in comments and docstrings.
73
+
74
+ Options accepted:
75
+
76
+ `codetags` : list of strings
77
+ A list of strings that are flagged as code tags. The default is to
78
+ highlight ``XXX``, ``TODO``, ``BUG`` and ``NOTE``.
79
+ """
80
+
81
+ def __init__(self, **options):
82
+ Filter.__init__(self, **options)
83
+ tags = get_list_opt(options, 'codetags',
84
+ ['XXX', 'TODO', 'BUG', 'NOTE'])
85
+ self.tag_re = re.compile(r'\b(%s)\b' % '|'.join([
86
+ re.escape(tag) for tag in tags if tag
87
+ ]))
88
+
89
+ def filter(self, lexer, stream):
90
+ regex = self.tag_re
91
+ for ttype, value in stream:
92
+ if ttype in String.Doc or \
93
+ ttype in Comment and \
94
+ ttype not in Comment.Preproc:
95
+ for sttype, svalue in _replace_special(ttype, value, regex,
96
+ Comment.Special):
97
+ yield sttype, svalue
98
+ else:
99
+ yield ttype, value
100
+
101
+
102
+ class KeywordCaseFilter(Filter):
103
+ """
104
+ Convert keywords to lowercase or uppercase or capitalize them, which
105
+ means first letter uppercase, rest lowercase.
106
+
107
+ This can be useful e.g. if you highlight Pascal code and want to adapt the
108
+ code to your styleguide.
109
+
110
+ Options accepted:
111
+
112
+ `case` : string
113
+ The casing to convert keywords to. Must be one of ``'lower'``,
114
+ ``'upper'`` or ``'capitalize'``. The default is ``'lower'``.
115
+ """
116
+
117
+ def __init__(self, **options):
118
+ Filter.__init__(self, **options)
119
+ case = get_choice_opt(options, 'case', ['lower', 'upper', 'capitalize'], 'lower')
120
+ self.convert = getattr(unicode, case)
121
+
122
+ def filter(self, lexer, stream):
123
+ for ttype, value in stream:
124
+ if ttype in Keyword:
125
+ yield ttype, self.convert(value)
126
+ else:
127
+ yield ttype, value
128
+
129
+
130
+ class NameHighlightFilter(Filter):
131
+ """
132
+ Highlight a normal Name (and Name.*) token with a different token type.
133
+
134
+ Example::
135
+
136
+ filter = NameHighlightFilter(
137
+ names=['foo', 'bar', 'baz'],
138
+ tokentype=Name.Function,
139
+ )
140
+
141
+ This would highlight the names "foo", "bar" and "baz"
142
+ as functions. `Name.Function` is the default token type.
143
+
144
+ Options accepted:
145
+
146
+ `names` : list of strings
147
+ A list of names that should be given the different token type.
148
+ There is no default.
149
+ `tokentype` : TokenType or string
150
+ A token type or a string containing a token type name that is
151
+ used for highlighting the strings in `names`. The default is
152
+ `Name.Function`.
153
+ """
154
+
155
+ def __init__(self, **options):
156
+ Filter.__init__(self, **options)
157
+ self.names = set(get_list_opt(options, 'names', []))
158
+ tokentype = options.get('tokentype')
159
+ if tokentype:
160
+ self.tokentype = string_to_tokentype(tokentype)
161
+ else:
162
+ self.tokentype = Name.Function
163
+
164
+ def filter(self, lexer, stream):
165
+ for ttype, value in stream:
166
+ if ttype in Name and value in self.names:
167
+ yield self.tokentype, value
168
+ else:
169
+ yield ttype, value
170
+
171
+
172
+ class ErrorToken(Exception):
173
+ pass
174
+
175
+ class RaiseOnErrorTokenFilter(Filter):
176
+ """
177
+ Raise an exception when the lexer generates an error token.
178
+
179
+ Options accepted:
180
+
181
+ `excclass` : Exception class
182
+ The exception class to raise.
183
+ The default is `pygments.filters.ErrorToken`.
184
+
185
+ *New in Pygments 0.8.*
186
+ """
187
+
188
+ def __init__(self, **options):
189
+ Filter.__init__(self, **options)
190
+ self.exception = options.get('excclass', ErrorToken)
191
+ try:
192
+ # issubclass() will raise TypeError if first argument is not a class
193
+ if not issubclass(self.exception, Exception):
194
+ raise TypeError
195
+ except TypeError:
196
+ raise OptionError('excclass option is not an exception class')
197
+
198
+ def filter(self, lexer, stream):
199
+ for ttype, value in stream:
200
+ if ttype is Error:
201
+ raise self.exception(value)
202
+ yield ttype, value
203
+
204
+
205
+ class VisibleWhitespaceFilter(Filter):
206
+ """
207
+ Convert tabs, newlines and/or spaces to visible characters.
208
+
209
+ Options accepted:
210
+
211
+ `spaces` : string or bool
212
+ If this is a one-character string, spaces will be replaces by this string.
213
+ If it is another true value, spaces will be replaced by ``·`` (unicode
214
+ MIDDLE DOT). If it is a false value, spaces will not be replaced. The
215
+ default is ``False``.
216
+ `tabs` : string or bool
217
+ The same as for `spaces`, but the default replacement character is ``»``
218
+ (unicode RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK). The default value
219
+ is ``False``. Note: this will not work if the `tabsize` option for the
220
+ lexer is nonzero, as tabs will already have been expanded then.
221
+ `tabsize` : int
222
+ If tabs are to be replaced by this filter (see the `tabs` option), this
223
+ is the total number of characters that a tab should be expanded to.
224
+ The default is ``8``.
225
+ `newlines` : string or bool
226
+ The same as for `spaces`, but the default replacement character is ``¶``
227
+ (unicode PILCROW SIGN). The default value is ``False``.
228
+ `wstokentype` : bool
229
+ If true, give whitespace the special `Whitespace` token type. This allows
230
+ styling the visible whitespace differently (e.g. greyed out), but it can
231
+ disrupt background colors. The default is ``True``.
232
+
233
+ *New in Pygments 0.8.*
234
+ """
235
+
236
+ def __init__(self, **options):
237
+ Filter.__init__(self, **options)
238
+ for name, default in {'spaces': u'·', 'tabs': u'»', 'newlines': u'¶'}.items():
239
+ opt = options.get(name, False)
240
+ if isinstance(opt, basestring) and len(opt) == 1:
241
+ setattr(self, name, opt)
242
+ else:
243
+ setattr(self, name, (opt and default or ''))
244
+ tabsize = get_int_opt(options, 'tabsize', 8)
245
+ if self.tabs:
246
+ self.tabs += ' '*(tabsize-1)
247
+ if self.newlines:
248
+ self.newlines += '\n'
249
+ self.wstt = get_bool_opt(options, 'wstokentype', True)
250
+
251
+ def filter(self, lexer, stream):
252
+ if self.wstt:
253
+ spaces = self.spaces or ' '
254
+ tabs = self.tabs or '\t'
255
+ newlines = self.newlines or '\n'
256
+ regex = re.compile(r'\s')
257
+ def replacefunc(wschar):
258
+ if wschar == ' ':
259
+ return spaces
260
+ elif wschar == '\t':
261
+ return tabs
262
+ elif wschar == '\n':
263
+ return newlines
264
+ return wschar
265
+
266
+ for ttype, value in stream:
267
+ for sttype, svalue in _replace_special(ttype, value, regex,
268
+ Whitespace, replacefunc):
269
+ yield sttype, svalue
270
+ else:
271
+ spaces, tabs, newlines = self.spaces, self.tabs, self.newlines
272
+ # simpler processing
273
+ for ttype, value in stream:
274
+ if spaces:
275
+ value = value.replace(' ', spaces)
276
+ if tabs:
277
+ value = value.replace('\t', tabs)
278
+ if newlines:
279
+ value = value.replace('\n', newlines)
280
+ yield ttype, value
281
+
282
+
283
+ class GobbleFilter(Filter):
284
+ """
285
+ Gobbles source code lines (eats initial characters).
286
+
287
+ This filter drops the first ``n`` characters off every line of code. This
288
+ may be useful when the source code fed to the lexer is indented by a fixed
289
+ amount of space that isn't desired in the output.
290
+
291
+ Options accepted:
292
+
293
+ `n` : int
294
+ The number of characters to gobble.
295
+
296
+ *New in Pygments 1.2.*
297
+ """
298
+ def __init__(self, **options):
299
+ Filter.__init__(self, **options)
300
+ self.n = get_int_opt(options, 'n', 0)
301
+
302
+ def gobble(self, value, left):
303
+ if left < len(value):
304
+ return value[left:], 0
305
+ else:
306
+ return '', left - len(value)
307
+
308
+ def filter(self, lexer, stream):
309
+ n = self.n
310
+ left = n # How many characters left to gobble.
311
+ for ttype, value in stream:
312
+ # Remove ``left`` tokens from first line, ``n`` from all others.
313
+ parts = value.split('\n')
314
+ (parts[0], left) = self.gobble(parts[0], left)
315
+ for i in range(1, len(parts)):
316
+ (parts[i], left) = self.gobble(parts[i], n)
317
+ value = '\n'.join(parts)
318
+
319
+ if value != '':
320
+ yield ttype, value
321
+
322
+
323
+ class TokenMergeFilter(Filter):
324
+ """
325
+ Merges consecutive tokens with the same token type in the output stream of a
326
+ lexer.
327
+
328
+ *New in Pygments 1.2.*
329
+ """
330
+ def __init__(self, **options):
331
+ Filter.__init__(self, **options)
332
+
333
+ def filter(self, lexer, stream):
334
+ current_type = None
335
+ current_value = None
336
+ for ttype, value in stream:
337
+ if ttype is current_type:
338
+ current_value += value
339
+ else:
340
+ if current_type is not None:
341
+ yield current_type, current_value
342
+ current_type = ttype
343
+ current_value = value
344
+ if current_type is not None:
345
+ yield current_type, current_value
346
+
347
+
348
+ FILTERS = {
349
+ 'codetagify': CodeTagFilter,
350
+ 'keywordcase': KeywordCaseFilter,
351
+ 'highlight': NameHighlightFilter,
352
+ 'raiseonerror': RaiseOnErrorTokenFilter,
353
+ 'whitespace': VisibleWhitespaceFilter,
354
+ 'gobble': GobbleFilter,
355
+ 'tokenmerge': TokenMergeFilter,
356
+ }
@@ -0,0 +1,95 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.formatter
4
+ ~~~~~~~~~~~~~~~~~~
5
+
6
+ Base formatter class.
7
+
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import codecs
13
+
14
+ from pygments.util import get_bool_opt
15
+ from pygments.styles import get_style_by_name
16
+
17
+ __all__ = ['Formatter']
18
+
19
+
20
+ def _lookup_style(style):
21
+ if isinstance(style, basestring):
22
+ return get_style_by_name(style)
23
+ return style
24
+
25
+
26
+ class Formatter(object):
27
+ """
28
+ Converts a token stream to text.
29
+
30
+ Options accepted:
31
+
32
+ ``style``
33
+ The style to use, can be a string or a Style subclass
34
+ (default: "default"). Not used by e.g. the
35
+ TerminalFormatter.
36
+ ``full``
37
+ Tells the formatter to output a "full" document, i.e.
38
+ a complete self-contained document. This doesn't have
39
+ any effect for some formatters (default: false).
40
+ ``title``
41
+ If ``full`` is true, the title that should be used to
42
+ caption the document (default: '').
43
+ ``encoding``
44
+ If given, must be an encoding name. This will be used to
45
+ convert the Unicode token strings to byte strings in the
46
+ output. If it is "" or None, Unicode strings will be written
47
+ to the output file, which most file-like objects do not
48
+ support (default: None).
49
+ ``outencoding``
50
+ Overrides ``encoding`` if given.
51
+ """
52
+
53
+ #: Name of the formatter
54
+ name = None
55
+
56
+ #: Shortcuts for the formatter
57
+ aliases = []
58
+
59
+ #: fn match rules
60
+ filenames = []
61
+
62
+ #: If True, this formatter outputs Unicode strings when no encoding
63
+ #: option is given.
64
+ unicodeoutput = True
65
+
66
+ def __init__(self, **options):
67
+ self.style = _lookup_style(options.get('style', 'default'))
68
+ self.full = get_bool_opt(options, 'full', False)
69
+ self.title = options.get('title', '')
70
+ self.encoding = options.get('encoding', None) or None
71
+ if self.encoding == 'guess':
72
+ # can happen for pygmentize -O encoding=guess
73
+ self.encoding = 'utf-8'
74
+ self.encoding = options.get('outencoding', None) or self.encoding
75
+ self.options = options
76
+
77
+ def get_style_defs(self, arg=''):
78
+ """
79
+ Return the style definitions for the current style as a string.
80
+
81
+ ``arg`` is an additional argument whose meaning depends on the
82
+ formatter used. Note that ``arg`` can also be a list or tuple
83
+ for some formatters like the html formatter.
84
+ """
85
+ return ''
86
+
87
+ def format(self, tokensource, outfile):
88
+ """
89
+ Format ``tokensource``, an iterable of ``(tokentype, tokenstring)``
90
+ tuples and write it into ``outfile``.
91
+ """
92
+ if self.encoding:
93
+ # wrap the outfile in a StreamWriter
94
+ outfile = codecs.lookup(self.encoding)[3](outfile)
95
+ return self.format_unencoded(tokensource, outfile)
@@ -0,0 +1,68 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.formatters
4
+ ~~~~~~~~~~~~~~~~~~~
5
+
6
+ Pygments formatters.
7
+
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+ import os.path
12
+ import fnmatch
13
+
14
+ from pygments.formatters._mapping import FORMATTERS
15
+ from pygments.plugin import find_plugin_formatters
16
+ from pygments.util import ClassNotFound
17
+
18
+ ns = globals()
19
+ for fcls in FORMATTERS:
20
+ ns[fcls.__name__] = fcls
21
+ del fcls
22
+
23
+ __all__ = ['get_formatter_by_name', 'get_formatter_for_filename',
24
+ 'get_all_formatters'] + [cls.__name__ for cls in FORMATTERS]
25
+
26
+
27
+ _formatter_alias_cache = {}
28
+ _formatter_filename_cache = []
29
+
30
+ def _init_formatter_cache():
31
+ if _formatter_alias_cache:
32
+ return
33
+ for cls in get_all_formatters():
34
+ for alias in cls.aliases:
35
+ _formatter_alias_cache[alias] = cls
36
+ for fn in cls.filenames:
37
+ _formatter_filename_cache.append((fn, cls))
38
+
39
+
40
+ def find_formatter_class(name):
41
+ _init_formatter_cache()
42
+ cls = _formatter_alias_cache.get(name, None)
43
+ return cls
44
+
45
+
46
+ def get_formatter_by_name(name, **options):
47
+ _init_formatter_cache()
48
+ cls = _formatter_alias_cache.get(name, None)
49
+ if not cls:
50
+ raise ClassNotFound("No formatter found for name %r" % name)
51
+ return cls(**options)
52
+
53
+
54
+ def get_formatter_for_filename(fn, **options):
55
+ _init_formatter_cache()
56
+ fn = os.path.basename(fn)
57
+ for pattern, cls in _formatter_filename_cache:
58
+ if fnmatch.fnmatch(fn, pattern):
59
+ return cls(**options)
60
+ raise ClassNotFound("No formatter found for file name %r" % fn)
61
+
62
+
63
+ def get_all_formatters():
64
+ """Return a generator for all formatters."""
65
+ for formatter in FORMATTERS:
66
+ yield formatter
67
+ for _, formatter in find_plugin_formatters():
68
+ yield formatter
@@ -0,0 +1,92 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.formatters._mapping
4
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Formatter mapping defintions. This file is generated by itself. Everytime
7
+ you change something on a builtin formatter defintion, run this script from
8
+ the formatters folder to update it.
9
+
10
+ Do not alter the FORMATTERS dictionary by hand.
11
+
12
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
13
+ :license: BSD, see LICENSE for details.
14
+ """
15
+
16
+ # start
17
+ from pygments.formatters.bbcode import BBCodeFormatter
18
+ from pygments.formatters.html import HtmlFormatter
19
+ from pygments.formatters.img import BmpImageFormatter
20
+ from pygments.formatters.img import GifImageFormatter
21
+ from pygments.formatters.img import ImageFormatter
22
+ from pygments.formatters.img import JpgImageFormatter
23
+ from pygments.formatters.latex import LatexFormatter
24
+ from pygments.formatters.other import NullFormatter
25
+ from pygments.formatters.other import RawTokenFormatter
26
+ from pygments.formatters.rtf import RtfFormatter
27
+ from pygments.formatters.svg import SvgFormatter
28
+ from pygments.formatters.terminal import TerminalFormatter
29
+ from pygments.formatters.terminal256 import Terminal256Formatter
30
+
31
+ FORMATTERS = {
32
+ BBCodeFormatter: ('BBCode', ('bbcode', 'bb'), (), 'Format tokens with BBcodes. These formatting codes are used by many bulletin boards, so you can highlight your sourcecode with pygments before posting it there.'),
33
+ BmpImageFormatter: ('img_bmp', ('bmp', 'bitmap'), ('*.bmp',), 'Create a bitmap image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
34
+ GifImageFormatter: ('img_gif', ('gif',), ('*.gif',), 'Create a GIF image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
35
+ HtmlFormatter: ('HTML', ('html',), ('*.html', '*.htm'), "Format tokens as HTML 4 ``<span>`` tags within a ``<pre>`` tag, wrapped in a ``<div>`` tag. The ``<div>``'s CSS class can be set by the `cssclass` option."),
36
+ ImageFormatter: ('img', ('img', 'IMG', 'png'), ('*.png',), 'Create a PNG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
37
+ JpgImageFormatter: ('img_jpg', ('jpg', 'jpeg'), ('*.jpg',), 'Create a JPEG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
38
+ LatexFormatter: ('LaTeX', ('latex', 'tex'), ('*.tex',), 'Format tokens as LaTeX code. This needs the `fancyvrb` and `color` standard packages.'),
39
+ NullFormatter: ('Text only', ('text', 'null'), ('*.txt',), 'Output the text unchanged without any formatting.'),
40
+ RawTokenFormatter: ('Raw tokens', ('raw', 'tokens'), ('*.raw',), 'Format tokens as a raw representation for storing token streams.'),
41
+ RtfFormatter: ('RTF', ('rtf',), ('*.rtf',), 'Format tokens as RTF markup. This formatter automatically outputs full RTF documents with color information and other useful stuff. Perfect for Copy and Paste into Microsoft\xc2\xae Word\xc2\xae documents.'),
42
+ SvgFormatter: ('SVG', ('svg',), ('*.svg',), 'Format tokens as an SVG graphics file. This formatter is still experimental. Each line of code is a ``<text>`` element with explicit ``x`` and ``y`` coordinates containing ``<tspan>`` elements with the individual token styles.'),
43
+ Terminal256Formatter: ('Terminal256', ('terminal256', 'console256', '256'), (), 'Format tokens with ANSI color sequences, for output in a 256-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'),
44
+ TerminalFormatter: ('Terminal', ('terminal', 'console'), (), 'Format tokens with ANSI color sequences, for output in a text console. Color sequences are terminated at newlines, so that paging the output works correctly.')
45
+ }
46
+
47
+ if __name__ == '__main__':
48
+ import sys
49
+ import os
50
+
51
+ # lookup formatters
52
+ found_formatters = []
53
+ imports = []
54
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
55
+ from pygments.util import docstring_headline
56
+
57
+ for filename in os.listdir('.'):
58
+ if filename.endswith('.py') and not filename.startswith('_'):
59
+ module_name = 'pygments.formatters.%s' % filename[:-3]
60
+ print module_name
61
+ module = __import__(module_name, None, None, [''])
62
+ for formatter_name in module.__all__:
63
+ imports.append((module_name, formatter_name))
64
+ formatter = getattr(module, formatter_name)
65
+ found_formatters.append(
66
+ '%s: %r' % (formatter_name,
67
+ (formatter.name,
68
+ tuple(formatter.aliases),
69
+ tuple(formatter.filenames),
70
+ docstring_headline(formatter))))
71
+ # sort them, that should make the diff files for svn smaller
72
+ found_formatters.sort()
73
+ imports.sort()
74
+
75
+ # extract useful sourcecode from this file
76
+ f = open(__file__)
77
+ try:
78
+ content = f.read()
79
+ finally:
80
+ f.close()
81
+ header = content[:content.find('# start')]
82
+ footer = content[content.find("if __name__ == '__main__':"):]
83
+
84
+ # write new file
85
+ f = open(__file__, 'w')
86
+ f.write(header)
87
+ f.write('# start\n')
88
+ f.write('\n'.join(['from %s import %s' % imp for imp in imports]))
89
+ f.write('\n\n')
90
+ f.write('FORMATTERS = {\n %s\n}\n\n' % ',\n '.join(found_formatters))
91
+ f.write(footer)
92
+ f.close()