mortar-pygments.rb 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. data/.gitignore +6 -0
  2. data/CHANGELOG.md +71 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE +17 -0
  5. data/README.md +121 -0
  6. data/Rakefile +66 -0
  7. data/bench.rb +22 -0
  8. data/cache-lexers.rb +8 -0
  9. data/lexers +0 -0
  10. data/lib/pygments/lexer.rb +148 -0
  11. data/lib/pygments/mentos.py +351 -0
  12. data/lib/pygments/popen.rb +406 -0
  13. data/lib/pygments/version.rb +3 -0
  14. data/lib/pygments.rb +8 -0
  15. data/pygments.rb.gemspec +25 -0
  16. data/test/test_data.c +2581 -0
  17. data/test/test_data.py +514 -0
  18. data/test/test_data_generated +2582 -0
  19. data/test/test_pygments.rb +287 -0
  20. data/vendor/custom_lexers/github.py +565 -0
  21. data/vendor/pygments-main/AUTHORS +153 -0
  22. data/vendor/pygments-main/CHANGES +889 -0
  23. data/vendor/pygments-main/LICENSE +25 -0
  24. data/vendor/pygments-main/MANIFEST.in +6 -0
  25. data/vendor/pygments-main/Makefile +59 -0
  26. data/vendor/pygments-main/REVISION +1 -0
  27. data/vendor/pygments-main/TODO +15 -0
  28. data/vendor/pygments-main/docs/generate.py +472 -0
  29. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  30. data/vendor/pygments-main/docs/src/api.txt +270 -0
  31. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  32. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  33. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  34. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  35. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  36. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  37. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  38. data/vendor/pygments-main/docs/src/index.txt +69 -0
  39. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  40. data/vendor/pygments-main/docs/src/integrate.txt +48 -0
  41. data/vendor/pygments-main/docs/src/java.txt +70 -0
  42. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +603 -0
  43. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  44. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  45. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  46. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  47. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  48. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  49. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  50. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  51. data/vendor/pygments-main/external/autopygmentize +64 -0
  52. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
  53. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  54. data/vendor/pygments-main/external/moin-parser.py +112 -0
  55. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  56. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  57. data/vendor/pygments-main/external/rst-directive.py +83 -0
  58. data/vendor/pygments-main/ez_setup.py +276 -0
  59. data/vendor/pygments-main/pygmentize +7 -0
  60. data/vendor/pygments-main/pygments/__init__.py +91 -0
  61. data/vendor/pygments-main/pygments/cmdline.py +441 -0
  62. data/vendor/pygments-main/pygments/console.py +74 -0
  63. data/vendor/pygments-main/pygments/filter.py +74 -0
  64. data/vendor/pygments-main/pygments/filters/__init__.py +356 -0
  65. data/vendor/pygments-main/pygments/formatter.py +95 -0
  66. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  67. data/vendor/pygments-main/pygments/formatters/_mapping.py +92 -0
  68. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  69. data/vendor/pygments-main/pygments/formatters/html.py +821 -0
  70. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  71. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  72. data/vendor/pygments-main/pygments/formatters/other.py +115 -0
  73. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  74. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  75. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  76. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  77. data/vendor/pygments-main/pygments/lexer.py +765 -0
  78. data/vendor/pygments-main/pygments/lexers/__init__.py +240 -0
  79. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  80. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  81. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
  82. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  83. data/vendor/pygments-main/pygments/lexers/_mapping.py +355 -0
  84. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
  85. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  86. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +233 -0
  87. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
  88. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +40 -0
  89. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
  90. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
  91. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -0
  92. data/vendor/pygments-main/pygments/lexers/agile.py +2290 -0
  93. data/vendor/pygments-main/pygments/lexers/asm.py +398 -0
  94. data/vendor/pygments-main/pygments/lexers/compiled.py +3723 -0
  95. data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
  96. data/vendor/pygments-main/pygments/lexers/dotnet.py +671 -0
  97. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  98. data/vendor/pygments-main/pygments/lexers/functional.py +2731 -0
  99. data/vendor/pygments-main/pygments/lexers/github.py +565 -0
  100. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  101. data/vendor/pygments-main/pygments/lexers/jvm.py +1112 -0
  102. data/vendor/pygments-main/pygments/lexers/math.py +1918 -0
  103. data/vendor/pygments-main/pygments/lexers/other.py +3778 -0
  104. data/vendor/pygments-main/pygments/lexers/parsers.py +778 -0
  105. data/vendor/pygments-main/pygments/lexers/shell.py +424 -0
  106. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  107. data/vendor/pygments-main/pygments/lexers/sql.py +609 -0
  108. data/vendor/pygments-main/pygments/lexers/templates.py +1742 -0
  109. data/vendor/pygments-main/pygments/lexers/text.py +1893 -0
  110. data/vendor/pygments-main/pygments/lexers/web.py +4045 -0
  111. data/vendor/pygments-main/pygments/modeline.py +40 -0
  112. data/vendor/pygments-main/pygments/plugin.py +74 -0
  113. data/vendor/pygments-main/pygments/scanner.py +104 -0
  114. data/vendor/pygments-main/pygments/style.py +117 -0
  115. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  116. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  117. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  118. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  119. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  120. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  121. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  122. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  123. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  124. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  125. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  126. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  127. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  128. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  129. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  130. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  131. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  132. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  133. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  134. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  135. data/vendor/pygments-main/pygments/token.py +195 -0
  136. data/vendor/pygments-main/pygments/unistring.py +140 -0
  137. data/vendor/pygments-main/pygments/util.py +277 -0
  138. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  139. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +32 -0
  140. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  141. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  142. data/vendor/pygments-main/scripts/find_error.py +170 -0
  143. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  144. data/vendor/pygments-main/scripts/pylintrc +301 -0
  145. data/vendor/pygments-main/scripts/reindent.py +291 -0
  146. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  147. data/vendor/pygments-main/setup.cfg +7 -0
  148. data/vendor/pygments-main/setup.py +90 -0
  149. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  150. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  151. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  152. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  153. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  154. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  155. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  156. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  157. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  158. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  159. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  160. data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
  161. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  162. data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
  163. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  164. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  165. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
  166. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  167. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  168. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
  169. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
  170. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
  171. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  172. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  173. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  174. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  175. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
  176. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  177. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  178. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  179. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  180. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  181. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  182. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  183. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  184. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  185. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  186. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
  187. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  188. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  189. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
  190. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  191. data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
  192. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
  193. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  194. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  195. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  196. data/vendor/pygments-main/tests/examplefiles/classes.dylan +125 -0
  197. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  198. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  199. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  200. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  201. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  202. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  203. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  204. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  205. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  206. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  207. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  208. data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
  209. data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
  210. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  211. data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
  212. data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
  213. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  214. data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
  215. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  216. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  217. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  218. data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
  219. data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
  220. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  221. data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
  222. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  223. data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
  224. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  225. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  226. data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
  227. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  228. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  229. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  230. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  231. data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
  232. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  233. data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
  234. data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
  235. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  236. data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
  237. data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
  238. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  239. data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
  240. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  241. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  242. data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
  243. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  244. data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
  245. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  246. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  247. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  248. data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
  249. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  250. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  251. data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
  252. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  253. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  254. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  255. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  256. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  257. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  258. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  259. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  260. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  261. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
  262. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  263. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  264. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  265. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  266. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  267. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
  268. data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
  269. data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
  270. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  271. data/vendor/pygments-main/tests/examplefiles/http_request_example +15 -0
  272. data/vendor/pygments-main/tests/examplefiles/http_response_example +29 -0
  273. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  274. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
  275. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  276. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  277. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  278. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  279. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  280. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  281. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  282. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  283. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  284. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  285. data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
  286. data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
  287. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  288. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  289. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
  290. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
  291. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  292. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  293. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  294. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  295. data/vendor/pygments-main/tests/examplefiles/matlab_sample +30 -0
  296. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  297. data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
  298. data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
  299. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
  300. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  301. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  302. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  303. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
  304. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  305. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  306. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  307. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  308. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  309. data/vendor/pygments-main/tests/examplefiles/objc_example.m +32 -0
  310. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  311. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  312. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  313. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  314. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  315. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
  316. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  317. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  318. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  319. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  320. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  321. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  322. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
  323. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  324. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  325. data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
  326. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  327. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  328. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  329. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  330. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  331. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  332. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  333. data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
  334. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  335. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
  336. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  337. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
  338. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  339. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  340. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  341. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  342. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  343. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  344. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  345. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  346. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  347. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  348. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  349. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
  350. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
  351. data/vendor/pygments-main/tests/examplefiles/test.R +153 -0
  352. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  353. data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
  354. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  355. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  356. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  357. data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
  358. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  359. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  360. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  361. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  362. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  363. data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
  364. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  365. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  366. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  367. data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
  368. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  369. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  370. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  371. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  372. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  373. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  374. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  375. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  376. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  377. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  378. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  379. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  380. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  381. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  382. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  383. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  384. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  385. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  386. data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
  387. data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
  388. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  389. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  390. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  391. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  392. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  393. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  394. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  395. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  396. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  397. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  398. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  399. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  400. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  401. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  402. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  403. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
  404. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  405. data/vendor/pygments-main/tests/examplefiles/type.lisp +1218 -0
  406. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  407. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  408. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  409. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
  410. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  411. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  412. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  413. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  414. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  415. data/vendor/pygments-main/tests/old_run.py +138 -0
  416. data/vendor/pygments-main/tests/run.py +49 -0
  417. data/vendor/pygments-main/tests/support/tags +36 -0
  418. data/vendor/pygments-main/tests/support.py +15 -0
  419. data/vendor/pygments-main/tests/test_basic_api.py +295 -0
  420. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  421. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  422. data/vendor/pygments-main/tests/test_examplefiles.py +99 -0
  423. data/vendor/pygments-main/tests/test_html_formatter.py +178 -0
  424. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  425. data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
  426. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  427. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  428. data/vendor/pygments-main/tests/test_token.py +46 -0
  429. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  430. data/vendor/pygments-main/tests/test_util.py +135 -0
  431. data/vendor/simplejson/.gitignore +10 -0
  432. data/vendor/simplejson/.travis.yml +5 -0
  433. data/vendor/simplejson/CHANGES.txt +291 -0
  434. data/vendor/simplejson/LICENSE.txt +19 -0
  435. data/vendor/simplejson/MANIFEST.in +5 -0
  436. data/vendor/simplejson/README.rst +19 -0
  437. data/vendor/simplejson/conf.py +179 -0
  438. data/vendor/simplejson/index.rst +628 -0
  439. data/vendor/simplejson/scripts/make_docs.py +18 -0
  440. data/vendor/simplejson/setup.py +104 -0
  441. data/vendor/simplejson/simplejson/__init__.py +510 -0
  442. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  443. data/vendor/simplejson/simplejson/decoder.py +425 -0
  444. data/vendor/simplejson/simplejson/encoder.py +567 -0
  445. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  446. data/vendor/simplejson/simplejson/scanner.py +77 -0
  447. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  448. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  449. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  450. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  451. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  452. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  453. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  454. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  455. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  456. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  457. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  458. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  459. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  460. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  461. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  462. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  463. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  464. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  465. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  466. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  467. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  468. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  469. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  470. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  471. data/vendor/simplejson/simplejson/tool.py +39 -0
  472. metadata +566 -0
@@ -0,0 +1,427 @@
1
+ #!/usr/bin/env newlisp
2
+ ;; @module reversi.lsp
3
+ ;; @description a simple version of Reversi: you as white against newLISP as black
4
+ ;; @version 0.1 alpha August 2007
5
+ ;; @author cormullion
6
+ ;;
7
+ ;; 2008-10-08 21:46:54
8
+ ;; updated for newLISP version 10. (changed nth-set to setf)
9
+ ;; this now does not work with newLISP version 9!
10
+ ;;
11
+ ;; This is my first attempt at writing a simple application using newLISP-GS.
12
+ ;; The game algorithms are basically by
13
+ ;; Peter Norvig http://norvig.com/paip/othello.lisp
14
+ ;; and all I've done is translate to newLISP and add the interface...
15
+ ;;
16
+ ;; To-Do: work out how to handle the end of the game properly...
17
+ ;; To-Do: complete newlispdoc for the functions
18
+
19
+ (constant 'empty 0)
20
+ (constant 'black 1)
21
+ (constant 'white 2)
22
+ (constant 'outer 3) ; squares outside the 8x8 board
23
+
24
+ (set '*board* '()) ; the master board is a 100 element list
25
+ (set '*moves* '()) ; list of moves made
26
+
27
+ ; these are the 8 different directions from a square on the board
28
+
29
+ (set 'all-directions '(-11 -10 -9 -1 1 9 10 11))
30
+
31
+ ; return a list of all the playable squares (the 8 by 8 grid inside the 10by10
32
+
33
+ (define (all-squares)
34
+ (local (result)
35
+ (for (square 11 88)
36
+ (if (<= 1 (mod square 10) 8)
37
+ (push square result -1)))
38
+ result))
39
+
40
+ ; make a board
41
+
42
+ (define (make-board)
43
+ (set '*board* (dup outer 100))
44
+ (dolist (s (all-squares))
45
+ (setf (*board* s) empty)))
46
+
47
+ ; for testing and working at a terminal
48
+
49
+ (define (print-board)
50
+ (print { })
51
+ (for (c 1 8)
52
+ (print c))
53
+ (set 'c 0)
54
+ (for (i 0 99)
55
+ (cond
56
+ ((= (*board* i) 0) (print {.}))
57
+ ((= (*board* i) 1) (print {b}))
58
+ ((= (*board* i) 2) (print {w})))
59
+ (if (and (<= i 88) (= (mod (+ i 1) 10) 0)) ; newline
60
+ (print "\n" (inc c))))
61
+ (println "\n"))
62
+
63
+ ; the initial starting pattern
64
+
65
+ (define (initial-board)
66
+ (make-board)
67
+ (setf (*board* 44) white)
68
+ (setf (*board* 55) white)
69
+ (setf (*board* 45) black)
70
+ (setf (*board* 54) black))
71
+
72
+ (define (opponent player)
73
+ (if (= player black) white black))
74
+
75
+ (define (player-name player)
76
+ (if (= player white) "white" "black"))
77
+
78
+ (define (valid-move? move)
79
+ (and
80
+ (integer? move)
81
+ (<= 11 move 88)
82
+ (<= 1 (mod move 10) 8)))
83
+
84
+ (define (empty-square? square)
85
+ (and
86
+ (valid-move? square)
87
+ (= (*board* square) empty)))
88
+
89
+ ; test whether a move is legal. The square must be empty
90
+ ; and it must flip at least one of the opponent's piece
91
+
92
+ (define (legal-move? move player)
93
+ (and
94
+ (empty-square? move)
95
+ (exists (fn (dir) (would-flip? move player dir)) all-directions)))
96
+
97
+ ; would this move by player result in any flips in the given direction?
98
+ ; if so, return the number of the 'opposite' (bracketing) piece's square
99
+
100
+ (define (would-flip? move player dir)
101
+ (let
102
+ ((c (+ move dir)))
103
+ (and
104
+ (= (*board* c) (opponent player))
105
+ (find-bracketing-piece (+ c dir) player dir))))
106
+
107
+ (define (find-bracketing-piece square player dir)
108
+ ; return the square of the bracketing piece, if any
109
+ (cond
110
+ ((= (*board* square) player) square)
111
+ ((= (*board* square) (opponent player))
112
+ (find-bracketing-piece (+ square dir) player dir))
113
+ (true nil)))
114
+
115
+ (define (make-flips move player dir)
116
+ (let
117
+ ((bracketer (would-flip? move player dir))
118
+ (c (+ move dir)))
119
+ (if bracketer
120
+ (do-until (= c bracketer)
121
+ (setf (*board* c) player)
122
+ (push c *flips* -1)
123
+ (inc c dir)))))
124
+
125
+ ; make the move on the master game board, not yet visually
126
+
127
+ (define (make-move move player)
128
+ (setf (*board* move) player)
129
+ (push move *moves* -1)
130
+ (set '*flips* '()) ; we're going to keep a record of the flips made
131
+ (dolist (dir all-directions)
132
+ (make-flips move player dir)))
133
+
134
+ (define (next-to-play previous-player)
135
+ (let ((opp (opponent previous-player)))
136
+ (cond
137
+ ((any-legal-move? opp) opp)
138
+ ((any-legal-move? previous-player)
139
+ (println (player-name opp) " has no moves")
140
+ previous-player)
141
+ (true nil))))
142
+
143
+ ; are there any legal moves (returns first) for this player?
144
+ (define (any-legal-move? player)
145
+ (exists (fn (move) (legal-move? move player))
146
+ (all-squares)))
147
+
148
+ ; a list of all legal moves might be useful
149
+ (define (legal-moves player)
150
+ (let ((result '()))
151
+ (dolist (move (all-squares))
152
+ (if (legal-move? move player)
153
+ (push move result)))
154
+ (unique result)))
155
+
156
+ ; define any number of strategies that can be called on to calculate
157
+ ; the next computer move. This is the only one I've done... - make
158
+ ; any legal move at random!
159
+
160
+ (define (random-strategy player)
161
+ (seed (date-value))
162
+ (apply amb (legal-moves player)))
163
+
164
+ ; get the next move using a particular strategy
165
+
166
+ (define (get-move strategy player)
167
+ (let ((move (apply strategy (list player))))
168
+ (cond
169
+ ((and
170
+ (valid-move? move)
171
+ (legal-move? move player))
172
+ (make-move move player))
173
+ (true
174
+ (println "no valid or legal move for " (player-name player) )
175
+ nil))
176
+ move))
177
+
178
+ ; that's about all the game algorithms for now
179
+ ; now for the interface
180
+
181
+ (if (= ostype "Win32")
182
+ (load (string (env "PROGRAMFILES") "/newlisp/guiserver.lsp"))
183
+ (load "/usr/share/newlisp/guiserver.lsp")
184
+ )
185
+
186
+ (gs:init)
187
+ (map set '(screen-width screen-height) (gs:get-screen))
188
+ (set 'board-width 540)
189
+ ; center on screen
190
+ (gs:frame 'Reversi (- (/ screen-width 2) (/ board-width 2)) 60 board-width 660 "Reversi")
191
+ (gs:set-border-layout 'Reversi)
192
+
193
+ (gs:canvas 'MyCanvas 'Reversi)
194
+ (gs:set-background 'MyCanvas '(.8 .9 .7 .8))
195
+ (gs:mouse-released 'MyCanvas 'mouse-released-action true)
196
+
197
+ (gs:panel 'Controls)
198
+ (gs:button 'Start 'start-game "Start")
199
+
200
+ (gs:panel 'Lower)
201
+ (gs:label 'WhiteScore "")
202
+ (gs:label 'BlackScore "")
203
+
204
+ (gs:add-to 'Controls 'Start )
205
+ (gs:add-to 'Lower 'WhiteScore 'BlackScore)
206
+ (gs:add-to 'Reversi 'MyCanvas "center" 'Controls "north" 'Lower "south")
207
+
208
+ (gs:set-anti-aliasing true)
209
+ (gs:set-visible 'Reversi true)
210
+
211
+ ; size of board square, and radius/width of counter
212
+ (set 'size 60 'width 30)
213
+
214
+ ; initialize the master board
215
+
216
+ (define (initial-board)
217
+ (make-board)
218
+ (setf (*board* 44) white)
219
+ (setf (*board* 55) white)
220
+ (setf (*board* 45) black)
221
+ (setf (*board* 54) black)
222
+ )
223
+
224
+ ; draw a graphical repesentation of the board
225
+
226
+ (define (draw-board)
227
+ (local (x y)
228
+ (dolist (i (all-squares))
229
+ (map set '(x y) (square-to-xy i))
230
+ (gs:draw-rect
231
+ (string x y)
232
+ (- (* y size) width ) ; !!!!!!
233
+ (- (* x size) width )
234
+ (* width 2)
235
+ (* width 2)
236
+ gs:white))))
237
+
238
+ (define (draw-first-four-pieces)
239
+ (draw-piece 44 "white")
240
+ (draw-piece 55 "white")
241
+ (draw-piece 45 "black")
242
+ (draw-piece 54 "black"))
243
+
244
+ ; this next function can mark the legal moves available to a player
245
+
246
+ (define (show-legal-moves player)
247
+ (local (legal-move-list x y)
248
+ (set 'legal-move-list (legal-moves player))
249
+ (dolist (m (all-squares))
250
+ (map set '(x y) (square-to-xy m))
251
+ (gs:draw-rect
252
+ (string x y)
253
+ (- (* y size) width ) ; !!!!!!
254
+ (- (* x size) width )
255
+ (* width 2)
256
+ (* width 2)
257
+ (if (find m legal-move-list) gs:blue gs:white)
258
+ )
259
+ )
260
+ )
261
+ )
262
+
263
+ ; convert the number of a square on the master board to coordinates
264
+
265
+ (define (square-to-xy square)
266
+ (list (/ square 10) (mod square 10)))
267
+
268
+ ; draw one of the pieces
269
+
270
+ (define (draw-piece square colour)
271
+ (local (x y)
272
+ (map set '(x y) (square-to-xy square))
273
+ (cond
274
+ ((= colour "white")
275
+ (gs:fill-circle
276
+ (string x y)
277
+ (* y size) ; !!!!!!! y first, cos y is x ;-)
278
+ (* x size)
279
+ width
280
+ gs:white))
281
+
282
+ ((= colour "black")
283
+ (gs:fill-circle
284
+ (string x y)
285
+ (* y size)
286
+ (* x size)
287
+ width
288
+ gs:black))
289
+
290
+ ((= colour "empty")
291
+ (gs:draw-rect
292
+ (string x y)
293
+ (- (* y size) width )
294
+ (- (* x size) width )
295
+ (* width 2)
296
+ (* width 2)
297
+ gs:white))
298
+ )))
299
+
300
+ ; animate the pieces flipping
301
+
302
+ (define (flip-piece square player)
303
+ ; flip by drawing thinner and fatter ellipses
304
+ ; go from full disk in opposite colour to invisible
305
+ ; then from invisible to full disk in true colour
306
+ (local (x y colour)
307
+ (map set '(x y) (square-to-xy square))
308
+ ; delete original piece
309
+ (gs:delete-tag (string x y))
310
+ (set 'colour (if (= player 2) gs:black gs:white ))
311
+ (for (i width 1 -3)
312
+ (gs:fill-ellipse
313
+ (string x y {flip} i)
314
+ (* y size) ; y first :-) !!!
315
+ (* x size)
316
+ i
317
+ width
318
+ colour)
319
+ (sleep 20) ; this might need adjusting...
320
+ (gs:delete-tag (string x y {flip} i))
321
+ )
322
+ (set 'colour (if (= player 2) gs:white gs:black))
323
+ (for (i 1 width 3)
324
+ (gs:fill-ellipse
325
+ (string x y {flip} i)
326
+ (* y size) ; :-) !!!
327
+ (* x size)
328
+ i
329
+ width
330
+ colour)
331
+ (sleep 20)
332
+ (gs:delete-tag (string x y {flip} i))
333
+ )
334
+ ; draw the piece again
335
+ (gs:fill-circle
336
+ (string x y)
337
+ (* y size)
338
+ (* x size)
339
+ width
340
+ colour)
341
+ )
342
+ )
343
+
344
+ (define (do-move move player)
345
+ (cond
346
+ ; check if the move is good ...
347
+ ((and (!= player nil)
348
+ (valid-move? move)
349
+ (legal-move? move player))
350
+
351
+ ; ... play it
352
+ ; make move on board
353
+ (make-move move player)
354
+ ; and on screen
355
+ (draw-piece move (player-name player))
356
+ (gs:update)
357
+ ; do flipping stuff
358
+
359
+ ; wait for a while
360
+ (sleep 1000)
361
+
362
+ ; then do flipping
363
+ (dolist (f *flips*)
364
+ (flip-piece f player))
365
+
366
+ (inc *move-number*)
367
+ (draw-piece move (player-name player))
368
+ (gs:update)
369
+
370
+ ; update scores
371
+ (gs:set-text 'WhiteScore
372
+ (string "White: " (first (count (list white) *board*))))
373
+ (gs:set-text 'BlackScore
374
+ (string "Black: " (first (count (list black) *board*))))
375
+ )
376
+ ; or return nil
377
+ (true
378
+ nil)))
379
+
380
+ ; the game is driven by the mouse clicks of the user
381
+ ; in reply, the computer plays a black piece
382
+ ; premature clicking is possible and possibly a bad thing...
383
+
384
+ (define (mouse-released-action x y button modifiers tags)
385
+ ; extract the tag of the clicked square
386
+ (set 'move (int (string (first tags)) 0 10))
387
+ (if (do-move move player)
388
+ (begin
389
+ (set 'player (next-to-play player))
390
+ ; there is a training mode - legal squares are highlighted
391
+ ; you can uncomment the next line...
392
+ ; (show-legal-moves player)
393
+ (gs:update)
394
+
395
+ ; wait for black's reply
396
+ (gs:set-cursor 'Reversi "wait")
397
+ (gs:set-text 'Start "black's move - thinking...")
398
+ ; give the illusion of Deep Thought...
399
+ (sleep 2000)
400
+ ; black's reply
401
+ ; currently only the random strategy has been defined...
402
+ (set 'strategy random-strategy)
403
+ (set 'move (apply strategy (list player)))
404
+ (do-move move player)
405
+ (set 'player (next-to-play player))
406
+ ; (show-legal-moves player) ; to see black's moves
407
+ (gs:set-text 'Start "your move")
408
+ (gs:set-cursor 'Reversi "default")
409
+ (gs:update))))
410
+
411
+ (define (start-game)
412
+ (gs:set-text 'Start "Click a square to place a piece!")
413
+ (gs:disable 'Start)
414
+ (set 'player white))
415
+
416
+ (define (start)
417
+ (gs:set-text 'Start "Start")
418
+ (gs:enable 'Start)
419
+ (set '*move-number* 1
420
+ '*flips* '())
421
+ (initial-board)
422
+ (draw-board)
423
+ (draw-first-four-pieces))
424
+
425
+ (start)
426
+
427
+ (gs:listen)
@@ -0,0 +1,39 @@
1
+ *** Settings ***
2
+ Documentation Simple example demonstrating syntax highlighting.
3
+ Library ExampleLibrary
4
+ Test Setup Keyword argument argument with ${VARIABLE}
5
+
6
+ *** Variables ***
7
+ ${VARIABLE} Variable value
8
+ @{LIST} List variable here
9
+
10
+ *** Test Cases ***
11
+ Keyword-driven example
12
+ Initialize System
13
+ Do Something
14
+ Result Should Be 42
15
+ [Teardown] Cleanup System
16
+
17
+ Data-driven example
18
+ [Template] Keyword
19
+ argument1 argument2
20
+ argument ${VARIABLE}
21
+ @{LIST}
22
+
23
+ Gherkin
24
+ Given system is initialized
25
+ When something is done
26
+ Then result should be "42"
27
+
28
+ | Pipes |
29
+ | | [Documentation] | Also pipe separated format is supported. |
30
+ | | Log | As this example demonstrates. |
31
+
32
+ *** Keywords ***
33
+ Result Should Be
34
+ [Arguments] ${expected}
35
+ ${actual} = Get Value
36
+ Should be Equal ${actual} ${expected}
37
+
38
+ Then result should be "${expected}"
39
+ Result Should Be ${expected}
@@ -0,0 +1,11 @@
1
+ class (get_foo("blub"))::Foo
2
+ def (foo("bar") + bar("baz")).something argh, aaahaa
3
+ 42
4
+ end
5
+ end
6
+
7
+ class get_the_fuck("out")::Of::My
8
+ def parser_definition
9
+ ruby!
10
+ end
11
+ end
@@ -0,0 +1,233 @@
1
+ // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // based on:
12
+ // http://shootout.alioth.debian.org/u32/benchmark.php?test=nbody&lang=java
13
+
14
+ extern mod std;
15
+
16
+ use core::os;
17
+
18
+ // Using sqrt from the standard library is way slower than using libc
19
+ // directly even though std just calls libc, I guess it must be
20
+ // because the the indirection through another dynamic linker
21
+ // stub. Kind of shocking. Might be able to make it faster still with
22
+ // an llvm intrinsic.
23
+ #[nolink]
24
+ extern mod libc {
25
+ #[legacy_exports];
26
+ fn sqrt(n: float) -> float;
27
+ }
28
+
29
+ fn main() {
30
+ let args = os::args();
31
+ let args = if os::getenv(~"RUST_BENCH").is_some() {
32
+ ~[~"", ~"4000000"]
33
+ } else if args.len() <= 1u {
34
+ ~[~"", ~"100000"]
35
+ } else {
36
+ args
37
+ };
38
+ let n = int::from_str(args[1]).get();
39
+ let mut bodies: ~[Body::props] = NBodySystem::make();
40
+ io::println(fmt!("%f", NBodySystem::energy(bodies)));
41
+ let mut i = 0;
42
+ while i < n {
43
+ NBodySystem::advance(bodies, 0.01);
44
+ i += 1;
45
+ }
46
+ io::println(fmt!("%f", NBodySystem::energy(bodies)));
47
+ }
48
+
49
+ mod NBodySystem {
50
+ use Body;
51
+
52
+ pub fn make() -> ~[Body::props] {
53
+ let mut bodies: ~[Body::props] =
54
+ ~[Body::sun(),
55
+ Body::jupiter(),
56
+ Body::saturn(),
57
+ Body::uranus(),
58
+ Body::neptune()];
59
+
60
+ let mut px = 0.0;
61
+ let mut py = 0.0;
62
+ let mut pz = 0.0;
63
+
64
+ let mut i = 0;
65
+ while i < 5 {
66
+ px += bodies[i].vx * bodies[i].mass;
67
+ py += bodies[i].vy * bodies[i].mass;
68
+ pz += bodies[i].vz * bodies[i].mass;
69
+
70
+ i += 1;
71
+ }
72
+
73
+ // side-effecting
74
+ Body::offset_momentum(&mut bodies[0], px, py, pz);
75
+
76
+ return bodies;
77
+ }
78
+
79
+ pub fn advance(bodies: &mut [Body::props], dt: float) {
80
+ let mut i = 0;
81
+ while i < 5 {
82
+ let mut j = i + 1;
83
+ while j < 5 {
84
+ advance_one(&mut bodies[i],
85
+ &mut bodies[j], dt);
86
+ j += 1;
87
+ }
88
+
89
+ i += 1;
90
+ }
91
+
92
+ i = 0;
93
+ while i < 5 {
94
+ move_(&mut bodies[i], dt);
95
+ i += 1;
96
+ }
97
+ }
98
+
99
+ pub fn advance_one(bi: &mut Body::props,
100
+ bj: &mut Body::props,
101
+ dt: float) unsafe {
102
+ let dx = bi.x - bj.x;
103
+ let dy = bi.y - bj.y;
104
+ let dz = bi.z - bj.z;
105
+
106
+ let dSquared = dx * dx + dy * dy + dz * dz;
107
+
108
+ let distance = ::libc::sqrt(dSquared);
109
+ let mag = dt / (dSquared * distance);
110
+
111
+ bi.vx -= dx * bj.mass * mag;
112
+ bi.vy -= dy * bj.mass * mag;
113
+ bi.vz -= dz * bj.mass * mag;
114
+
115
+ bj.vx += dx * bi.mass * mag;
116
+ bj.vy += dy * bi.mass * mag;
117
+ bj.vz += dz * bi.mass * mag;
118
+ }
119
+
120
+ pub fn move_(b: &mut Body::props, dt: float) {
121
+ b.x += dt * b.vx;
122
+ b.y += dt * b.vy;
123
+ b.z += dt * b.vz;
124
+ }
125
+
126
+ pub fn energy(bodies: &[Body::props]) -> float unsafe {
127
+ let mut dx;
128
+ let mut dy;
129
+ let mut dz;
130
+ let mut distance;
131
+ let mut e = 0.0;
132
+
133
+ let mut i = 0;
134
+ while i < 5 {
135
+ e +=
136
+ 0.5 * bodies[i].mass *
137
+ (bodies[i].vx * bodies[i].vx + bodies[i].vy * bodies[i].vy
138
+ + bodies[i].vz * bodies[i].vz);
139
+
140
+ let mut j = i + 1;
141
+ while j < 5 {
142
+ dx = bodies[i].x - bodies[j].x;
143
+ dy = bodies[i].y - bodies[j].y;
144
+ dz = bodies[i].z - bodies[j].z;
145
+
146
+ distance = ::libc::sqrt(dx * dx + dy * dy + dz * dz);
147
+ e -= bodies[i].mass * bodies[j].mass / distance;
148
+
149
+ j += 1;
150
+ }
151
+
152
+ i += 1;
153
+ }
154
+ return e;
155
+
156
+ }
157
+ }
158
+
159
+ mod Body {
160
+ use Body;
161
+
162
+ pub const PI: float = 3.141592653589793;
163
+ pub const SOLAR_MASS: float = 39.478417604357432;
164
+ // was 4 * PI * PI originally
165
+ pub const DAYS_PER_YEAR: float = 365.24;
166
+
167
+ pub type props =
168
+ {mut x: float,
169
+ mut y: float,
170
+ mut z: float,
171
+ mut vx: float,
172
+ mut vy: float,
173
+ mut vz: float,
174
+ mass: float};
175
+
176
+ pub fn jupiter() -> Body::props {
177
+ return {mut x: 4.84143144246472090e+00,
178
+ mut y: -1.16032004402742839e+00,
179
+ mut z: -1.03622044471123109e-01,
180
+ mut vx: 1.66007664274403694e-03 * DAYS_PER_YEAR,
181
+ mut vy: 7.69901118419740425e-03 * DAYS_PER_YEAR,
182
+ mut vz: -6.90460016972063023e-05 * DAYS_PER_YEAR,
183
+ mass: 9.54791938424326609e-04 * SOLAR_MASS};
184
+ }
185
+
186
+ pub fn saturn() -> Body::props {
187
+ return {mut x: 8.34336671824457987e+00,
188
+ mut y: 4.12479856412430479e+00,
189
+ mut z: -4.03523417114321381e-01,
190
+ mut vx: -2.76742510726862411e-03 * DAYS_PER_YEAR,
191
+ mut vy: 4.99852801234917238e-03 * DAYS_PER_YEAR,
192
+ mut vz: 2.30417297573763929e-05 * DAYS_PER_YEAR,
193
+ mass: 2.85885980666130812e-04 * SOLAR_MASS};
194
+ }
195
+
196
+ pub fn uranus() -> Body::props {
197
+ return {mut x: 1.28943695621391310e+01,
198
+ mut y: -1.51111514016986312e+01,
199
+ mut z: -2.23307578892655734e-01,
200
+ mut vx: 2.96460137564761618e-03 * DAYS_PER_YEAR,
201
+ mut vy: 2.37847173959480950e-03 * DAYS_PER_YEAR,
202
+ mut vz: -2.96589568540237556e-05 * DAYS_PER_YEAR,
203
+ mass: 4.36624404335156298e-05 * SOLAR_MASS};
204
+ }
205
+
206
+ pub fn neptune() -> Body::props {
207
+ return {mut x: 1.53796971148509165e+01,
208
+ mut y: -2.59193146099879641e+01,
209
+ mut z: 1.79258772950371181e-01,
210
+ mut vx: 2.68067772490389322e-03 * DAYS_PER_YEAR,
211
+ mut vy: 1.62824170038242295e-03 * DAYS_PER_YEAR,
212
+ mut vz: -9.51592254519715870e-05 * DAYS_PER_YEAR,
213
+ mass: 5.15138902046611451e-05 * SOLAR_MASS};
214
+ }
215
+
216
+ pub fn sun() -> Body::props {
217
+ return {mut x: 0.0,
218
+ mut y: 0.0,
219
+ mut z: 0.0,
220
+ mut vx: 0.0,
221
+ mut vy: 0.0,
222
+ mut vz: 0.0,
223
+ mass: SOLAR_MASS};
224
+ }
225
+
226
+ pub fn offset_momentum(props: &mut Body::props,
227
+ px: float, py: float, pz: float) {
228
+ props.vx = -px / SOLAR_MASS;
229
+ props.vy = -py / SOLAR_MASS;
230
+ props.vz = -pz / SOLAR_MASS;
231
+ }
232
+
233
+ }