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,42 @@
1
+ SET( SOURCES back.c io.c main.c )
2
+ MESSAGE( ${SOURCES} ) # three arguments, prints "back.cio.cmain.c"
3
+ MESSAGE( "${SOURCES}" ) # one argument, prints "back.c;io.c;main.c"
4
+ MESSAGE( "" ) # one argument, prints "" an empty line
5
+ MESSAGE( "${EMPTY_STRING}" ) # one argument, prints "" an empty line
6
+ MESSAGE( ${EMPTY_STRING} ) # zero arguments, causes CMake Error
7
+ # "MESSAGE called with incorrect number of arguments"
8
+ MESSAGE( \\\"\ \(\)\#\$\^ ) # this message contains literal characters
9
+
10
+ MESSAGE( "This is practice." ) # prints "This is practice."
11
+ MESSAGE( "This;is;practice." ) # prints "This;is;practice."
12
+ MESSAGE( "Hi. ) MESSAGE( x )" ) # prints "Hi. ) MESSAGE( x )"
13
+
14
+ MESSAGE( "Welc"ome ) # rule 1
15
+ MESSAGE( Welc"ome" ) # rule 3
16
+ MESSAGE( Welc"ome)" ) # rule 2
17
+ MESSAGE( ""Thanks ) # rule 1
18
+ MESSAGE( Thanks"" ) # rule 3
19
+
20
+ SET( x y A B C ) # stores "y;A;B;C" in x (without quote)
21
+ SET( ${x} ) # => SET( y;A;B;C ) => SET( y A B C)
22
+ MESSAGE( ${y} ) # prints "ABC" to stdout (without quotes)
23
+ SET( y x ) # stores "x" in y (without quotes)
24
+ SET( ${y} y = x ) # => SET( x y )
25
+ MESSAGE( "\${x} = '${x}'" ) # prints "${x} = 'y;=;x'" to stdout (without quotes)
26
+ SET( y ${x} ) # => SET( y y = x ) => stores "y;=;x" in y (without quotes)
27
+ MESSAGE( ${y} ) # prints "y=x" to stdout (without quotes)
28
+
29
+ SET( x a b c ) # stores "a;b;c" in x (without quotes)
30
+ SET( y "a b c" ) # stores "a b c" in y (without quotes)
31
+ MESSAGE( a b c ) # prints "abc" to stdout (without quotes)
32
+ MESSAGE( ${x} ) # prints "abc" to stdout (without quotes)
33
+ MESSAGE("${x}") # prints "a;b;c" to stdout (without quotes)
34
+ MESSAGE( ${y} ) # prints "a b c" to stdout (without quotes)
35
+ MESSAGE("${y}") # prints "a b c" to stdout (without quotes)
36
+
37
+ # This is a comment.
38
+ COMMAND( arguments go here )
39
+ ANOTHER_COMMAND() # this command has no arguments
40
+ YET_ANOTHER_COMMAND( these
41
+ arguments are spread # another comment
42
+ over several lines )
@@ -0,0 +1,679 @@
1
+ #!/usr/bin/env newlisp
2
+
3
+ ;; @module markdown
4
+ ;; @author cormullion
5
+ ;; @description a port of John Gruber's Markdown to newLISP
6
+ ;; @location http://unbalanced-parentheses.nfshost.com/
7
+ ;; @version of date 2011-10-02 22:36:02
8
+ ;; version history: at the end
9
+ ;; a port of John Gruber's Markdown.pl (http://daringfireball.net/markdown) script to newLISP...
10
+ ;; see his original Perl script for explanations of the fearsome regexen and
11
+ ;; byzantine logic, etc...
12
+ ;; TODO:
13
+ ;; the following Markdown tests fail:
14
+ ;; Inline HTML (Advanced) ... FAILED
15
+ ;; Links, reference style ... FAILED -- nested brackets
16
+ ;; Links, shortcut references ... FAILED
17
+ ;; Markdown Documentation - Syntax ... FAILED
18
+ ;; Ordered and unordered lists ... FAILED -- a nested ordered list error
19
+ ;; parens in url : ![this is a stupid URL](http://example.com/(parens).jpg) see (Images.text)
20
+ ;; Add: email address scrambling
21
+
22
+ (context 'Hash)
23
+ (define HashTable:HashTable)
24
+
25
+ (define (build-escape-table)
26
+ (set '*escape-chars* [text]\`*_{}[]()>#+-.![/text])
27
+ (dolist (c (explode *escape-chars*))
28
+ (HashTable c (hash c))))
29
+
30
+ (define (init-hash txt)
31
+ ; finds a hash identifier that doesn't occur anywhere in the text
32
+ (set 'counter 0)
33
+ (set 'hash-prefix "HASH")
34
+ (set 'hash-id (string hash-prefix counter))
35
+ (do-while (find hash-id txt)
36
+ (set 'hash-id (string hash-prefix (inc counter))))
37
+ (Hash:build-escape-table))
38
+
39
+ (define (hash s)
40
+ (HashTable s (string hash-id (inc counter))))
41
+
42
+ (context 'markdown)
43
+
44
+ (define (markdown:markdown txt)
45
+ (initialize)
46
+ (Hash:init-hash txt)
47
+ (unescape-special-chars
48
+ (block-transforms
49
+ (strip-link-definitions
50
+ (protect
51
+ (cleanup txt))))))
52
+
53
+ (define (initialize)
54
+ (set '*escape-pairs* '(
55
+ ({\\\\} {\})
56
+ ({\\`} {`})
57
+ ({\\\*} {*})
58
+ ({\\_} {_})
59
+ ([text]\\\{[/text] [text]{[/text])
60
+ ([text]\\\}[/text] [text]}[/text])
61
+ ({\\\[} {[})
62
+ ({\\\]} {]})
63
+ ({\\\(} {(})
64
+ ({\\\)} {)})
65
+ ({\\>} {>})
66
+ ({\\\#} {#})
67
+ ({\\\+} {+})
68
+ ({\\\-} {-})
69
+ ({\\\.} {.})
70
+ ({\\!} {!})))
71
+ (set '*hashed-html-blocks* '())
72
+ (set '*list-level* 0))
73
+
74
+ (define (block-transforms txt)
75
+ (form-paragraphs
76
+ (protect
77
+ (block-quotes
78
+ (code-blocks
79
+ (lists
80
+ (horizontal-rules
81
+ (headers txt))))))))
82
+
83
+ (define (span-transforms txt)
84
+ (line-breaks
85
+ (emphasis
86
+ (amps-and-angles
87
+ (auto-links
88
+ (anchors
89
+ (images
90
+ (escape-special-chars
91
+ (escape-special-chars (code-spans txt) 'inside-attributes)))))))))
92
+
93
+ (define (tokenize-html xhtml)
94
+ ; return list of tag/text portions of xhtml text
95
+ (letn (
96
+ (tag-match [text]((?s:<!(-- .*? -- \s*)+>)|
97
+ (?s:<\?.*?\?>)|
98
+ (?:<[a-z/!$](?:[^<>]|
99
+ (?:<[a-z/!$](?:[^<>]|
100
+ (?:<[a-z/!$](?:[^<>]|
101
+ (?:<[a-z/!$](?:[^<>]|
102
+ (?:<[a-z/!$](?:[^<>]|
103
+ (?:<[a-z/!$](?:[^<>])*>))*>))*>))*>))*>))*>))[/text]) ; yeah, well...
104
+ (str xhtml)
105
+ (len (length str))
106
+ (pos 0)
107
+ (tokens '()))
108
+ (while (set 'tag-start (find tag-match str 8))
109
+ (if (< pos tag-start)
110
+ (push (list 'text (slice str pos (- tag-start pos))) tokens -1))
111
+ (push (list 'tag $0) tokens -1)
112
+ (set 'str (slice str (+ tag-start (length $0))))
113
+ (set 'pos 0))
114
+ ; leftovers
115
+ (if (< pos len)
116
+ (push (list 'text (slice str pos (- len pos))) tokens -1))
117
+ tokens))
118
+
119
+ (define (escape-special-chars txt (within-tag-attributes nil))
120
+ (let ((temp (tokenize-html txt))
121
+ (new-text {}))
122
+ (dolist (pair temp)
123
+ (if (= (first pair) 'tag)
124
+ ; 'tag
125
+ (begin
126
+ (set 'new-text (replace {\\} (last pair) (HashTable {\\}) 0))
127
+ (replace [text](?<=.)</?code>(?=.)[/text] new-text (HashTable {`}) 0)
128
+ (replace {\*} new-text (HashTable {*}) 0)
129
+ (replace {_} new-text (HashTable {_} ) 0))
130
+ ; 'text
131
+ (if within-tag-attributes
132
+ (set 'new-text (last pair))
133
+ (set 'new-text (encode-backslash-escapes (last pair)))))
134
+ (setf (temp $idx) (list (first pair) new-text)))
135
+ ; return as text
136
+ (join (map last temp))))
137
+
138
+ (define (encode-backslash-escapes t)
139
+ (dolist (pair *escape-pairs*)
140
+ (replace (first pair) t (HashTable (last pair)) 14)))
141
+
142
+ (define (encode-code s)
143
+ ; encode/escape certain characters inside Markdown code runs
144
+ (replace {&} s "&amp;" 0)
145
+ (replace {<} s "&lt;" 0)
146
+ (replace {>} s "&gt;" 0)
147
+ (replace {\*} s (HashTable {\\}) 0)
148
+ (replace {_} s (HashTable {_}) 0)
149
+ (replace "{" s (HashTable "{") 0)
150
+ (replace {\[} s (HashTable {[}) 0)
151
+ (replace {\]} s (HashTable {]}) 0)
152
+ (replace {\\} s (HashTable "\\") 0))
153
+
154
+ (define (code-spans s)
155
+ (replace
156
+ {(?<!\\)(`+)(.+?)(?<!`)\1(?!`)}
157
+ s
158
+ (string {<code>} (encode-code (trim $2)) {</code>})
159
+ 2))
160
+
161
+ (define (encode-alt s)
162
+ (replace {&} s "&amp;" 0)
163
+ (replace {"} s "&quot;" 0))
164
+
165
+ (define (images txt)
166
+ (let ((alt-text {})
167
+ (url {})
168
+ (title {})
169
+ (ref-regex {(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])})
170
+ (inline-regex {(!\[(.*?)\]\([ \t]*<?(\S+?)>?[ \t]*((['"])(.*?)\5[ \t]*)?\))})
171
+ (whole-match {})
172
+ (result {})
173
+ (id-ref {})
174
+ (url {}))
175
+ ; reference links ![alt text][id]
176
+ (replace
177
+ ref-regex
178
+ txt
179
+ (begin
180
+ (set 'whole-match $1 'alt-text $2 'id-ref $3)
181
+ (if alt-text
182
+ (replace {"} alt-text {&quot;} 0))
183
+ (if (empty? id-ref)
184
+ (set 'id-ref (lower-case alt-text)))
185
+ (if (lookup id-ref *link-database*)
186
+ (set 'url (first (lookup id-ref *link-database*)))
187
+ (set 'url nil))
188
+ (if url
189
+ (begin
190
+ (replace {\*} url (HashTable {*}) 0)
191
+ (replace {_} url (HashTable {_}) 0)
192
+ ))
193
+ (if (last (lookup id-ref *link-database*))
194
+ ; title
195
+ (begin
196
+ (set 'title (last (lookup id-ref *link-database*)))
197
+ (replace {"} title {&quot;} 0)
198
+ (replace {\*} title (HashTable {*}) 0)
199
+ (replace {_} title (HashTable {_}) 0))
200
+ ; no title
201
+ (set 'title {})
202
+ )
203
+ (if url
204
+ (set 'result (string
205
+ {<img src="}
206
+ (trim url)
207
+ {" alt="}
208
+ alt-text {" }
209
+ (if (not (empty? title))
210
+ (string { title="} title {"}) {})
211
+ { />}))
212
+ (set 'result whole-match))
213
+ )
214
+ 0
215
+ )
216
+ ; inline image refs: ![alt text](url "optional title")
217
+ (replace
218
+ inline-regex
219
+ txt
220
+ (begin
221
+ (set 'whole-match $1)
222
+ (set 'alt-text $2)
223
+ (set 'url $3)
224
+ (set 'title $6)
225
+ (if alt-text
226
+ (replace {"} alt-text {&quot;} 0)
227
+ (set 'alt-text {}))
228
+ (if title
229
+ (begin
230
+ (replace {"} title {&quot;} 0)
231
+ (replace {\*} title (HashTable {*}) 0)
232
+ (replace {_} title (HashTable {_}) 0))
233
+ (set 'title {}))
234
+ (replace {\*} url (HashTable {*}) 0)
235
+ (replace {_} url (HashTable {_}) 0)
236
+ (string
237
+ {<img src="}
238
+ (trim url)
239
+ {" alt="}
240
+ alt-text {" }
241
+ (if title (string {title="} title {"}) {}) { />})
242
+ )
243
+ 0
244
+ )
245
+ ; empty ones are possible
246
+ (set '$1 {})
247
+ (replace {!\[(.*?)\]\([ \t]*\)}
248
+ txt
249
+ (string {<img src="" alt="} $1 {" title="" />})
250
+ 0)))
251
+
252
+ (define (make-anchor link-text id-ref )
253
+ ; Link defs are in the form: ^[id]: url "optional title"
254
+ ; stored in link db list as (id (url title))
255
+ ; params are text to be linked and the id of the link in the db
256
+ ; eg bar 1 for [bar][1]
257
+
258
+ (let ((title {})
259
+ (id id-ref)
260
+ (url nil))
261
+ (if link-text
262
+ (begin
263
+ (replace {"} link-text {&quot;} 0)
264
+ (replace {\n} link-text { } 0)
265
+ (replace {[ ]?\n} link-text { } 0)))
266
+ (if (null? id ) (set 'id (lower-case link-text)))
267
+ (if (not (nil? (lookup id *link-database*)))
268
+ (begin
269
+ (set 'url (first (lookup id *link-database*)))
270
+ (replace {\*} url (HashTable {*}) 0)
271
+ (replace {_} url (HashTable {_}) 0)
272
+ (if (set 'title (last (lookup id *link-database*)))
273
+ (begin
274
+ (replace {"} title {&quot;} 0)
275
+ (replace {\*} title (HashTable {*}) 0)
276
+ (replace {_} title (HashTable {_}) 0))
277
+ (set 'title {})))
278
+ (set 'url nil))
279
+ (if url
280
+ (string {<a href="} (trim url)
281
+ {"}
282
+ (if (not (= title {})) (string { title="} (trim title) {"}) {})
283
+ {>} link-text {</a>})
284
+ (string {[} link-text {][} id-ref {]}))))
285
+
286
+ (define (anchors txt)
287
+ (letn ((nested-brackets {(?>[^\[\]]+)*})
288
+ (ref-link-regex (string {(\[(} nested-brackets {)\][ ]?(?:\n[ ]*)?\[(.*?)\])}))
289
+ (inline-regex {(\[(.*?)\]\([ ]*<?(.*?\)?)>?[ ]*((['"])(.*?)\5[ \t]*)?\))})
290
+ (link-text {})
291
+ (url {})
292
+ (title {}))
293
+ ; reference-style links: [link text] [id]
294
+ (set '$1 {} '$2 {} '$3 {} '$4 {} '$5 {} '$6 {}) ; i still don't think I should have to do this...
295
+
296
+ ; what about this regex instead?
297
+ (set 'ref-link-regex {(\[(.*?)\][ ]?\[(.*?)\])})
298
+
299
+ (replace ref-link-regex txt (make-anchor $2 $3) 8) ; $2 is link text, $3 is id
300
+ ; inline links: [link text](url "optional title")
301
+ (set '$1 {} '$2 {} '$3 {} '$4 {} '$5 {} '$6 {})
302
+ (replace
303
+ inline-regex
304
+ txt
305
+ (begin
306
+ (set 'link-text $2)
307
+ (set 'url $3)
308
+ (set 'title $6)
309
+ (if link-text (replace {"} link-text {&quot;} 0))
310
+ (if title
311
+ (begin
312
+ (replace {"} title {&quot;} 0)
313
+ (replace {\*} title (HashTable {*}) 0)
314
+ (replace {_} title (HashTable {_}) 0))
315
+ (set 'title {}))
316
+ (replace {\*} url (HashTable {*}) 0)
317
+ (replace {_} url (HashTable {_}) 0)
318
+ (replace {^<(.*)>$} url $1 0)
319
+ (string
320
+ {<a href="}
321
+ (trim url)
322
+ {"}
323
+ (if (not (= title {}))
324
+ (string { title="} (trim title) {"})
325
+ {})
326
+ {>} link-text {</a>}
327
+ ))
328
+ 8
329
+ ) ; replace
330
+ ) txt)
331
+
332
+ (define (auto-links txt)
333
+ (replace
334
+ [text]<((https?|ftp):[^'">\s]+)>[/text]
335
+ txt
336
+ (string {<a href="} $1 {">} $1 {</a>})
337
+ 0
338
+ )
339
+ ; to-do: email ...
340
+ )
341
+
342
+ (define (amps-and-angles txt)
343
+ ; Smart processing for ampersands and angle brackets
344
+ (replace
345
+ [text]&(?!\#?[xX]?(?:[0-9a-fA-F]+|\w+);)[/text]
346
+ txt
347
+ {&amp;}
348
+ 10
349
+ )
350
+ (replace
351
+ [text]<(?![a-z/?\$!])[/text]
352
+ txt
353
+ {&lt;}
354
+ 10))
355
+
356
+ (define (emphasis txt)
357
+ ; italics/bold: strong first
358
+ (replace
359
+ [text] (\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1 [/text]
360
+ txt
361
+ (string {<strong>} $2 {</strong>})
362
+ 8
363
+ )
364
+ (replace
365
+ [text] (\*|_) (?=\S) (.+?) (?<=\S) \1 [/text]
366
+ txt
367
+ (string {<em>} $2 {</em>})
368
+ 8
369
+ ))
370
+
371
+ (define (line-breaks txt)
372
+ ; handles line break markers
373
+ (replace " {2,}\n" txt " <br/>\n" 0))
374
+
375
+ (define (hex-str-to-unicode-char strng)
376
+ ; given a five character string, assume it's "U" + 4 hex chars and convert
377
+ ; return the character...
378
+ (char (int (string "0x" (1 strng)) 0 16)))
379
+
380
+ (define (ustring s)
381
+ ; any four digit string preceded by U
382
+ (replace "U[0-9a-f]{4,}" s (hex-str-to-unicode-char $0) 0))
383
+
384
+ (define (cleanup txt)
385
+ ; cleanup the text by normalizing some possible variations
386
+ (replace "\r\n|\r" txt "\n" 0) ; standardize line ends
387
+ (push "\n\n" txt -1) ; end with two returns
388
+ (set 'txt (detab txt)) ; convert tabs to spaces
389
+
390
+ ; convert inline Unicode:
391
+ (set 'txt (ustring txt))
392
+ (replace "\n[ \t]+\n" txt "\n\n" 0) ; lines with only spaces and tabs
393
+ )
394
+
395
+ (define (protect txt)
396
+ ; protect or "hash html blocks"
397
+ (letn ((nested-block-regex [text](^<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b(.*\n)*?</\2>[ \t]*(?=\n+|\Z))[/text])
398
+ (liberal-tag-regex [text](^<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b(.*\n)*?.*</\2>[ \t]*(?=\n+|\Z))[/text])
399
+ (hr-regex [text](?:(?<=\n\n)|\A\n?)([ ]{0,3}<(hr)\b([^<>])*?/?>[ \t]*(?=\n{2,}|\Z))[/text])
400
+ (html-comment-regex [text](?:(?<=\n\n)|\A\n?)([ ]{0,3}(?s:<!(--.*?--\s*)+>)[ \t]*(?=\n{2,}|\Z))[/text])
401
+ (results '())
402
+ (chunk-count (length (set 'chunks (parse txt "\n\n"))))
403
+ (chunk-size 500))
404
+
405
+ ; due to a limitation in PCRE, long sections have to be divided up otherwise we'll crash
406
+ ; so divide up long texts into chunks, then do the regex on each chunk
407
+ ; not an ideal solution, but it works ok :(
408
+
409
+ (for (i 0 chunk-count chunk-size)
410
+ ; do a chunk
411
+ (set 'text-chunk (join (i (- (min chunk-count (- (+ i chunk-size) 1)) i) chunks) "\n\n"))
412
+ (dolist (rgx (list nested-block-regex liberal-tag-regex hr-regex html-comment-regex))
413
+ (replace
414
+ rgx
415
+ text-chunk
416
+ (begin
417
+ (set 'key (Hash:hash $1))
418
+ (push (list key $1 ) *hashed-html-blocks* -1)
419
+ (string "\n\n" key "\n\n"))
420
+ 2))
421
+ ; save this partial result
422
+ (push text-chunk results -1)
423
+ ) ; for
424
+ ; return string result
425
+ (join results "\n\n")))
426
+
427
+ (define (unescape-special-chars t)
428
+ ; Swap back in all the special characters we've hidden.
429
+ (dolist (pair (HashTable))
430
+ (replace (last pair) t (first pair) 10)) t)
431
+
432
+ (define (strip-link-definitions txt)
433
+ ; strip link definitions from the text and store them
434
+ ; Link defs are in the form: ^[id]: url "optional title"
435
+ ; stored in link db list as (id (url title))
436
+ (let ((link-db '())
437
+ (url {})
438
+ (id {})
439
+ (title {}))
440
+ (replace
441
+ [text]^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(?<=\s)["(](.+?)[")][ \t]*)?(?:\n+|\Z)[/text]
442
+ txt
443
+ (begin
444
+ (set 'id (lower-case $1) 'url (amps-and-angles $2) 'title $3)
445
+ (if title (replace {"} title {&quot;} 0))
446
+ (push (list id (list url title)) link-db)
447
+ (set '$3 {}) ; necessary?
448
+ (string {}) ; remove from text
449
+ )
450
+ 10)
451
+ (set '*link-database* link-db)
452
+ txt))
453
+
454
+ (define (horizontal-rules txt)
455
+ (replace
456
+ [text]^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$[/text]
457
+ txt
458
+ "\n<hr />"
459
+ 14)
460
+ (replace
461
+ [text]^[ ]{0,2}([ ]? -[ ]?){3,}[ \t]*$[/text]
462
+ txt
463
+ "\n<hr />"
464
+ 14)
465
+ (replace
466
+ [text]^[ ]{0,2}([ ]? _[ ]?){3,}[ \t]*$[/text]
467
+ txt
468
+ "\n<hr />"
469
+ 14))
470
+
471
+ (define (headers txt)
472
+ ; setext headers
473
+ (let ((level 1))
474
+ (replace
475
+ [text]^(.+)[ \t]*\n=+[ \t]*\n+[/text]
476
+ txt
477
+ (string "<h1>" (span-transforms $1) "</h1>\n\n")
478
+ 2)
479
+
480
+ (replace
481
+ [text]^(.+)[ \t]*\n-+[ \t]*\n+[/text]
482
+ txt
483
+ (string "<h2>" (span-transforms $1) "</h2>\n\n")
484
+ 2)
485
+ ; atx headers
486
+ (replace
487
+ [text]^(\#{1,6})\s*(.+?)[ ]*\#*(\n+)[/text]
488
+ txt
489
+ (begin
490
+ (set 'level (length $1))
491
+ (string "<h" level ">" (span-transforms $2) "</h" level ">\n\n")
492
+ )
493
+ 2)))
494
+
495
+ (define (lists txt)
496
+ (letn ((marker-ul {[*+-]})
497
+ (marker-ol {\d+[.]})
498
+ (marker-any (string {(?:} marker-ul {|} marker-ol {)}))
499
+ (whole-list-regex (string [text](([ ]{0,3}([/text] marker-any [text])[ \t]+)(?s:.+?)(\z|\n{2,}(?=\S)(?![ \t]*[/text] marker-any [text][ \t]+)))[/text]))
500
+ (my-list {})
501
+ (list-type {})
502
+ (my-result {}))
503
+ (replace
504
+ (if (> *list-level* 0)
505
+ (string {^} whole-list-regex)
506
+ (string {(?:(?<=\n\n)|\A\n?)} whole-list-regex))
507
+ txt
508
+ (begin
509
+ (set 'my-list $1)
510
+ (if (find $3 marker-ul)
511
+ (set 'list-type "ul" 'marker-type marker-ul)
512
+ (set 'list-type "ol" 'marker-type marker-ol))
513
+ (replace [text]\n{2,}[/text] my-list "\n\n\n" 0)
514
+ (set 'my-result (process-list-items my-list marker-any))
515
+ (replace {\s+$} my-result {} 0)
516
+ (string {<} list-type {>} "\n" my-result "\n" {</} list-type {>} "\n"))
517
+ 10 ; must be multiline
518
+ )))
519
+
520
+ (define (process-list-items list-text marker-any)
521
+ (let ((list-regex (string [text](\n)?(^[ \t]*)([/text] marker-any [text])[ \t]+((?s:.+?)(\n{1,2}))(?=\n*(\z|\2([/text] marker-any [text])[ \t]+))[/text]))
522
+ (item {})
523
+ (leading-line {})
524
+ (leading-space {})
525
+ (result {}))
526
+ (inc *list-level*)
527
+ (replace [text]\n{2,}\z[/text] list-text "\n" 0)
528
+ (set '$1 {} '$2 {} '$3 {} '$4 {} '$5 {})
529
+ (replace
530
+ list-regex
531
+ list-text
532
+ (begin
533
+ (set 'item $4)
534
+ (set 'leading-line $1)
535
+ (set 'leading-space $2)
536
+ (if (or (not (empty? leading-line)) (ends-with item "\n{2,}" 0))
537
+ (set 'item (block-transforms (outdent item)))
538
+ ; recurse for sub lists
539
+ (begin
540
+ (set 'item (lists (outdent item)))
541
+ (set 'item (span-transforms (trim item "\n")))
542
+ ))
543
+ (string {<li>} item {</li>} "\n"))
544
+ 10)
545
+ (dec *list-level*)
546
+ list-text))
547
+
548
+ (define (code-blocks txt)
549
+ (let ((code-block {})
550
+ (token-list '()))
551
+ (replace
552
+ [text](?:\n\n|\A)((?:(?:[ ]{4}|\t).*\n+)+)((?=^[ ]{0,3}\S)|\Z)[/text]
553
+ txt
554
+ (begin
555
+ (set 'code-block $1)
556
+ ; format if Nestor module is loaded and it's not marked as plain
557
+ (if (and (not (starts-with code-block " ;plain\n")) (context? Nestor))
558
+ ; format newlisp
559
+ (begin
560
+ ; remove flag if present
561
+ (replace "[ ]{4};newlisp\n" code-block {} 0)
562
+ (set 'code-block (protect (Nestor:nlx-to-html (Nestor:my-read (trim (detab (outdent code-block)) "\n")))))
563
+ code-block)
564
+ ; don't format
565
+ (begin
566
+ ; trim leading and trailing newlines
567
+ (replace "[ ]{4};plain\n" code-block {} 0)
568
+ (set 'code-block (trim (detab (encode-code (outdent code-block))) "\n"))
569
+ (set '$1 {})
570
+ (set 'code-block (string "\n\n<pre><code>" code-block "\n</code></pre>\n\n")))))
571
+ 10)))
572
+
573
+ (define (block-quotes txt)
574
+ (let ((block-quote {}))
575
+ (replace
576
+ [text]((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)[/text]
577
+ txt
578
+ (begin
579
+ (set 'block-quote $1)
580
+ (replace {^[ ]*>[ ]?} block-quote {} 2)
581
+ (replace {^[ ]+$} block-quote {} 2)
582
+ (set 'block-quote (block-transforms block-quote)) ; recurse
583
+ ; remove leading spaces
584
+ (replace
585
+ {(\s*<pre>.+?</pre>)}
586
+ block-quote
587
+ (trim $1)
588
+ 2)
589
+ (string "<blockquote>\n" block-quote "\n</blockquote>\n\n"))
590
+ 2)))
591
+
592
+ (define (outdent s)
593
+ (replace [text]^(\t|[ ]{1,4})[/text] s {} 2))
594
+
595
+ (define (detab s)
596
+ (replace [text](.*?)\t[/text]
597
+ s
598
+ (string $1 (dup { } (- 4 (% (length $1) 4))))
599
+ 2))
600
+
601
+ (define (form-paragraphs txt)
602
+ (let ((grafs '())
603
+ (original nil))
604
+ (set 'txt (trim txt "\n")) ; strip blank lines before and after
605
+ (set 'grafs (parse txt "\n{2,}" 0)) ; split
606
+ (dolist (p grafs)
607
+ (if (set 'original (lookup p *hashed-html-blocks*))
608
+ ; html blocks
609
+ (setf (grafs $idx) original)
610
+ ; wrap <p> tags round everything else
611
+ (setf (grafs $idx) (string {<p>} (replace {^[ ]*} (span-transforms p) {} (+ 4 8 16)) {</p>}))))
612
+ (join grafs "\n\n")))
613
+
614
+ [text]
615
+ ; three command line arguments: let's hope last one is a file
616
+ (when (= 3 (length (main-args)))
617
+ (println (markdown (read-file (main-args 2))))
618
+ (exit))
619
+
620
+ ; hack for command-line and module loading
621
+ (set 'level (sys-info 3))
622
+
623
+ ; if level is 2, then we're probably invoking markdown.lsp directly
624
+ ; if level is > 3, then we're probably loading it into another script...
625
+
626
+ (when (= level 2)
627
+ ; running on command line, read STDIN and execute:
628
+ (while (read-line)
629
+ (push (current-line) *stdin* -1))
630
+ (println (markdown (join *stdin* "\n")))
631
+ (exit))
632
+ [/text]
633
+
634
+ ;; version 2011-09-16 16:31:29
635
+ ;; Changed to different hash routine. Profiling shows that hashing takes 40% of the execution time.
636
+ ;; Unfortunately this new version is only very slightly faster.
637
+ ;; Command-line arguments hack in previous version doesn't work.
638
+ ;;
639
+ ;; version 2011-08-18 15:04:40
640
+ ;; various fixes, and added hack for running this from the command-line:
641
+ ;; echo "hi there" | newlisp markdown.lsp
642
+ ;; echo "hello world" | markdown.lsp
643
+ ;; cat file.text | newlisp markdown.lsp
644
+ ;;
645
+ ;; version 2010-11-14 17:34:52
646
+ ;; some problems in ustring. Probably remove it one day, as it's non standard...
647
+ ;;
648
+ ;; version 2010-10-14 18:41:38
649
+ ;; added code to work round PCRE crash in (protect ...
650
+ ;;
651
+ ;; version date 2010-07-10 22:20:25
652
+ ;; modified call to 'read' since lutz has changed it
653
+ ;;
654
+ ;; version date 2009-11-16 22:10:10
655
+ ;; fixed bug in tokenize.html
656
+ ;;
657
+ ;; version date 2008-10-08 18:44:46
658
+ ;; changed nth-set to setf to be version-10 ready.
659
+ ;; This means that now this script will NOT work with
660
+ ;; earlier versions of newLISP!!!!!!!!!!!
661
+ ;; requires Nestor if you want source code colouring...
662
+ ;;
663
+ ;; version date 2008-08-08 16:54:56
664
+ ;; changed (unless to (if (not ... :(
665
+ ;;
666
+ ;; version date 2008-07-20 14:!2:29
667
+ ;; added hex-str-to-unicode-char ustring
668
+ ;;
669
+ ;; version date 2008-03-07 15:36:09
670
+ ;; fixed load error
671
+ ;;
672
+ ;; version date 2007-11-17 16:20:57
673
+ ;; added syntax colouring module
674
+ ;;
675
+ ;; version date 2007-11-14 09:19:42
676
+ ;; removed reliance on dostring for compatibility with 9.1
677
+
678
+
679
+ ; eof