pygments.rb-jruby 0.5.4

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 (473) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/CHANGELOG.md +71 -0
  4. data/Gemfile +2 -0
  5. data/LICENSE +17 -0
  6. data/README.md +118 -0
  7. data/Rakefile +66 -0
  8. data/bench.rb +22 -0
  9. data/cache-lexers.rb +8 -0
  10. data/lexers +0 -0
  11. data/lib/pygments.rb +8 -0
  12. data/lib/pygments/lexer.rb +148 -0
  13. data/lib/pygments/mentos.py +351 -0
  14. data/lib/pygments/popen.rb +404 -0
  15. data/lib/pygments/version.rb +3 -0
  16. data/pygments.rb.gemspec +24 -0
  17. data/test/test_data.c +2581 -0
  18. data/test/test_data.py +514 -0
  19. data/test/test_data_generated +2582 -0
  20. data/test/test_pygments.rb +287 -0
  21. data/vendor/custom_lexers/github.py +565 -0
  22. data/vendor/pygments-main/AUTHORS +153 -0
  23. data/vendor/pygments-main/CHANGES +889 -0
  24. data/vendor/pygments-main/LICENSE +25 -0
  25. data/vendor/pygments-main/MANIFEST.in +6 -0
  26. data/vendor/pygments-main/Makefile +59 -0
  27. data/vendor/pygments-main/REVISION +1 -0
  28. data/vendor/pygments-main/TODO +15 -0
  29. data/vendor/pygments-main/docs/generate.py +472 -0
  30. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  31. data/vendor/pygments-main/docs/src/api.txt +270 -0
  32. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  33. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  34. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  35. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  36. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  37. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  38. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  39. data/vendor/pygments-main/docs/src/index.txt +69 -0
  40. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  41. data/vendor/pygments-main/docs/src/integrate.txt +48 -0
  42. data/vendor/pygments-main/docs/src/java.txt +70 -0
  43. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +603 -0
  44. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  45. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  46. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  47. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  48. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  49. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  50. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  51. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  52. data/vendor/pygments-main/external/autopygmentize +64 -0
  53. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
  54. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  55. data/vendor/pygments-main/external/moin-parser.py +112 -0
  56. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  57. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  58. data/vendor/pygments-main/external/rst-directive.py +83 -0
  59. data/vendor/pygments-main/ez_setup.py +276 -0
  60. data/vendor/pygments-main/pygmentize +7 -0
  61. data/vendor/pygments-main/pygments/__init__.py +91 -0
  62. data/vendor/pygments-main/pygments/cmdline.py +441 -0
  63. data/vendor/pygments-main/pygments/console.py +74 -0
  64. data/vendor/pygments-main/pygments/filter.py +74 -0
  65. data/vendor/pygments-main/pygments/filters/__init__.py +356 -0
  66. data/vendor/pygments-main/pygments/formatter.py +95 -0
  67. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  68. data/vendor/pygments-main/pygments/formatters/_mapping.py +92 -0
  69. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  70. data/vendor/pygments-main/pygments/formatters/html.py +821 -0
  71. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  72. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  73. data/vendor/pygments-main/pygments/formatters/other.py +115 -0
  74. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  75. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  76. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  77. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  78. data/vendor/pygments-main/pygments/lexer.py +765 -0
  79. data/vendor/pygments-main/pygments/lexers/__init__.py +240 -0
  80. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  81. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  82. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
  83. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  84. data/vendor/pygments-main/pygments/lexers/_mapping.py +354 -0
  85. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
  86. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  87. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +233 -0
  88. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
  89. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +40 -0
  90. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
  91. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
  92. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -0
  93. data/vendor/pygments-main/pygments/lexers/agile.py +2290 -0
  94. data/vendor/pygments-main/pygments/lexers/asm.py +398 -0
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +3723 -0
  96. data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
  97. data/vendor/pygments-main/pygments/lexers/dotnet.py +671 -0
  98. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  99. data/vendor/pygments-main/pygments/lexers/functional.py +2731 -0
  100. data/vendor/pygments-main/pygments/lexers/github.py +565 -0
  101. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  102. data/vendor/pygments-main/pygments/lexers/jvm.py +1112 -0
  103. data/vendor/pygments-main/pygments/lexers/math.py +1918 -0
  104. data/vendor/pygments-main/pygments/lexers/other.py +3778 -0
  105. data/vendor/pygments-main/pygments/lexers/parsers.py +778 -0
  106. data/vendor/pygments-main/pygments/lexers/shell.py +424 -0
  107. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  108. data/vendor/pygments-main/pygments/lexers/sql.py +559 -0
  109. data/vendor/pygments-main/pygments/lexers/templates.py +1742 -0
  110. data/vendor/pygments-main/pygments/lexers/text.py +1893 -0
  111. data/vendor/pygments-main/pygments/lexers/web.py +4045 -0
  112. data/vendor/pygments-main/pygments/modeline.py +40 -0
  113. data/vendor/pygments-main/pygments/plugin.py +74 -0
  114. data/vendor/pygments-main/pygments/scanner.py +104 -0
  115. data/vendor/pygments-main/pygments/style.py +117 -0
  116. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  117. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  118. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  119. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  120. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  121. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  122. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  123. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  124. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  125. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  126. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  127. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  128. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  129. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  130. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  131. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  132. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  133. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  134. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  135. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  136. data/vendor/pygments-main/pygments/token.py +195 -0
  137. data/vendor/pygments-main/pygments/unistring.py +140 -0
  138. data/vendor/pygments-main/pygments/util.py +277 -0
  139. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  140. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +32 -0
  141. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  142. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  143. data/vendor/pygments-main/scripts/find_error.py +170 -0
  144. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  145. data/vendor/pygments-main/scripts/pylintrc +301 -0
  146. data/vendor/pygments-main/scripts/reindent.py +291 -0
  147. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  148. data/vendor/pygments-main/setup.cfg +7 -0
  149. data/vendor/pygments-main/setup.py +90 -0
  150. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  151. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  152. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  153. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  154. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  155. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  156. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  157. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  158. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  159. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  160. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  161. data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
  162. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  163. data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
  164. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  165. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  166. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
  167. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  168. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  169. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
  170. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
  171. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
  172. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  173. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  174. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  175. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  176. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
  177. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  178. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  179. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  180. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  181. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  182. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  183. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  184. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  185. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  186. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  187. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
  188. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  189. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  190. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
  191. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  192. data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
  193. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
  194. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  195. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  196. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  197. data/vendor/pygments-main/tests/examplefiles/classes.dylan +125 -0
  198. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  199. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  200. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  201. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  202. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  203. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  204. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  205. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  206. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  207. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  208. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  209. data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
  210. data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
  211. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  212. data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
  213. data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
  214. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  215. data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
  216. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  217. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  218. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  219. data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
  220. data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
  221. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  222. data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
  223. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  224. data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
  225. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  226. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  227. data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
  228. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  229. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  230. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  231. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  232. data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
  233. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  234. data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
  235. data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
  236. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  237. data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
  238. data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
  239. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  240. data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
  241. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  242. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  243. data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
  244. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  245. data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
  246. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  247. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  248. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  249. data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
  250. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  251. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  252. data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
  253. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  254. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  255. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  256. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  257. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  258. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  259. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  260. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  261. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  262. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
  263. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  264. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  265. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  266. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  267. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  268. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
  269. data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
  270. data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
  271. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  272. data/vendor/pygments-main/tests/examplefiles/http_request_example +15 -0
  273. data/vendor/pygments-main/tests/examplefiles/http_response_example +29 -0
  274. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  275. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
  276. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  277. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  278. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  279. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  280. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  281. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  282. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  283. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  284. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  285. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  286. data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
  287. data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
  288. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  289. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  290. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
  291. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
  292. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  293. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  294. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  295. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  296. data/vendor/pygments-main/tests/examplefiles/matlab_sample +30 -0
  297. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  298. data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
  299. data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
  300. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
  301. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  302. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  303. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  304. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
  305. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  306. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  307. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  308. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  309. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  310. data/vendor/pygments-main/tests/examplefiles/objc_example.m +32 -0
  311. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  312. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  313. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  314. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  315. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  316. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
  317. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  318. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  319. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  320. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  321. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  322. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  323. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
  324. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  325. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  326. data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
  327. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  328. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  329. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  330. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  331. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  332. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  333. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  334. data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
  335. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  336. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
  337. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  338. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
  339. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  340. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  341. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  342. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  343. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  344. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  345. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  346. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  347. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  348. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  349. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  350. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
  351. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
  352. data/vendor/pygments-main/tests/examplefiles/test.R +153 -0
  353. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  354. data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
  355. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  356. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  357. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  358. data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
  359. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  360. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  361. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  362. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  363. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  364. data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
  365. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  366. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  367. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  368. data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
  369. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  370. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  371. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  372. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  373. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  374. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  375. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  376. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  377. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  378. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  379. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  380. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  381. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  382. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  383. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  384. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  385. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  386. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  387. data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
  388. data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
  389. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  390. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  391. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  392. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  393. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  394. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  395. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  396. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  397. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  398. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  399. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  400. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  401. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  402. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  403. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  404. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
  405. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  406. data/vendor/pygments-main/tests/examplefiles/type.lisp +1218 -0
  407. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  408. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  409. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  410. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
  411. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  412. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  413. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  414. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  415. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  416. data/vendor/pygments-main/tests/old_run.py +138 -0
  417. data/vendor/pygments-main/tests/run.py +49 -0
  418. data/vendor/pygments-main/tests/support.py +15 -0
  419. data/vendor/pygments-main/tests/support/tags +36 -0
  420. data/vendor/pygments-main/tests/test_basic_api.py +295 -0
  421. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  422. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  423. data/vendor/pygments-main/tests/test_examplefiles.py +99 -0
  424. data/vendor/pygments-main/tests/test_html_formatter.py +178 -0
  425. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  426. data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
  427. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  428. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  429. data/vendor/pygments-main/tests/test_token.py +46 -0
  430. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  431. data/vendor/pygments-main/tests/test_util.py +135 -0
  432. data/vendor/simplejson/.gitignore +10 -0
  433. data/vendor/simplejson/.travis.yml +5 -0
  434. data/vendor/simplejson/CHANGES.txt +291 -0
  435. data/vendor/simplejson/LICENSE.txt +19 -0
  436. data/vendor/simplejson/MANIFEST.in +5 -0
  437. data/vendor/simplejson/README.rst +19 -0
  438. data/vendor/simplejson/conf.py +179 -0
  439. data/vendor/simplejson/index.rst +628 -0
  440. data/vendor/simplejson/scripts/make_docs.py +18 -0
  441. data/vendor/simplejson/setup.py +104 -0
  442. data/vendor/simplejson/simplejson/__init__.py +510 -0
  443. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  444. data/vendor/simplejson/simplejson/decoder.py +425 -0
  445. data/vendor/simplejson/simplejson/encoder.py +567 -0
  446. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  447. data/vendor/simplejson/simplejson/scanner.py +77 -0
  448. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  449. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  450. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  451. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  452. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  453. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  454. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  455. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  456. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  457. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  458. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  459. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  460. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  461. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  462. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  463. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  464. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  465. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  466. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  467. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  468. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  469. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  470. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  471. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  472. data/vendor/simplejson/simplejson/tool.py +39 -0
  473. metadata +557 -0
@@ -0,0 +1,553 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.formatters.img
4
+ ~~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Formatter for Pixmap output.
7
+
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import sys
13
+
14
+ from pygments.formatter import Formatter
15
+ from pygments.util import get_bool_opt, get_int_opt, \
16
+ get_list_opt, get_choice_opt
17
+
18
+ # Import this carefully
19
+ try:
20
+ from PIL import Image, ImageDraw, ImageFont
21
+ pil_available = True
22
+ except ImportError:
23
+ pil_available = False
24
+
25
+ try:
26
+ import _winreg
27
+ except ImportError:
28
+ _winreg = None
29
+
30
+ __all__ = ['ImageFormatter', 'GifImageFormatter', 'JpgImageFormatter',
31
+ 'BmpImageFormatter']
32
+
33
+
34
+ # For some unknown reason every font calls it something different
35
+ STYLES = {
36
+ 'NORMAL': ['', 'Roman', 'Book', 'Normal', 'Regular', 'Medium'],
37
+ 'ITALIC': ['Oblique', 'Italic'],
38
+ 'BOLD': ['Bold'],
39
+ 'BOLDITALIC': ['Bold Oblique', 'Bold Italic'],
40
+ }
41
+
42
+ # A sane default for modern systems
43
+ DEFAULT_FONT_NAME_NIX = 'Bitstream Vera Sans Mono'
44
+ DEFAULT_FONT_NAME_WIN = 'Courier New'
45
+
46
+
47
+ class PilNotAvailable(ImportError):
48
+ """When Python imaging library is not available"""
49
+
50
+
51
+ class FontNotFound(Exception):
52
+ """When there are no usable fonts specified"""
53
+
54
+
55
+ class FontManager(object):
56
+ """
57
+ Manages a set of fonts: normal, italic, bold, etc...
58
+ """
59
+
60
+ def __init__(self, font_name, font_size=14):
61
+ self.font_name = font_name
62
+ self.font_size = font_size
63
+ self.fonts = {}
64
+ self.encoding = None
65
+ if sys.platform.startswith('win'):
66
+ if not font_name:
67
+ self.font_name = DEFAULT_FONT_NAME_WIN
68
+ self._create_win()
69
+ else:
70
+ if not font_name:
71
+ self.font_name = DEFAULT_FONT_NAME_NIX
72
+ self._create_nix()
73
+
74
+ def _get_nix_font_path(self, name, style):
75
+ from commands import getstatusoutput
76
+ exit, out = getstatusoutput('fc-list "%s:style=%s" file' %
77
+ (name, style))
78
+ if not exit:
79
+ lines = out.splitlines()
80
+ if lines:
81
+ path = lines[0].strip().strip(':')
82
+ return path
83
+
84
+ def _create_nix(self):
85
+ for name in STYLES['NORMAL']:
86
+ path = self._get_nix_font_path(self.font_name, name)
87
+ if path is not None:
88
+ self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
89
+ break
90
+ else:
91
+ raise FontNotFound('No usable fonts named: "%s"' %
92
+ self.font_name)
93
+ for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
94
+ for stylename in STYLES[style]:
95
+ path = self._get_nix_font_path(self.font_name, stylename)
96
+ if path is not None:
97
+ self.fonts[style] = ImageFont.truetype(path, self.font_size)
98
+ break
99
+ else:
100
+ if style == 'BOLDITALIC':
101
+ self.fonts[style] = self.fonts['BOLD']
102
+ else:
103
+ self.fonts[style] = self.fonts['NORMAL']
104
+
105
+ def _lookup_win(self, key, basename, styles, fail=False):
106
+ for suffix in ('', ' (TrueType)'):
107
+ for style in styles:
108
+ try:
109
+ valname = '%s%s%s' % (basename, style and ' '+style, suffix)
110
+ val, _ = _winreg.QueryValueEx(key, valname)
111
+ return val
112
+ except EnvironmentError:
113
+ continue
114
+ else:
115
+ if fail:
116
+ raise FontNotFound('Font %s (%s) not found in registry' %
117
+ (basename, styles[0]))
118
+ return None
119
+
120
+ def _create_win(self):
121
+ try:
122
+ key = _winreg.OpenKey(
123
+ _winreg.HKEY_LOCAL_MACHINE,
124
+ r'Software\Microsoft\Windows NT\CurrentVersion\Fonts')
125
+ except EnvironmentError:
126
+ try:
127
+ key = _winreg.OpenKey(
128
+ _winreg.HKEY_LOCAL_MACHINE,
129
+ r'Software\Microsoft\Windows\CurrentVersion\Fonts')
130
+ except EnvironmentError:
131
+ raise FontNotFound('Can\'t open Windows font registry key')
132
+ try:
133
+ path = self._lookup_win(key, self.font_name, STYLES['NORMAL'], True)
134
+ self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
135
+ for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
136
+ path = self._lookup_win(key, self.font_name, STYLES[style])
137
+ if path:
138
+ self.fonts[style] = ImageFont.truetype(path, self.font_size)
139
+ else:
140
+ if style == 'BOLDITALIC':
141
+ self.fonts[style] = self.fonts['BOLD']
142
+ else:
143
+ self.fonts[style] = self.fonts['NORMAL']
144
+ finally:
145
+ _winreg.CloseKey(key)
146
+
147
+ def get_char_size(self):
148
+ """
149
+ Get the character size.
150
+ """
151
+ return self.fonts['NORMAL'].getsize('M')
152
+
153
+ def get_font(self, bold, oblique):
154
+ """
155
+ Get the font based on bold and italic flags.
156
+ """
157
+ if bold and oblique:
158
+ return self.fonts['BOLDITALIC']
159
+ elif bold:
160
+ return self.fonts['BOLD']
161
+ elif oblique:
162
+ return self.fonts['ITALIC']
163
+ else:
164
+ return self.fonts['NORMAL']
165
+
166
+
167
+ class ImageFormatter(Formatter):
168
+ """
169
+ Create a PNG image from source code. This uses the Python Imaging Library to
170
+ generate a pixmap from the source code.
171
+
172
+ *New in Pygments 0.10.*
173
+
174
+ Additional options accepted:
175
+
176
+ `image_format`
177
+ An image format to output to that is recognised by PIL, these include:
178
+
179
+ * "PNG" (default)
180
+ * "JPEG"
181
+ * "BMP"
182
+ * "GIF"
183
+
184
+ `line_pad`
185
+ The extra spacing (in pixels) between each line of text.
186
+
187
+ Default: 2
188
+
189
+ `font_name`
190
+ The font name to be used as the base font from which others, such as
191
+ bold and italic fonts will be generated. This really should be a
192
+ monospace font to look sane.
193
+
194
+ Default: "Bitstream Vera Sans Mono"
195
+
196
+ `font_size`
197
+ The font size in points to be used.
198
+
199
+ Default: 14
200
+
201
+ `image_pad`
202
+ The padding, in pixels to be used at each edge of the resulting image.
203
+
204
+ Default: 10
205
+
206
+ `line_numbers`
207
+ Whether line numbers should be shown: True/False
208
+
209
+ Default: True
210
+
211
+ `line_number_start`
212
+ The line number of the first line.
213
+
214
+ Default: 1
215
+
216
+ `line_number_step`
217
+ The step used when printing line numbers.
218
+
219
+ Default: 1
220
+
221
+ `line_number_bg`
222
+ The background colour (in "#123456" format) of the line number bar, or
223
+ None to use the style background color.
224
+
225
+ Default: "#eed"
226
+
227
+ `line_number_fg`
228
+ The text color of the line numbers (in "#123456"-like format).
229
+
230
+ Default: "#886"
231
+
232
+ `line_number_chars`
233
+ The number of columns of line numbers allowable in the line number
234
+ margin.
235
+
236
+ Default: 2
237
+
238
+ `line_number_bold`
239
+ Whether line numbers will be bold: True/False
240
+
241
+ Default: False
242
+
243
+ `line_number_italic`
244
+ Whether line numbers will be italicized: True/False
245
+
246
+ Default: False
247
+
248
+ `line_number_separator`
249
+ Whether a line will be drawn between the line number area and the
250
+ source code area: True/False
251
+
252
+ Default: True
253
+
254
+ `line_number_pad`
255
+ The horizontal padding (in pixels) between the line number margin, and
256
+ the source code area.
257
+
258
+ Default: 6
259
+
260
+ `hl_lines`
261
+ Specify a list of lines to be highlighted. *New in Pygments 1.2.*
262
+
263
+ Default: empty list
264
+
265
+ `hl_color`
266
+ Specify the color for highlighting lines. *New in Pygments 1.2.*
267
+
268
+ Default: highlight color of the selected style
269
+ """
270
+
271
+ # Required by the pygments mapper
272
+ name = 'img'
273
+ aliases = ['img', 'IMG', 'png']
274
+ filenames = ['*.png']
275
+
276
+ unicodeoutput = False
277
+
278
+ default_image_format = 'png'
279
+
280
+ def __init__(self, **options):
281
+ """
282
+ See the class docstring for explanation of options.
283
+ """
284
+ if not pil_available:
285
+ raise PilNotAvailable(
286
+ 'Python Imaging Library is required for this formatter')
287
+ Formatter.__init__(self, **options)
288
+ # Read the style
289
+ self.styles = dict(self.style)
290
+ if self.style.background_color is None:
291
+ self.background_color = '#fff'
292
+ else:
293
+ self.background_color = self.style.background_color
294
+ # Image options
295
+ self.image_format = get_choice_opt(
296
+ options, 'image_format', ['png', 'jpeg', 'gif', 'bmp'],
297
+ self.default_image_format, normcase=True)
298
+ self.image_pad = get_int_opt(options, 'image_pad', 10)
299
+ self.line_pad = get_int_opt(options, 'line_pad', 2)
300
+ # The fonts
301
+ fontsize = get_int_opt(options, 'font_size', 14)
302
+ self.fonts = FontManager(options.get('font_name', ''), fontsize)
303
+ self.fontw, self.fonth = self.fonts.get_char_size()
304
+ # Line number options
305
+ self.line_number_fg = options.get('line_number_fg', '#886')
306
+ self.line_number_bg = options.get('line_number_bg', '#eed')
307
+ self.line_number_chars = get_int_opt(options,
308
+ 'line_number_chars', 2)
309
+ self.line_number_bold = get_bool_opt(options,
310
+ 'line_number_bold', False)
311
+ self.line_number_italic = get_bool_opt(options,
312
+ 'line_number_italic', False)
313
+ self.line_number_pad = get_int_opt(options, 'line_number_pad', 6)
314
+ self.line_numbers = get_bool_opt(options, 'line_numbers', True)
315
+ self.line_number_separator = get_bool_opt(options,
316
+ 'line_number_separator', True)
317
+ self.line_number_step = get_int_opt(options, 'line_number_step', 1)
318
+ self.line_number_start = get_int_opt(options, 'line_number_start', 1)
319
+ if self.line_numbers:
320
+ self.line_number_width = (self.fontw * self.line_number_chars +
321
+ self.line_number_pad * 2)
322
+ else:
323
+ self.line_number_width = 0
324
+ self.hl_lines = []
325
+ hl_lines_str = get_list_opt(options, 'hl_lines', [])
326
+ for line in hl_lines_str:
327
+ try:
328
+ self.hl_lines.append(int(line))
329
+ except ValueError:
330
+ pass
331
+ self.hl_color = options.get('hl_color',
332
+ self.style.highlight_color) or '#f90'
333
+ self.drawables = []
334
+
335
+ def get_style_defs(self, arg=''):
336
+ raise NotImplementedError('The -S option is meaningless for the image '
337
+ 'formatter. Use -O style=<stylename> instead.')
338
+
339
+ def _get_line_height(self):
340
+ """
341
+ Get the height of a line.
342
+ """
343
+ return self.fonth + self.line_pad
344
+
345
+ def _get_line_y(self, lineno):
346
+ """
347
+ Get the Y coordinate of a line number.
348
+ """
349
+ return lineno * self._get_line_height() + self.image_pad
350
+
351
+ def _get_char_width(self):
352
+ """
353
+ Get the width of a character.
354
+ """
355
+ return self.fontw
356
+
357
+ def _get_char_x(self, charno):
358
+ """
359
+ Get the X coordinate of a character position.
360
+ """
361
+ return charno * self.fontw + self.image_pad + self.line_number_width
362
+
363
+ def _get_text_pos(self, charno, lineno):
364
+ """
365
+ Get the actual position for a character and line position.
366
+ """
367
+ return self._get_char_x(charno), self._get_line_y(lineno)
368
+
369
+ def _get_linenumber_pos(self, lineno):
370
+ """
371
+ Get the actual position for the start of a line number.
372
+ """
373
+ return (self.image_pad, self._get_line_y(lineno))
374
+
375
+ def _get_text_color(self, style):
376
+ """
377
+ Get the correct color for the token from the style.
378
+ """
379
+ if style['color'] is not None:
380
+ fill = '#' + style['color']
381
+ else:
382
+ fill = '#000'
383
+ return fill
384
+
385
+ def _get_style_font(self, style):
386
+ """
387
+ Get the correct font for the style.
388
+ """
389
+ return self.fonts.get_font(style['bold'], style['italic'])
390
+
391
+ def _get_image_size(self, maxcharno, maxlineno):
392
+ """
393
+ Get the required image size.
394
+ """
395
+ return (self._get_char_x(maxcharno) + self.image_pad,
396
+ self._get_line_y(maxlineno + 0) + self.image_pad)
397
+
398
+ def _draw_linenumber(self, posno, lineno):
399
+ """
400
+ Remember a line number drawable to paint later.
401
+ """
402
+ self._draw_text(
403
+ self._get_linenumber_pos(posno),
404
+ str(lineno).rjust(self.line_number_chars),
405
+ font=self.fonts.get_font(self.line_number_bold,
406
+ self.line_number_italic),
407
+ fill=self.line_number_fg,
408
+ )
409
+
410
+ def _draw_text(self, pos, text, font, **kw):
411
+ """
412
+ Remember a single drawable tuple to paint later.
413
+ """
414
+ self.drawables.append((pos, text, font, kw))
415
+
416
+ def _create_drawables(self, tokensource):
417
+ """
418
+ Create drawables for the token content.
419
+ """
420
+ lineno = charno = maxcharno = 0
421
+ for ttype, value in tokensource:
422
+ while ttype not in self.styles:
423
+ ttype = ttype.parent
424
+ style = self.styles[ttype]
425
+ # TODO: make sure tab expansion happens earlier in the chain. It
426
+ # really ought to be done on the input, as to do it right here is
427
+ # quite complex.
428
+ value = value.expandtabs(4)
429
+ lines = value.splitlines(True)
430
+ #print lines
431
+ for i, line in enumerate(lines):
432
+ temp = line.rstrip('\n')
433
+ if temp:
434
+ self._draw_text(
435
+ self._get_text_pos(charno, lineno),
436
+ temp,
437
+ font = self._get_style_font(style),
438
+ fill = self._get_text_color(style)
439
+ )
440
+ charno += len(temp)
441
+ maxcharno = max(maxcharno, charno)
442
+ if line.endswith('\n'):
443
+ # add a line for each extra line in the value
444
+ charno = 0
445
+ lineno += 1
446
+ self.maxcharno = maxcharno
447
+ self.maxlineno = lineno
448
+
449
+ def _draw_line_numbers(self):
450
+ """
451
+ Create drawables for the line numbers.
452
+ """
453
+ if not self.line_numbers:
454
+ return
455
+ for p in xrange(self.maxlineno):
456
+ n = p + self.line_number_start
457
+ if (n % self.line_number_step) == 0:
458
+ self._draw_linenumber(p, n)
459
+
460
+ def _paint_line_number_bg(self, im):
461
+ """
462
+ Paint the line number background on the image.
463
+ """
464
+ if not self.line_numbers:
465
+ return
466
+ if self.line_number_fg is None:
467
+ return
468
+ draw = ImageDraw.Draw(im)
469
+ recth = im.size[-1]
470
+ rectw = self.image_pad + self.line_number_width - self.line_number_pad
471
+ draw.rectangle([(0, 0),
472
+ (rectw, recth)],
473
+ fill=self.line_number_bg)
474
+ draw.line([(rectw, 0), (rectw, recth)], fill=self.line_number_fg)
475
+ del draw
476
+
477
+ def format(self, tokensource, outfile):
478
+ """
479
+ Format ``tokensource``, an iterable of ``(tokentype, tokenstring)``
480
+ tuples and write it into ``outfile``.
481
+
482
+ This implementation calculates where it should draw each token on the
483
+ pixmap, then calculates the required pixmap size and draws the items.
484
+ """
485
+ self._create_drawables(tokensource)
486
+ self._draw_line_numbers()
487
+ im = Image.new(
488
+ 'RGB',
489
+ self._get_image_size(self.maxcharno, self.maxlineno),
490
+ self.background_color
491
+ )
492
+ self._paint_line_number_bg(im)
493
+ draw = ImageDraw.Draw(im)
494
+ # Highlight
495
+ if self.hl_lines:
496
+ x = self.image_pad + self.line_number_width - self.line_number_pad + 1
497
+ recth = self._get_line_height()
498
+ rectw = im.size[0] - x
499
+ for linenumber in self.hl_lines:
500
+ y = self._get_line_y(linenumber - 1)
501
+ draw.rectangle([(x, y), (x + rectw, y + recth)],
502
+ fill=self.hl_color)
503
+ for pos, value, font, kw in self.drawables:
504
+ draw.text(pos, value, font=font, **kw)
505
+ im.save(outfile, self.image_format.upper())
506
+
507
+
508
+ # Add one formatter per format, so that the "-f gif" option gives the correct result
509
+ # when used in pygmentize.
510
+
511
+ class GifImageFormatter(ImageFormatter):
512
+ """
513
+ Create a GIF image from source code. This uses the Python Imaging Library to
514
+ generate a pixmap from the source code.
515
+
516
+ *New in Pygments 1.0.* (You could create GIF images before by passing a
517
+ suitable `image_format` option to the `ImageFormatter`.)
518
+ """
519
+
520
+ name = 'img_gif'
521
+ aliases = ['gif']
522
+ filenames = ['*.gif']
523
+ default_image_format = 'gif'
524
+
525
+
526
+ class JpgImageFormatter(ImageFormatter):
527
+ """
528
+ Create a JPEG image from source code. This uses the Python Imaging Library to
529
+ generate a pixmap from the source code.
530
+
531
+ *New in Pygments 1.0.* (You could create JPEG images before by passing a
532
+ suitable `image_format` option to the `ImageFormatter`.)
533
+ """
534
+
535
+ name = 'img_jpg'
536
+ aliases = ['jpg', 'jpeg']
537
+ filenames = ['*.jpg']
538
+ default_image_format = 'jpeg'
539
+
540
+
541
+ class BmpImageFormatter(ImageFormatter):
542
+ """
543
+ Create a bitmap image from source code. This uses the Python Imaging Library to
544
+ generate a pixmap from the source code.
545
+
546
+ *New in Pygments 1.0.* (You could create bitmap images before by passing a
547
+ suitable `image_format` option to the `ImageFormatter`.)
548
+ """
549
+
550
+ name = 'img_bmp'
551
+ aliases = ['bmp', 'bitmap']
552
+ filenames = ['*.bmp']
553
+ default_image_format = 'bmp'