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,23 @@
1
+ role q {
2
+ token stopper { \' }
3
+
4
+ token escape:sym<\\> { <sym> <item=.backslash> }
5
+
6
+ token backslash:sym<qq> { <?before 'q'> <quote=.LANG('MAIN','quote')> }
7
+ token backslash:sym<\\> { <text=.sym> }
8
+ token backslash:sym<stopper> { <text=.stopper> }
9
+
10
+ token backslash:sym<miscq> { {} . }
11
+
12
+ method tweak_q($v) { self.panic("Too late for :q") }
13
+ method tweak_qq($v) { self.panic("Too late for :qq") }
14
+ }
15
+
16
+ role qq does b1 does c1 does s1 does a1 does h1 does f1 {
17
+ token stopper { \" }
18
+ token backslash:sym<unrec> { {} (\w) { self.throw_unrecog_backslash_seq: $/[0].Str } }
19
+ token backslash:sym<misc> { \W }
20
+
21
+ method tweak_q($v) { self.panic("Too late for :q") }
22
+ method tweak_qq($v) { self.panic("Too late for :qq") }
23
+ }
@@ -0,0 +1,378 @@
1
+ ---------------------------------------------------------------------
2
+ -- SmallCheck: another lightweight testing library.
3
+ -- Colin Runciman, August 2006
4
+ -- Version 0.2 (November 2006)
5
+ --
6
+ -- After QuickCheck, by Koen Claessen and John Hughes (2000-2004).
7
+ ---------------------------------------------------------------------
8
+
9
+ module SmallCheck (
10
+ smallCheck, depthCheck,
11
+ Property, Testable,
12
+ forAll, forAllElem,
13
+ exists, existsDeeperBy, thereExists, thereExistsElem,
14
+ (==>),
15
+ Series, Serial(..),
16
+ (\/), (><), two, three, four,
17
+ cons0, cons1, cons2, cons3, cons4,
18
+ alts0, alts1, alts2, alts3, alts4,
19
+ N(..), Nat, Natural,
20
+ depth, inc, dec
21
+ ) where
22
+
23
+ import Data.List (intersperse)
24
+ import Control.Monad (when)
25
+ import System.IO (stdout, hFlush)
26
+
27
+ ------------------ <Series of depth-bounded values> -----------------
28
+
29
+ -- Series arguments should be interpreted as a depth bound (>=0)
30
+ -- Series results should have finite length
31
+
32
+ type Series a = Int -> [a]
33
+
34
+ -- sum
35
+ infixr 7 \/
36
+ (\/) :: Series a -> Series a -> Series a
37
+ s1 \/ s2 = \d -> s1 d ++ s2 d
38
+
39
+ -- product
40
+ infixr 8 ><
41
+ (><) :: Series a -> Series b -> Series (a,b)
42
+ s1 >< s2 = \d -> [(x,y) | x <- s1 d, y <- s2 d]
43
+
44
+ ------------------- <methods for type enumeration> ------------------
45
+
46
+ -- enumerated data values should be finite and fully defined
47
+ -- enumerated functional values should be total and strict
48
+
49
+ -- bounds:
50
+ -- for data values, the depth of nested constructor applications
51
+ -- for functional values, both the depth of nested case analysis
52
+ -- and the depth of results
53
+
54
+ class Serial a where
55
+ series :: Series a
56
+ coseries :: Serial b => Series (a->b)
57
+
58
+ instance Serial () where
59
+ series _ = [()]
60
+ coseries d = [ \() -> b
61
+ | b <- series d ]
62
+
63
+ instance Serial Int where
64
+ series d = [(-d)..d]
65
+ coseries d = [ \i -> if i > 0 then f (N (i - 1))
66
+ else if i < 0 then g (N (abs i - 1))
67
+ else z
68
+ | z <- alts0 d, f <- alts1 d, g <- alts1 d ]
69
+
70
+ instance Serial Integer where
71
+ series d = [ toInteger (i :: Int)
72
+ | i <- series d ]
73
+ coseries d = [ f . (fromInteger :: Integer->Int)
74
+ | f <- series d ]
75
+
76
+ newtype N a = N a
77
+
78
+ instance Show a => Show (N a) where
79
+ show (N i) = show i
80
+
81
+ instance (Integral a, Serial a) => Serial (N a) where
82
+ series d = map N [0..d']
83
+ where
84
+ d' = fromInteger (toInteger d)
85
+ coseries d = [ \(N i) -> if i > 0 then f (N (i - 1))
86
+ else z
87
+ | z <- alts0 d, f <- alts1 d ]
88
+
89
+ type Nat = N Int
90
+ type Natural = N Integer
91
+
92
+ instance Serial Float where
93
+ series d = [ encodeFloat sig exp
94
+ | (sig,exp) <- series d,
95
+ odd sig || sig==0 && exp==0 ]
96
+ coseries d = [ f . decodeFloat
97
+ | f <- series d ]
98
+
99
+ instance Serial Double where
100
+ series d = [ frac (x :: Float)
101
+ | x <- series d ]
102
+ coseries d = [ f . (frac :: Double->Float)
103
+ | f <- series d ]
104
+
105
+ frac :: (Real a, Fractional a, Real b, Fractional b) => a -> b
106
+ frac = fromRational . toRational
107
+
108
+ instance Serial Char where
109
+ series d = take (d+1) ['a'..'z']
110
+ coseries d = [ \c -> f (N (fromEnum c - fromEnum 'a'))
111
+ | f <- series d ]
112
+
113
+ instance (Serial a, Serial b) =>
114
+ Serial (a,b) where
115
+ series = series >< series
116
+ coseries = map uncurry . coseries
117
+
118
+ instance (Serial a, Serial b, Serial c) =>
119
+ Serial (a,b,c) where
120
+ series = \d -> [(a,b,c) | (a,(b,c)) <- series d]
121
+ coseries = map uncurry3 . coseries
122
+
123
+ instance (Serial a, Serial b, Serial c, Serial d) =>
124
+ Serial (a,b,c,d) where
125
+ series = \d -> [(a,b,c,d) | (a,(b,(c,d))) <- series d]
126
+ coseries = map uncurry4 . coseries
127
+
128
+ uncurry3 :: (a->b->c->d) -> ((a,b,c)->d)
129
+ uncurry3 f (x,y,z) = f x y z
130
+
131
+ uncurry4 :: (a->b->c->d->e) -> ((a,b,c,d)->e)
132
+ uncurry4 f (w,x,y,z) = f w x y z
133
+
134
+ two :: Series a -> Series (a,a)
135
+ two s = s >< s
136
+
137
+ three :: Series a -> Series (a,a,a)
138
+ three s = \d -> [(x,y,z) | (x,(y,z)) <- (s >< s >< s) d]
139
+
140
+ four :: Series a -> Series (a,a,a,a)
141
+ four s = \d -> [(w,x,y,z) | (w,(x,(y,z))) <- (s >< s >< s >< s) d]
142
+
143
+ cons0 ::
144
+ a -> Series a
145
+ cons0 c _ = [c]
146
+
147
+ cons1 :: Serial a =>
148
+ (a->b) -> Series b
149
+ cons1 c d = [c z | d > 0, z <- series (d-1)]
150
+
151
+ cons2 :: (Serial a, Serial b) =>
152
+ (a->b->c) -> Series c
153
+ cons2 c d = [c y z | d > 0, (y,z) <- series (d-1)]
154
+
155
+ cons3 :: (Serial a, Serial b, Serial c) =>
156
+ (a->b->c->d) -> Series d
157
+ cons3 c d = [c x y z | d > 0, (x,y,z) <- series (d-1)]
158
+
159
+ cons4 :: (Serial a, Serial b, Serial c, Serial d) =>
160
+ (a->b->c->d->e) -> Series e
161
+ cons4 c d = [c w x y z | d > 0, (w,x,y,z) <- series (d-1)]
162
+
163
+ alts0 :: Serial a =>
164
+ Series a
165
+ alts0 d = series d
166
+
167
+ alts1 :: (Serial a, Serial b) =>
168
+ Series (a->b)
169
+ alts1 d = if d > 0 then series (dec d)
170
+ else [\_ -> x | x <- series d]
171
+
172
+ alts2 :: (Serial a, Serial b, Serial c) =>
173
+ Series (a->b->c)
174
+ alts2 d = if d > 0 then series (dec d)
175
+ else [\_ _ -> x | x <- series d]
176
+
177
+ alts3 :: (Serial a, Serial b, Serial c, Serial d) =>
178
+ Series (a->b->c->d)
179
+ alts3 d = if d > 0 then series (dec d)
180
+ else [\_ _ _ -> x | x <- series d]
181
+
182
+ alts4 :: (Serial a, Serial b, Serial c, Serial d, Serial e) =>
183
+ Series (a->b->c->d->e)
184
+ alts4 d = if d > 0 then series (dec d)
185
+ else [\_ _ _ _ -> x | x <- series d]
186
+
187
+ instance Serial Bool where
188
+ series = cons0 True \/ cons0 False
189
+ coseries d = [ \x -> if x then b1 else b2
190
+ | (b1,b2) <- series d ]
191
+
192
+ instance Serial a => Serial (Maybe a) where
193
+ series = cons0 Nothing \/ cons1 Just
194
+ coseries d = [ \m -> case m of
195
+ Nothing -> z
196
+ Just x -> f x
197
+ | z <- alts0 d ,
198
+ f <- alts1 d ]
199
+
200
+ instance (Serial a, Serial b) => Serial (Either a b) where
201
+ series = cons1 Left \/ cons1 Right
202
+ coseries d = [ \e -> case e of
203
+ Left x -> f x
204
+ Right y -> g y
205
+ | f <- alts1 d ,
206
+ g <- alts1 d ]
207
+
208
+ instance Serial a => Serial [a] where
209
+ series = cons0 [] \/ cons2 (:)
210
+ coseries d = [ \xs -> case xs of
211
+ [] -> y
212
+ (x:xs') -> f x xs'
213
+ | y <- alts0 d ,
214
+ f <- alts2 d ]
215
+
216
+ -- Warning: the coseries instance here may generate duplicates.
217
+ instance (Serial a, Serial b) => Serial (a->b) where
218
+ series = coseries
219
+ coseries d = [ \f -> g [f x | x <- series d]
220
+ | g <- series d ]
221
+
222
+ -- For customising the depth measure. Use with care!
223
+
224
+ depth :: Int -> Int -> Int
225
+ depth d d' | d >= 0 = d'+1-d
226
+ | otherwise = error "SmallCheck.depth: argument < 0"
227
+
228
+ dec :: Int -> Int
229
+ dec d | d > 0 = d-1
230
+ | otherwise = error "SmallCheck.dec: argument <= 0"
231
+
232
+ inc :: Int -> Int
233
+ inc d = d+1
234
+
235
+ -- show the extension of a function (in part, bounded both by
236
+ -- the number and depth of arguments)
237
+ instance (Serial a, Show a, Show b) => Show (a->b) where
238
+ show f =
239
+ if maxarheight == 1
240
+ && sumarwidth + length ars * length "->;" < widthLimit then
241
+ "{"++(
242
+ concat $ intersperse ";" $ [a++"->"++r | (a,r) <- ars]
243
+ )++"}"
244
+ else
245
+ concat $ [a++"->\n"++indent r | (a,r) <- ars]
246
+ where
247
+ ars = take lengthLimit [ (show x, show (f x))
248
+ | x <- series depthLimit ]
249
+ maxarheight = maximum [ max (height a) (height r)
250
+ | (a,r) <- ars ]
251
+ sumarwidth = sum [ length a + length r
252
+ | (a,r) <- ars]
253
+ indent = unlines . map (" "++) . lines
254
+ height = length . lines
255
+ (widthLimit,lengthLimit,depthLimit) = (80,20,3)::(Int,Int,Int)
256
+
257
+ ---------------- <properties and their evaluation> ------------------
258
+
259
+ -- adapted from QuickCheck originals: here results come in lists,
260
+ -- properties have depth arguments, stamps (for classifying random
261
+ -- tests) are omitted, existentials are introduced
262
+
263
+ newtype PR = Prop [Result]
264
+
265
+ data Result = Result {ok :: Maybe Bool, arguments :: [String]}
266
+
267
+ nothing :: Result
268
+ nothing = Result {ok = Nothing, arguments = []}
269
+
270
+ result :: Result -> PR
271
+ result res = Prop [res]
272
+
273
+ newtype Property = Property (Int -> PR)
274
+
275
+ class Testable a where
276
+ property :: a -> Int -> PR
277
+
278
+ instance Testable Bool where
279
+ property b _ = Prop [Result (Just b) []]
280
+
281
+ instance Testable PR where
282
+ property prop _ = prop
283
+
284
+ instance (Serial a, Show a, Testable b) => Testable (a->b) where
285
+ property f = f' where Property f' = forAll series f
286
+
287
+ instance Testable Property where
288
+ property (Property f) d = f d
289
+
290
+ evaluate :: Testable a => a -> Series Result
291
+ evaluate x d = rs where Prop rs = property x d
292
+
293
+ forAll :: (Show a, Testable b) => Series a -> (a->b) -> Property
294
+ forAll xs f = Property $ \d -> Prop $
295
+ [ r{arguments = show x : arguments r}
296
+ | x <- xs d, r <- evaluate (f x) d ]
297
+
298
+ forAllElem :: (Show a, Testable b) => [a] -> (a->b) -> Property
299
+ forAllElem xs = forAll (const xs)
300
+
301
+ thereExists :: Testable b => Series a -> (a->b) -> Property
302
+ thereExists xs f = Property $ \d -> Prop $
303
+ [ Result
304
+ ( Just $ or [ all pass (evaluate (f x) d)
305
+ | x <- xs d ] )
306
+ [] ]
307
+ where
308
+ pass (Result Nothing _) = True
309
+ pass (Result (Just b) _) = b
310
+
311
+ thereExistsElem :: Testable b => [a] -> (a->b) -> Property
312
+ thereExistsElem xs = thereExists (const xs)
313
+
314
+ exists :: (Serial a, Testable b) =>
315
+ (a->b) -> Property
316
+ exists = thereExists series
317
+
318
+ existsDeeperBy :: (Serial a, Testable b) =>
319
+ (Int->Int) -> (a->b) -> Property
320
+ existsDeeperBy f = thereExists (series . f)
321
+
322
+ infixr 0 ==>
323
+
324
+ (==>) :: Testable a => Bool -> a -> Property
325
+ True ==> x = Property (property x)
326
+ False ==> x = Property (const (result nothing))
327
+
328
+ --------------------- <top-level test drivers> ----------------------
329
+
330
+ -- similar in spirit to QuickCheck but with iterative deepening
331
+
332
+ -- test for values of depths 0..d stopping when a property
333
+ -- fails or when it has been checked for all these values
334
+ smallCheck :: Testable a => Int -> a -> IO String
335
+ smallCheck d = iterCheck 0 (Just d)
336
+
337
+ depthCheck :: Testable a => Int -> a -> IO String
338
+ depthCheck d = iterCheck d (Just d)
339
+
340
+ iterCheck :: Testable a => Int -> Maybe Int -> a -> IO String
341
+ iterCheck dFrom mdTo t = iter dFrom
342
+ where
343
+ iter :: Int -> IO String
344
+ iter d = do
345
+ let Prop results = property t d
346
+ (ok,s) <- check (mdTo==Nothing) 0 0 True results
347
+ maybe (iter (d+1))
348
+ (\dTo -> if ok && d < dTo
349
+ then iter (d+1)
350
+ else return s)
351
+ mdTo
352
+
353
+ check :: Bool -> Int -> Int -> Bool -> [Result] -> IO (Bool, String)
354
+ check i n x ok rs | null rs = do
355
+ let s = " Completed "++show n++" test(s)"
356
+ y = if i then "." else " without failure."
357
+ z | x > 0 = " But "++show x++" did not meet ==> condition."
358
+ | otherwise = ""
359
+ return (ok, s ++ y ++ z)
360
+
361
+ check i n x ok (Result Nothing _ : rs) = do
362
+ progressReport i n x
363
+ check i (n+1) (x+1) ok rs
364
+
365
+ check i n x f (Result (Just True) _ : rs) = do
366
+ progressReport i n x
367
+ check i (n+1) x f rs
368
+
369
+ check i n x f (Result (Just False) args : rs) = do
370
+ let s = " Failed test no. "++show (n+1)++". Test values follow."
371
+ s' = s ++ ": " ++ concat (intersperse ", " args)
372
+ if i then
373
+ check i (n+1) x False rs
374
+ else
375
+ return (False, s')
376
+
377
+ progressReport :: Bool -> Int -> Int -> IO ()
378
+ progressReport _ _ _ = return ()
@@ -0,0 +1,470 @@
1
+ IMPLEMENTATION MODULE Sorting;
2
+
3
+ (* J. Andrea, Dec.16/91 *)
4
+ (* This code may be freely used and distributed, it may not be sold. *)
5
+
6
+ (* Adapted to ISO Module-2 by Frank Schoonjans Feb 2004 *)
7
+
8
+ FROM Storage IMPORT ALLOCATE;
9
+
10
+ CONST
11
+ max_stack = 20;
12
+ n_small = 6; (* use a simple sort for this size and smaller *)
13
+
14
+ VAR
15
+ rtemp :REAL;
16
+ ctemp :CARDINAL;
17
+
18
+ L, R, n :INTEGER;
19
+ top, bottom, lastflip :INTEGER;
20
+
21
+ tos :CARDINAL;
22
+ Lstack, Rstack :ARRAY [1..max_stack] OF INTEGER;
23
+
24
+ (* --------------------------------------------------- *)
25
+ PROCEDURE CardQSortIndex( x :ARRAY OF CARDINAL; array_len :CARDINAL;
26
+ VAR index :ARRAY OF CARDINAL );
27
+
28
+ VAR
29
+ median : CARDINAL;
30
+ i,j : INTEGER;
31
+ BEGIN
32
+
33
+ n := VAL(INTEGER,array_len) - 1; (* back to zero offset *)
34
+
35
+ (* initialize the index *)
36
+ FOR i := 0 TO n DO
37
+ index[i] := VAL(CARDINAL,i);
38
+ END;
39
+
40
+ tos := 0;
41
+
42
+ L := 0; R := n;
43
+
44
+ (* PUSH very first set *)
45
+ tos := tos + 1; Lstack[tos] := L; Rstack[tos] := R;
46
+
47
+ REPEAT
48
+
49
+ (* POP *)
50
+ L := Lstack[tos]; R := Rstack[tos]; tos := tos - 1;
51
+
52
+ IF R - L + 1 > n_small THEN
53
+
54
+ REPEAT
55
+ i := L; j := R; median := x[index[( L + R ) DIV 2]];
56
+
57
+ REPEAT
58
+ WHILE x[index[i]] < median DO
59
+ i := i + 1;
60
+ END;
61
+ WHILE median < x[index[j]] DO
62
+ j := j - 1;
63
+ END;
64
+
65
+ IF i <= j THEN (* swap *)
66
+ ctemp := index[i]; index[i] := index[j]; index[j] := ctemp;
67
+ i := i + 1; j := j - 1;
68
+ END;
69
+ UNTIL i > j;
70
+
71
+ IF j - L < R - i THEN
72
+ IF i < R THEN (* PUSH *)
73
+ tos := tos + 1; Lstack[tos] := i; Rstack[tos] := R;
74
+ END;
75
+ R := j;
76
+ ELSE
77
+ IF L < j THEN (* push *)
78
+ tos := tos + 1; Lstack[tos] := L; Rstack[tos] := j;
79
+ END;
80
+ L := i;
81
+ END;
82
+
83
+ UNTIL L >= R;
84
+
85
+ ELSE
86
+
87
+ (* small sort for small number of values *)
88
+ FOR i := L TO R - 1 DO
89
+ FOR j := i TO R DO
90
+ IF x[index[i]] > x[index[j]] THEN
91
+ ctemp := index[i];
92
+ index[i] := index[j];
93
+ index[j] := ctemp
94
+ END;
95
+ END;
96
+ END;
97
+
98
+ END; (* check for small *)
99
+
100
+ UNTIL tos = 0;
101
+
102
+ END CardQSortIndex;
103
+
104
+ (* --------------------------------------------------- *)
105
+ PROCEDURE RealQSortIndex( x :ARRAY OF REAL; array_len :CARDINAL;
106
+ VAR index :ARRAY OF CARDINAL );
107
+
108
+ VAR
109
+ median :REAL;
110
+ i,j :INTEGER;
111
+ BEGIN
112
+
113
+ n := VAL(INTEGER,array_len) - 1; (* back to zero offset *)
114
+
115
+ (* initialize the index *)
116
+ FOR i := 0 TO n DO
117
+ index[i] := VAL(CARDINAL,i);
118
+ END;
119
+
120
+ tos := 0;
121
+
122
+ L := 0; R := n;
123
+
124
+ (* PUSH very first set *)
125
+ tos := tos + 1; Lstack[tos] := L; Rstack[tos] := R;
126
+
127
+ REPEAT
128
+
129
+ (* POP *)
130
+ L := Lstack[tos]; R := Rstack[tos]; tos := tos - 1;
131
+
132
+ IF R - L + 1 > n_small THEN
133
+
134
+ REPEAT
135
+ i := L; j := R; median := x[index[( L + R ) DIV 2]];
136
+
137
+ REPEAT
138
+ WHILE x[index[i]] < median DO
139
+ i := i + 1;
140
+ END;
141
+ WHILE median < x[index[j]] DO
142
+ j := j - 1;
143
+ END;
144
+
145
+ IF i <= j THEN (* swap *)
146
+ ctemp := index[i]; index[i] := index[j]; index[j] := ctemp;
147
+ i := i + 1; j := j - 1;
148
+ END;
149
+ UNTIL i > j;
150
+
151
+ IF j - L < R - i THEN
152
+ IF i < R THEN (* PUSH *)
153
+ tos := tos + 1; Lstack[tos] := i; Rstack[tos] := R;
154
+ END;
155
+ R := j;
156
+ ELSE
157
+ IF L < j THEN (* push *)
158
+ tos := tos + 1; Lstack[tos] := L; Rstack[tos] := j;
159
+ END;
160
+ L := i;
161
+ END;
162
+
163
+ UNTIL L >= R;
164
+
165
+ ELSE
166
+
167
+ (* small sort for small number of values *)
168
+ FOR i := L TO R - 1 DO
169
+ FOR j := i TO R DO
170
+ IF x[index[i]] > x[index[j]] THEN
171
+ ctemp := index[i];
172
+ index[i] := index[j];
173
+ index[j] := ctemp
174
+ END;
175
+ END;
176
+ END;
177
+
178
+ END; (* check for small *)
179
+
180
+ UNTIL tos = 0;
181
+
182
+ END RealQSortIndex;
183
+
184
+ (* --------------------------------------------------- *)
185
+ PROCEDURE CardQSort( VAR x :ARRAY OF CARDINAL; array_len :CARDINAL );
186
+
187
+ VAR
188
+ median : CARDINAL;
189
+ n,i,j : INTEGER;
190
+ BEGIN
191
+
192
+ n := VAL(INTEGER,array_len) - 1; (* back to zero offset *)
193
+
194
+ tos := 0;
195
+
196
+ L := 0; R := n;
197
+
198
+ (* PUSH very first set *)
199
+ tos := tos + 1; Lstack[tos] := L; Rstack[tos] := R;
200
+
201
+ REPEAT
202
+
203
+ (* POP *)
204
+ L := Lstack[tos]; R := Rstack[tos]; tos := tos - 1;
205
+
206
+ IF R - L + 1 > n_small THEN
207
+
208
+ REPEAT
209
+ i := L; j := R; median := x[( L + R ) DIV 2];
210
+
211
+ REPEAT
212
+ WHILE x[i] < median DO
213
+ i := i + 1;
214
+ END;
215
+ WHILE median < x[j] DO
216
+ j := j - 1;
217
+ END;
218
+
219
+ IF i <= j THEN (* swap *)
220
+ ctemp := x[i]; x[i] := x[j]; x[j] := ctemp;
221
+ i := i + 1; j := j - 1;
222
+ END;
223
+ UNTIL i > j;
224
+
225
+ IF j - L < R - i THEN
226
+ IF i < R THEN (* PUSH *)
227
+ tos := tos + 1; Lstack[tos] := i; Rstack[tos] := R;
228
+ END;
229
+ R := j;
230
+ ELSE
231
+ IF L < j THEN (* push *)
232
+ tos := tos + 1; Lstack[tos] := L; Rstack[tos] := j;
233
+ END;
234
+ L := i;
235
+ END;
236
+
237
+ UNTIL L >= R;
238
+
239
+ ELSE
240
+
241
+ (* small sort for small number of values *)
242
+ FOR i := L TO R - 1 DO
243
+ FOR j := i TO R DO
244
+ IF x[i] > x[j] THEN
245
+ ctemp := x[i];
246
+ x[i] := x[j];
247
+ x[j] := ctemp
248
+ END;
249
+ END;
250
+ END;
251
+
252
+ END; (* check for small *)
253
+
254
+ UNTIL tos = 0;
255
+
256
+ END CardQSort;
257
+
258
+ (* ----------------------------------------------------- *)
259
+ PROCEDURE CardBSort( VAR x :ARRAY OF CARDINAL; array_len :CARDINAL );
260
+ VAR i,j : INTEGER;
261
+ BEGIN
262
+ top := 0; (* open arrays are zero offset *)
263
+ bottom := VAL(INTEGER,array_len) - 1;
264
+
265
+ WHILE top < bottom DO
266
+
267
+ lastflip := top;
268
+
269
+ FOR i := top TO bottom-1 DO
270
+ IF x[i] > x[i+1] THEN (* flip *)
271
+ ctemp := x[i];
272
+ x[i] := x[i+1];
273
+ x[i+1] := ctemp;
274
+ lastflip := i;
275
+ END;
276
+ END;
277
+
278
+ bottom := lastflip;
279
+
280
+ IF bottom > top THEN
281
+
282
+ i := bottom - 1;
283
+ FOR j := top TO bottom-1 DO
284
+ IF x[i] > x[i+1] THEN (* flip *)
285
+ ctemp := x[i];
286
+ x[i] := x[i+1];
287
+ x[i+1] := ctemp;
288
+ lastflip := i;
289
+ END;
290
+ i := i - 1;
291
+ END;
292
+
293
+ top := lastflip + 1;
294
+
295
+ ELSE
296
+ (* force a loop failure *)
297
+ top := bottom + 1;
298
+ END;
299
+
300
+ END;
301
+
302
+ END CardBSort;
303
+
304
+
305
+ (* ----------------------------------------------------- *)
306
+ PROCEDURE RealBSort( VAR x :ARRAY OF REAL; array_len :CARDINAL );
307
+ VAR bottom,top : INTEGER;
308
+ i,j : INTEGER;
309
+ BEGIN
310
+ top := 0; (* open arrays are zero offset *)
311
+ bottom := VAL(INTEGER,array_len) - 1;
312
+
313
+ WHILE top < bottom DO
314
+
315
+ lastflip := top;
316
+
317
+ FOR i := top TO bottom-1 DO
318
+ IF x[i] > x[i+1] THEN (* flip *)
319
+ rtemp := x[i];
320
+ x[i] := x[i+1];
321
+ x[i+1] := rtemp;
322
+ lastflip := i;
323
+ END;
324
+ END;
325
+
326
+ bottom := lastflip;
327
+
328
+ IF bottom > top THEN
329
+
330
+ i := bottom - 1;
331
+ FOR j := top TO bottom-1 DO
332
+ IF x[i] > x[i+1] THEN (* flip *)
333
+ rtemp := x[i];
334
+ x[i] := x[i+1];
335
+ x[i+1] := rtemp;
336
+ lastflip := i;
337
+ END;
338
+ i := i - 1;
339
+ END;
340
+
341
+ top := lastflip + 1;
342
+
343
+ ELSE
344
+ (* force a loop failure *)
345
+ top := bottom + 1;
346
+ END;
347
+
348
+ END;
349
+
350
+ END RealBSort;
351
+
352
+
353
+ (* ----------------------------------------------------- *)
354
+ PROCEDURE TopoSort( x, y :ARRAY OF CARDINAL; n_pairs :CARDINAL;
355
+ VAR solution :ARRAY OF CARDINAL; VAR n_solution :CARDINAL;
356
+ VAR error, sorted :BOOLEAN );
357
+ (*
358
+ This procedure needs some garbage collection added, i've tried but
359
+ will little success. J. Andrea, Dec.18/91
360
+ *)
361
+
362
+ TYPE
363
+ LPtr = POINTER TO Leader;
364
+ TPtr = POINTER TO Trailer;
365
+
366
+ Leader = RECORD
367
+ key :CARDINAL;
368
+ count :INTEGER;
369
+ trail :TPtr;
370
+ next :LPtr;
371
+ END;
372
+
373
+ Trailer = RECORD
374
+ id :LPtr;
375
+ next :TPtr;
376
+ END;
377
+
378
+ VAR
379
+ p, q, head, tail :LPtr;
380
+ t :TPtr;
381
+ i, max_solutions :CARDINAL;
382
+
383
+ (* -------------------------------------------- *)
384
+ PROCEDURE Find( w :CARDINAL ) :LPtr;
385
+ VAR h :LPtr;
386
+ BEGIN
387
+ h := head; tail^.key := w; (* sentinel *)
388
+ WHILE h^.key # w DO
389
+ h := h^.next;
390
+ END;
391
+ IF h = tail THEN
392
+ NEW( tail );
393
+ n := n + 1;
394
+ h^.count := 0;
395
+ h^.trail := NIL;
396
+ h^.next := tail;
397
+ END;
398
+ RETURN h;
399
+ END Find;
400
+
401
+ BEGIN
402
+
403
+ error := FALSE;
404
+ n_solution := 0;
405
+
406
+ IF n_pairs < 2 THEN
407
+ error := TRUE;
408
+ ELSE
409
+
410
+ max_solutions := HIGH( solution ) + 1;
411
+
412
+ NEW( head ); tail := head; n := 0;
413
+
414
+ (* add all of the given pairs *)
415
+
416
+ FOR i := 0 TO n_pairs - 1 DO
417
+ p := Find( x[i] ); q := Find( y[i] );
418
+ NEW(t);
419
+ t^.id := q;
420
+ t^.next := p^.trail;
421
+ p^.trail := t;
422
+ q^.count := q^.count + 1;
423
+ END;
424
+
425
+ (* search for leaders without predecessors *)
426
+
427
+ p := head; head := NIL;
428
+ WHILE p # tail DO
429
+ q := p; p := q^.next;
430
+ IF q^.count = 0 THEN
431
+ (* insert q^ in new chain *)
432
+ q^.next := head; head := q;
433
+ END;
434
+ END;
435
+
436
+ (* output phase *)
437
+
438
+ q := head;
439
+ WHILE ( NOT error ) & ( q # NIL ) DO
440
+ n_solution := n_solution + 1;
441
+ IF n_solution > max_solutions THEN
442
+ error := TRUE;
443
+ ELSE
444
+
445
+ solution[n_solution-1] := q^.key;
446
+ n := n - 1;
447
+ t := q^.trail; q := q^.next;
448
+ WHILE t # NIL DO
449
+ p := t^.id; p^.count := p^.count - 1;
450
+ IF p^.count = 0 THEN
451
+ (* insert p^ in leader list *)
452
+ p^.next := q; q := p;
453
+ END;
454
+ t := t^.next;
455
+ END;
456
+ END;
457
+ END;
458
+
459
+ IF n # 0 THEN
460
+ sorted := FALSE;
461
+ ELSE
462
+ sorted := TRUE;
463
+ END;
464
+
465
+ END;
466
+
467
+ END TopoSort;
468
+
469
+ BEGIN
470
+ END Sorting.