mdbe 0.1.0

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 (688) hide show
  1. checksums.yaml +15 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +53 -0
  4. data/app.rb +182 -0
  5. data/bin/mdbe +5 -0
  6. data/config.ru +2 -0
  7. data/environment.rb +8 -0
  8. data/lib/mdbe.rb +39 -0
  9. data/lib/mdbe/action_controller_debug_patch.rb +12 -0
  10. data/lib/mdbe/code_evaluation.rb +46 -0
  11. data/lib/mdbe/database_views.rb +24 -0
  12. data/lib/mdbe/database_views/abstract_dictionary.rb +69 -0
  13. data/lib/mdbe/database_views/abstract_exception.rb +25 -0
  14. data/lib/mdbe/database_views/array.rb +28 -0
  15. data/lib/mdbe/database_views/boolean.rb +12 -0
  16. data/lib/mdbe/database_views/class.rb +46 -0
  17. data/lib/mdbe/database_views/exception.rb +3 -0
  18. data/lib/mdbe/database_views/execblock.rb +5 -0
  19. data/lib/mdbe/database_views/fixnum.rb +5 -0
  20. data/lib/mdbe/database_views/float.rb +5 -0
  21. data/lib/mdbe/database_views/globals.rb +2 -0
  22. data/lib/mdbe/database_views/gsnmethod.rb +29 -0
  23. data/lib/mdbe/database_views/hash.rb +5 -0
  24. data/lib/mdbe/database_views/maglev_record.rb +42 -0
  25. data/lib/mdbe/database_views/module.rb +103 -0
  26. data/lib/mdbe/database_views/nilclass.rb +5 -0
  27. data/lib/mdbe/database_views/object.rb +80 -0
  28. data/lib/mdbe/database_views/proc.rb +3 -0
  29. data/lib/mdbe/database_views/repository.rb +3 -0
  30. data/lib/mdbe/database_views/ruby_workspace.rb +5 -0
  31. data/lib/mdbe/database_views/smalltalk_classes.rb +34 -0
  32. data/lib/mdbe/database_views/smalltalk_classes.st +60 -0
  33. data/lib/mdbe/database_views/string.rb +31 -0
  34. data/lib/mdbe/database_views/symbol.rb +32 -0
  35. data/lib/mdbe/database_views/system.rb +61 -0
  36. data/lib/mdbe/database_views/thread.rb +101 -0
  37. data/lib/mdbe/debug_server.rb +22 -0
  38. data/lib/mdbe/halt.rb +42 -0
  39. data/lib/mdbe/ruby_workspace.rb +29 -0
  40. data/lib/mdbe/version.rb +3 -0
  41. data/lib/tasks/maglev-database-explorer_tasks.rake +4 -0
  42. data/public/LICENSE +35 -0
  43. data/public/amber/CHANGELOG +65 -0
  44. data/public/amber/LICENSE +22 -0
  45. data/public/amber/Makefile +53 -0
  46. data/public/amber/README.md +30 -0
  47. data/public/amber/bin/amber +3 -0
  48. data/public/amber/bin/amberc +352 -0
  49. data/public/amber/bin/nodecompile.js +33 -0
  50. data/public/amber/bin/server +3 -0
  51. data/public/amber/bin/server.bat +3 -0
  52. data/public/amber/css/amber-normalize.css +468 -0
  53. data/public/amber/css/amber-normalize.less +501 -0
  54. data/public/amber/css/amber.css +539 -0
  55. data/public/amber/css/documentation.css +84 -0
  56. data/public/amber/css/profstef.css +75 -0
  57. data/public/amber/css/style.css +313 -0
  58. data/public/amber/documentation.html +37 -0
  59. data/public/amber/examples/Makefile +23 -0
  60. data/public/amber/examples/README +4 -0
  61. data/public/amber/examples/android/helloamber/AndroidManifest.xml +19 -0
  62. data/public/amber/examples/android/helloamber/HelloAmber.st +13 -0
  63. data/public/amber/examples/android/helloamber/Makefile +56 -0
  64. data/public/amber/examples/android/helloamber/README.md +80 -0
  65. data/public/amber/examples/android/helloamber/ant.properties +17 -0
  66. data/public/amber/examples/android/helloamber/assets/index.html +15 -0
  67. data/public/amber/examples/android/helloamber/assets/jquery-1.7.2.min.js +4 -0
  68. data/public/amber/examples/android/helloamber/build.xml +83 -0
  69. data/public/amber/examples/android/helloamber/local.properties +10 -0
  70. data/public/amber/examples/android/helloamber/proguard-project.txt +20 -0
  71. data/public/amber/examples/android/helloamber/project.properties +14 -0
  72. data/public/amber/examples/android/helloamber/res/layout/main.xml +6 -0
  73. data/public/amber/examples/android/helloamber/res/values/strings.xml +4 -0
  74. data/public/amber/examples/android/helloamber/src/org/amberlang/android/helloamber/HelloAmber.java +59 -0
  75. data/public/amber/examples/myproject/index.html +16 -0
  76. data/public/amber/examples/nodejs/README +9 -0
  77. data/public/amber/examples/nodejs/benchfib/Benchfib.st +124 -0
  78. data/public/amber/examples/nodejs/benchfib/Makefile +8 -0
  79. data/public/amber/examples/nodejs/benchfib/benchfib +1 -0
  80. data/public/amber/examples/nodejs/hello/Hello.st +9 -0
  81. data/public/amber/examples/nodejs/hello/Makefile +8 -0
  82. data/public/amber/examples/nodejs/hello/README +13 -0
  83. data/public/amber/examples/nodejs/hello/hello +1 -0
  84. data/public/amber/examples/nodejs/meta/Makefile +8 -0
  85. data/public/amber/examples/nodejs/meta/MyScript.st +27 -0
  86. data/public/amber/examples/nodejs/meta/meta +1 -0
  87. data/public/amber/examples/nodejs/pystone/Makefile +8 -0
  88. data/public/amber/examples/nodejs/pystone/Pystone.st +306 -0
  89. data/public/amber/examples/nodejs/pystone/pystone +1 -0
  90. data/public/amber/examples/nodejs/trivialserver/Makefile +8 -0
  91. data/public/amber/examples/nodejs/trivialserver/TrivialServer.st +51 -0
  92. data/public/amber/examples/nodejs/trivialserver/trivial +1 -0
  93. data/public/amber/examples/presentation/esug2011/images/asterix.png +0 -0
  94. data/public/amber/examples/presentation/esug2011/images/background_box.png +0 -0
  95. data/public/amber/examples/presentation/esug2011/images/background_header.png +0 -0
  96. data/public/amber/examples/presentation/esug2011/images/balloon.jpg +0 -0
  97. data/public/amber/examples/presentation/esug2011/images/balloon_header.png +0 -0
  98. data/public/amber/examples/presentation/esug2011/images/devices.jpg +0 -0
  99. data/public/amber/examples/presentation/esug2011/images/enyo.png +0 -0
  100. data/public/amber/examples/presentation/esug2011/images/ide_star_wars.png +0 -0
  101. data/public/amber/examples/presentation/esug2011/images/nodejs.png +0 -0
  102. data/public/amber/examples/presentation/esug2011/images/terminal.png +0 -0
  103. data/public/amber/examples/presentation/esug2011/images/webos.png +0 -0
  104. data/public/amber/examples/presentation/fosdem2012/images/amber.png +0 -0
  105. data/public/amber/examples/presentation/fosdem2012/images/ambrhino.jpg +0 -0
  106. data/public/amber/examples/presentation/fosdem2012/images/nodejs.png +0 -0
  107. data/public/amber/examples/presentation/fosdem2012/images/pharo.png +0 -0
  108. data/public/amber/examples/presentation/fosdem2012/images/php.gif +0 -0
  109. data/public/amber/examples/presentation/fosdem2012/images/rails.png +0 -0
  110. data/public/amber/examples/presentation/fosdem2012/lib/booklet/images/arrow-next.png +0 -0
  111. data/public/amber/examples/presentation/fosdem2012/lib/booklet/images/arrow-prev.png +0 -0
  112. data/public/amber/examples/presentation/fosdem2012/lib/booklet/images/closedhand.cur +0 -0
  113. data/public/amber/examples/presentation/fosdem2012/lib/booklet/images/openhand.cur +0 -0
  114. data/public/amber/examples/presentation/fosdem2012/lib/booklet/images/shadow-top-back.png +0 -0
  115. data/public/amber/examples/presentation/fosdem2012/lib/booklet/images/shadow-top-forward.png +0 -0
  116. data/public/amber/examples/presentation/fosdem2012/lib/booklet/images/shadow.png +0 -0
  117. data/public/amber/examples/presentation/fosdem2012/lib/booklet/jquery.booklet.1.2.0.css +100 -0
  118. data/public/amber/examples/presentation/fosdem2012/lib/booklet/jquery.booklet.1.2.0.js +1232 -0
  119. data/public/amber/examples/presentation/fosdem2012/lib/booklet/jquery.booklet.1.2.0.min.js +13 -0
  120. data/public/amber/examples/presentation/fosdem2012/lib/booklet/jquery.easing.1.3.js +38 -0
  121. data/public/amber/examples/presentation/index.html +17 -0
  122. data/public/amber/examples/presentation/js/Presentation.deploy.js +1922 -0
  123. data/public/amber/examples/presentation/js/Presentation.js +2712 -0
  124. data/public/amber/examples/presentation/st/Presentation.st +1996 -0
  125. data/public/amber/examples/trysmalltalk/index.html +18 -0
  126. data/public/amber/examples/trysmalltalk/js/TrySmalltalk.deploy.js +837 -0
  127. data/public/amber/examples/trysmalltalk/js/TrySmalltalk.js +1206 -0
  128. data/public/amber/examples/trysmalltalk/st/TrySmalltalk.st +964 -0
  129. data/public/amber/examples/twitterwall/css/twitterwall.css +19 -0
  130. data/public/amber/examples/twitterwall/index.html +35 -0
  131. data/public/amber/examples/twitterwall/js/TwitterWall.deploy.js +116 -0
  132. data/public/amber/examples/twitterwall/js/TwitterWall.js +146 -0
  133. data/public/amber/examples/twitterwall/st/TwitterWall.st +91 -0
  134. data/public/amber/examples/webos/README +11 -0
  135. data/public/amber/examples/webos/eris/DuckQwaq.wav +0 -0
  136. data/public/amber/examples/webos/eris/EnyoAmber.st +36 -0
  137. data/public/amber/examples/webos/eris/Eris.css +0 -0
  138. data/public/amber/examples/webos/eris/Eris.st +86 -0
  139. data/public/amber/examples/webos/eris/Makefile +37 -0
  140. data/public/amber/examples/webos/eris/README +3 -0
  141. data/public/amber/examples/webos/eris/appinfo.json +10 -0
  142. data/public/amber/examples/webos/eris/index.html +12 -0
  143. data/public/amber/examples/webos/helloamber/EnyoAmber.st +36 -0
  144. data/public/amber/examples/webos/helloamber/HelloAmber.st +86 -0
  145. data/public/amber/examples/webos/helloamber/Makefile +38 -0
  146. data/public/amber/examples/webos/helloamber/README +5 -0
  147. data/public/amber/examples/webos/helloamber/appinfo.json +10 -0
  148. data/public/amber/examples/webos/helloamber/index.html +12 -0
  149. data/public/amber/favicon.ico +0 -0
  150. data/public/amber/images/amber.png +0 -0
  151. data/public/amber/images/amber.svg +706 -0
  152. data/public/amber/images/amber_small.png +0 -0
  153. data/public/amber/images/off.amber.png +0 -0
  154. data/public/amber/images/off.png +0 -0
  155. data/public/amber/images/offHover.amber.png +0 -0
  156. data/public/amber/images/offHover.png +0 -0
  157. data/public/amber/images/presentation.png +0 -0
  158. data/public/amber/images/profstef.png +0 -0
  159. data/public/amber/images/sprite.amber.png +0 -0
  160. data/public/amber/images/sprite.png +0 -0
  161. data/public/amber/images/tinylogo.amber.png +0 -0
  162. data/public/amber/images/tinylogo.png +0 -0
  163. data/public/amber/images/twitterwall.png +0 -0
  164. data/public/amber/index.html +55 -0
  165. data/public/amber/js/Additional-Examples.deploy.js +15 -0
  166. data/public/amber/js/Additional-Examples.js +21 -0
  167. data/public/amber/js/Benchfib.deploy.js +132 -0
  168. data/public/amber/js/Benchfib.js +167 -0
  169. data/public/amber/js/Canvas.deploy.js +2446 -0
  170. data/public/amber/js/Canvas.js +3547 -0
  171. data/public/amber/js/Compiler-Tests.deploy.js +97 -0
  172. data/public/amber/js/Compiler-Tests.js +137 -0
  173. data/public/amber/js/Compiler.deploy.js +1877 -0
  174. data/public/amber/js/Compiler.js +2622 -0
  175. data/public/amber/js/Documentation.deploy.js +961 -0
  176. data/public/amber/js/Documentation.js +1376 -0
  177. data/public/amber/js/Examples.deploy.js +53 -0
  178. data/public/amber/js/Examples.js +73 -0
  179. data/public/amber/js/IDE.deploy.js +3557 -0
  180. data/public/amber/js/IDE.js +5002 -0
  181. data/public/amber/js/Kernel-Announcements.deploy.js +107 -0
  182. data/public/amber/js/Kernel-Announcements.js +152 -0
  183. data/public/amber/js/Kernel-Classes.deploy.js +774 -0
  184. data/public/amber/js/Kernel-Classes.js +1095 -0
  185. data/public/amber/js/Kernel-Collections.deploy.js +3121 -0
  186. data/public/amber/js/Kernel-Collections.js +4427 -0
  187. data/public/amber/js/Kernel-Exceptions.deploy.js +244 -0
  188. data/public/amber/js/Kernel-Exceptions.js +349 -0
  189. data/public/amber/js/Kernel-Methods.deploy.js +573 -0
  190. data/public/amber/js/Kernel-Methods.js +807 -0
  191. data/public/amber/js/Kernel-Objects.deploy.js +2877 -0
  192. data/public/amber/js/Kernel-Objects.js +4107 -0
  193. data/public/amber/js/Kernel-Tests.deploy.js +1513 -0
  194. data/public/amber/js/Kernel-Tests.js +2053 -0
  195. data/public/amber/js/Kernel-Transcript.deploy.js +142 -0
  196. data/public/amber/js/Kernel-Transcript.js +202 -0
  197. data/public/amber/js/Maglev-Core.deploy.js +2996 -0
  198. data/public/amber/js/Maglev-Core.js +4246 -0
  199. data/public/amber/js/Maglev-Database-Explorer.deploy.js +4476 -0
  200. data/public/amber/js/Maglev-Database-Explorer.js +6232 -0
  201. data/public/amber/js/Maglev-Vendor.deploy.js +350 -0
  202. data/public/amber/js/Maglev-Vendor.js +465 -0
  203. data/public/amber/js/README.md +5 -0
  204. data/public/amber/js/SUnit.deploy.js +351 -0
  205. data/public/amber/js/SUnit.js +501 -0
  206. data/public/amber/js/amber.js +273 -0
  207. data/public/amber/js/boot.js +602 -0
  208. data/public/amber/js/compat.js +22 -0
  209. data/public/amber/js/init.js +9 -0
  210. data/public/amber/js/lib/CodeMirror/LICENSE +19 -0
  211. data/public/amber/js/lib/CodeMirror/active-line.js +39 -0
  212. data/public/amber/js/lib/CodeMirror/amber.css +21 -0
  213. data/public/amber/js/lib/CodeMirror/codemirror.css +67 -0
  214. data/public/amber/js/lib/CodeMirror/codemirror.js +2144 -0
  215. data/public/amber/js/lib/CodeMirror/smalltalk.js +134 -0
  216. data/public/amber/js/lib/jQuery/jquery-1.4.4.min.js +167 -0
  217. data/public/amber/js/lib/jQuery/jquery-1.6.4.min.js +4 -0
  218. data/public/amber/js/lib/jQuery/jquery-ui-1.8.16.custom.min.js +791 -0
  219. data/public/amber/js/lib/jQuery/jquery.textarea.js +267 -0
  220. data/public/amber/js/lib/peg-0.6.2.min.js +2 -0
  221. data/public/amber/js/lib/showdown.js +419 -0
  222. data/public/amber/js/parser.js +4222 -0
  223. data/public/amber/js/parser.pegjs +223 -0
  224. data/public/amber/learn.html +40 -0
  225. data/public/amber/repl/Makefile +8 -0
  226. data/public/amber/repl/REPL.js +124 -0
  227. data/public/amber/repl/REPL.st +56 -0
  228. data/public/amber/repl/amber.js +18085 -0
  229. data/public/amber/server/FileServer.st +576 -0
  230. data/public/amber/server/Makefile +8 -0
  231. data/public/amber/server/server.js +13049 -0
  232. data/public/amber/st/Benchfib.js +297 -0
  233. data/public/amber/st/Benchfib.st +124 -0
  234. data/public/amber/st/Canvas.st +968 -0
  235. data/public/amber/st/Compiler-Tests.st +471 -0
  236. data/public/amber/st/Compiler.st +1445 -0
  237. data/public/amber/st/Documentation.st +758 -0
  238. data/public/amber/st/Examples.js +100 -0
  239. data/public/amber/st/Examples.st +38 -0
  240. data/public/amber/st/IDE.st +2404 -0
  241. data/public/amber/st/Kernel-Announcements.st +61 -0
  242. data/public/amber/st/Kernel-Classes.st +462 -0
  243. data/public/amber/st/Kernel-Collections.st +1611 -0
  244. data/public/amber/st/Kernel-Exceptions.st +124 -0
  245. data/public/amber/st/Kernel-Methods.st +291 -0
  246. data/public/amber/st/Kernel-Objects.st +1587 -0
  247. data/public/amber/st/Kernel-Tests.st +953 -0
  248. data/public/amber/st/Kernel-Transcript.st +70 -0
  249. data/public/amber/st/Maglev-Core.st +1694 -0
  250. data/public/amber/st/Maglev-Database-Explorer.st +3148 -0
  251. data/public/amber/st/Maglev-Vendor.st +151 -0
  252. data/public/amber/st/Makefile +104 -0
  253. data/public/amber/st/README.md +4 -0
  254. data/public/amber/st/SUnit.st +172 -0
  255. data/public/css/bootstrap-combined.no-icons.min.css +731 -0
  256. data/public/css/bootstrap.css +6811 -0
  257. data/public/css/images/animated-overlay.gif +0 -0
  258. data/public/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  259. data/public/css/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  260. data/public/css/images/ui-bg_flat_10_000000_40x100.png +0 -0
  261. data/public/css/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  262. data/public/css/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  263. data/public/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  264. data/public/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  265. data/public/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  266. data/public/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  267. data/public/css/images/ui-icons_222222_256x240.png +0 -0
  268. data/public/css/images/ui-icons_228ef1_256x240.png +0 -0
  269. data/public/css/images/ui-icons_ef8c08_256x240.png +0 -0
  270. data/public/css/images/ui-icons_ffd27a_256x240.png +0 -0
  271. data/public/css/images/ui-icons_ffffff_256x240.png +0 -0
  272. data/public/css/jquery-ui.min.css +5 -0
  273. data/public/css/smalltalk_code.css +42 -0
  274. data/public/css/style.css +210 -0
  275. data/public/images/bg_tile.png +0 -0
  276. data/public/images/maglev-logo.gif +0 -0
  277. data/public/images/mchammer.gif +0 -0
  278. data/public/images/rails_tiny.png +0 -0
  279. data/public/images/ruby.png +0 -0
  280. data/public/images/ruby_smalltalk_bridge.png +0 -0
  281. data/public/images/smalltalk.png +0 -0
  282. data/public/img/glyphicons-halflings.png +0 -0
  283. data/public/index.html +118 -0
  284. data/public/libs/bootstrap.min.js +7 -0
  285. data/public/libs/codemirror/CONTRIBUTING.md +72 -0
  286. data/public/libs/codemirror/LICENSE +23 -0
  287. data/public/libs/codemirror/README.md +11 -0
  288. data/public/libs/codemirror/addon/dialog/dialog.css +32 -0
  289. data/public/libs/codemirror/addon/dialog/dialog.js +80 -0
  290. data/public/libs/codemirror/addon/display/placeholder.js +54 -0
  291. data/public/libs/codemirror/addon/edit/closebrackets.js +54 -0
  292. data/public/libs/codemirror/addon/edit/closetag.js +86 -0
  293. data/public/libs/codemirror/addon/edit/continuecomment.js +44 -0
  294. data/public/libs/codemirror/addon/edit/continuelist.js +25 -0
  295. data/public/libs/codemirror/addon/edit/matchbrackets.js +82 -0
  296. data/public/libs/codemirror/addon/fold/brace-fold.js +31 -0
  297. data/public/libs/codemirror/addon/fold/foldcode.js +32 -0
  298. data/public/libs/codemirror/addon/fold/indent-fold.js +11 -0
  299. data/public/libs/codemirror/addon/fold/xml-fold.js +64 -0
  300. data/public/libs/codemirror/addon/hint/html-hint.js +582 -0
  301. data/public/libs/codemirror/addon/hint/javascript-hint.js +142 -0
  302. data/public/libs/codemirror/addon/hint/pig-hint.js +117 -0
  303. data/public/libs/codemirror/addon/hint/python-hint.js +93 -0
  304. data/public/libs/codemirror/addon/hint/show-hint.css +38 -0
  305. data/public/libs/codemirror/addon/hint/show-hint.js +180 -0
  306. data/public/libs/codemirror/addon/hint/xml-hint.js +118 -0
  307. data/public/libs/codemirror/addon/lint/javascript-lint.js +127 -0
  308. data/public/libs/codemirror/addon/lint/json-lint.js +14 -0
  309. data/public/libs/codemirror/addon/lint/lint.css +96 -0
  310. data/public/libs/codemirror/addon/lint/lint.js +197 -0
  311. data/public/libs/codemirror/addon/mode/loadmode.js +51 -0
  312. data/public/libs/codemirror/addon/mode/multiplex.js +95 -0
  313. data/public/libs/codemirror/addon/mode/overlay.js +59 -0
  314. data/public/libs/codemirror/addon/runmode/colorize.js +29 -0
  315. data/public/libs/codemirror/addon/runmode/runmode-standalone.js +130 -0
  316. data/public/libs/codemirror/addon/runmode/runmode.js +52 -0
  317. data/public/libs/codemirror/addon/runmode/runmode.node.js +89 -0
  318. data/public/libs/codemirror/addon/search/match-highlighter.js +60 -0
  319. data/public/libs/codemirror/addon/search/search.js +131 -0
  320. data/public/libs/codemirror/addon/search/searchcursor.js +133 -0
  321. data/public/libs/codemirror/addon/selection/active-line.js +39 -0
  322. data/public/libs/codemirror/addon/selection/mark-selection.js +34 -0
  323. data/public/libs/codemirror/bin/compress +91 -0
  324. data/public/libs/codemirror/bin/lint +11 -0
  325. data/public/libs/codemirror/demo/activeline.html +70 -0
  326. data/public/libs/codemirror/demo/bidi.html +61 -0
  327. data/public/libs/codemirror/demo/btree.html +87 -0
  328. data/public/libs/codemirror/demo/buffers.html +98 -0
  329. data/public/libs/codemirror/demo/changemode.html +50 -0
  330. data/public/libs/codemirror/demo/closebrackets.html +63 -0
  331. data/public/libs/codemirror/demo/closetag.html +37 -0
  332. data/public/libs/codemirror/demo/complete.html +70 -0
  333. data/public/libs/codemirror/demo/emacs.html +60 -0
  334. data/public/libs/codemirror/demo/folding.html +69 -0
  335. data/public/libs/codemirror/demo/fullscreen.html +147 -0
  336. data/public/libs/codemirror/demo/html5complete.html +92 -0
  337. data/public/libs/codemirror/demo/indentwrap.html +49 -0
  338. data/public/libs/codemirror/demo/lint.html +90 -0
  339. data/public/libs/codemirror/demo/loadmode.html +40 -0
  340. data/public/libs/codemirror/demo/marker.html +59 -0
  341. data/public/libs/codemirror/demo/markselection.html +36 -0
  342. data/public/libs/codemirror/demo/matchhighlighter.html +38 -0
  343. data/public/libs/codemirror/demo/multiplex.html +60 -0
  344. data/public/libs/codemirror/demo/mustache.html +59 -0
  345. data/public/libs/codemirror/demo/placeholder.html +36 -0
  346. data/public/libs/codemirror/demo/preview.html +76 -0
  347. data/public/libs/codemirror/demo/resize.html +49 -0
  348. data/public/libs/codemirror/demo/runmode.html +50 -0
  349. data/public/libs/codemirror/demo/search.html +85 -0
  350. data/public/libs/codemirror/demo/spanaffectswrapping_shim.html +73 -0
  351. data/public/libs/codemirror/demo/theme.html +89 -0
  352. data/public/libs/codemirror/demo/variableheight.html +52 -0
  353. data/public/libs/codemirror/demo/vim.html +65 -0
  354. data/public/libs/codemirror/demo/visibletabs.html +53 -0
  355. data/public/libs/codemirror/demo/widget.html +74 -0
  356. data/public/libs/codemirror/demo/xmlcomplete.html +81 -0
  357. data/public/libs/codemirror/index.html +487 -0
  358. data/public/libs/codemirror/keymap/emacs.js +30 -0
  359. data/public/libs/codemirror/keymap/vim.js +3044 -0
  360. data/public/libs/codemirror/lib/codemirror.css +253 -0
  361. data/public/libs/codemirror/lib/codemirror.js +5585 -0
  362. data/public/libs/codemirror/mode/apl/apl.js +160 -0
  363. data/public/libs/codemirror/mode/apl/index.html +61 -0
  364. data/public/libs/codemirror/mode/asterisk/asterisk.js +183 -0
  365. data/public/libs/codemirror/mode/asterisk/index.html +142 -0
  366. data/public/libs/codemirror/mode/clike/clike.js +302 -0
  367. data/public/libs/codemirror/mode/clike/index.html +103 -0
  368. data/public/libs/codemirror/mode/clike/scala.html +767 -0
  369. data/public/libs/codemirror/mode/clojure/clojure.js +222 -0
  370. data/public/libs/codemirror/mode/clojure/index.html +76 -0
  371. data/public/libs/codemirror/mode/coffeescript/LICENSE +22 -0
  372. data/public/libs/codemirror/mode/coffeescript/coffeescript.js +346 -0
  373. data/public/libs/codemirror/mode/coffeescript/index.html +728 -0
  374. data/public/libs/codemirror/mode/commonlisp/commonlisp.js +101 -0
  375. data/public/libs/codemirror/mode/commonlisp/index.html +165 -0
  376. data/public/libs/codemirror/mode/css/css.js +567 -0
  377. data/public/libs/codemirror/mode/css/index.html +58 -0
  378. data/public/libs/codemirror/mode/css/scss.html +145 -0
  379. data/public/libs/codemirror/mode/css/scss_test.js +80 -0
  380. data/public/libs/codemirror/mode/css/test.js +113 -0
  381. data/public/libs/codemirror/mode/d/d.js +205 -0
  382. data/public/libs/codemirror/mode/d/index.html +262 -0
  383. data/public/libs/codemirror/mode/diff/diff.js +32 -0
  384. data/public/libs/codemirror/mode/diff/index.html +105 -0
  385. data/public/libs/codemirror/mode/ecl/ecl.js +192 -0
  386. data/public/libs/codemirror/mode/ecl/index.html +39 -0
  387. data/public/libs/codemirror/mode/erlang/erlang.js +463 -0
  388. data/public/libs/codemirror/mode/erlang/index.html +64 -0
  389. data/public/libs/codemirror/mode/gas/gas.js +326 -0
  390. data/public/libs/codemirror/mode/gas/index.html +57 -0
  391. data/public/libs/codemirror/mode/gfm/gfm.js +96 -0
  392. data/public/libs/codemirror/mode/gfm/index.html +74 -0
  393. data/public/libs/codemirror/mode/gfm/test.js +112 -0
  394. data/public/libs/codemirror/mode/go/go.js +165 -0
  395. data/public/libs/codemirror/mode/go/index.html +74 -0
  396. data/public/libs/codemirror/mode/groovy/groovy.js +210 -0
  397. data/public/libs/codemirror/mode/groovy/index.html +73 -0
  398. data/public/libs/codemirror/mode/haskell/haskell.js +242 -0
  399. data/public/libs/codemirror/mode/haskell/index.html +62 -0
  400. data/public/libs/codemirror/mode/haxe/haxe.js +429 -0
  401. data/public/libs/codemirror/mode/haxe/index.html +90 -0
  402. data/public/libs/codemirror/mode/htmlembedded/htmlembedded.js +73 -0
  403. data/public/libs/codemirror/mode/htmlembedded/index.html +49 -0
  404. data/public/libs/codemirror/mode/htmlmixed/htmlmixed.js +104 -0
  405. data/public/libs/codemirror/mode/htmlmixed/index.html +73 -0
  406. data/public/libs/codemirror/mode/http/http.js +98 -0
  407. data/public/libs/codemirror/mode/http/index.html +32 -0
  408. data/public/libs/codemirror/mode/javascript/index.html +92 -0
  409. data/public/libs/codemirror/mode/javascript/javascript.js +467 -0
  410. data/public/libs/codemirror/mode/javascript/typescript.html +48 -0
  411. data/public/libs/codemirror/mode/jinja2/index.html +38 -0
  412. data/public/libs/codemirror/mode/jinja2/jinja2.js +42 -0
  413. data/public/libs/codemirror/mode/less/index.html +741 -0
  414. data/public/libs/codemirror/mode/less/less.js +266 -0
  415. data/public/libs/codemirror/mode/livescript/LICENSE +23 -0
  416. data/public/libs/codemirror/mode/livescript/index.html +446 -0
  417. data/public/libs/codemirror/mode/livescript/livescript.js +267 -0
  418. data/public/libs/codemirror/mode/livescript/livescript.ls +266 -0
  419. data/public/libs/codemirror/mode/lua/index.html +74 -0
  420. data/public/libs/codemirror/mode/lua/lua.js +140 -0
  421. data/public/libs/codemirror/mode/markdown/index.html +344 -0
  422. data/public/libs/codemirror/mode/markdown/markdown.js +526 -0
  423. data/public/libs/codemirror/mode/markdown/test.js +636 -0
  424. data/public/libs/codemirror/mode/meta.js +75 -0
  425. data/public/libs/codemirror/mode/mirc/index.html +149 -0
  426. data/public/libs/codemirror/mode/mirc/mirc.js +177 -0
  427. data/public/libs/codemirror/mode/ntriples/index.html +33 -0
  428. data/public/libs/codemirror/mode/ntriples/ntriples.js +170 -0
  429. data/public/libs/codemirror/mode/ocaml/index.html +131 -0
  430. data/public/libs/codemirror/mode/ocaml/ocaml.js +113 -0
  431. data/public/libs/codemirror/mode/pascal/LICENSE +7 -0
  432. data/public/libs/codemirror/mode/pascal/index.html +48 -0
  433. data/public/libs/codemirror/mode/pascal/pascal.js +94 -0
  434. data/public/libs/codemirror/mode/perl/LICENSE +19 -0
  435. data/public/libs/codemirror/mode/perl/index.html +62 -0
  436. data/public/libs/codemirror/mode/perl/perl.js +816 -0
  437. data/public/libs/codemirror/mode/php/index.html +51 -0
  438. data/public/libs/codemirror/mode/php/php.js +129 -0
  439. data/public/libs/codemirror/mode/pig/index.html +42 -0
  440. data/public/libs/codemirror/mode/pig/pig.js +171 -0
  441. data/public/libs/codemirror/mode/properties/index.html +41 -0
  442. data/public/libs/codemirror/mode/properties/properties.js +63 -0
  443. data/public/libs/codemirror/mode/python/LICENSE.txt +21 -0
  444. data/public/libs/codemirror/mode/python/index.html +135 -0
  445. data/public/libs/codemirror/mode/python/python.js +340 -0
  446. data/public/libs/codemirror/mode/q/index.html +131 -0
  447. data/public/libs/codemirror/mode/q/q.js +124 -0
  448. data/public/libs/codemirror/mode/r/LICENSE +24 -0
  449. data/public/libs/codemirror/mode/r/index.html +74 -0
  450. data/public/libs/codemirror/mode/r/r.js +141 -0
  451. data/public/libs/codemirror/mode/rpm/changes/changes.js +19 -0
  452. data/public/libs/codemirror/mode/rpm/changes/index.html +53 -0
  453. data/public/libs/codemirror/mode/rpm/spec/index.html +99 -0
  454. data/public/libs/codemirror/mode/rpm/spec/spec.css +5 -0
  455. data/public/libs/codemirror/mode/rpm/spec/spec.js +66 -0
  456. data/public/libs/codemirror/mode/rst/LICENSE.txt +21 -0
  457. data/public/libs/codemirror/mode/rst/index.html +524 -0
  458. data/public/libs/codemirror/mode/rst/rst.js +550 -0
  459. data/public/libs/codemirror/mode/ruby/LICENSE +24 -0
  460. data/public/libs/codemirror/mode/ruby/index.html +173 -0
  461. data/public/libs/codemirror/mode/ruby/ruby.js +197 -0
  462. data/public/libs/codemirror/mode/rust/index.html +48 -0
  463. data/public/libs/codemirror/mode/rust/rust.js +432 -0
  464. data/public/libs/codemirror/mode/sass/index.html +54 -0
  465. data/public/libs/codemirror/mode/sass/sass.js +349 -0
  466. data/public/libs/codemirror/mode/scheme/index.html +65 -0
  467. data/public/libs/codemirror/mode/scheme/scheme.js +230 -0
  468. data/public/libs/codemirror/mode/shell/index.html +51 -0
  469. data/public/libs/codemirror/mode/shell/shell.js +118 -0
  470. data/public/libs/codemirror/mode/sieve/LICENSE +19 -0
  471. data/public/libs/codemirror/mode/sieve/index.html +81 -0
  472. data/public/libs/codemirror/mode/sieve/sieve.js +183 -0
  473. data/public/libs/codemirror/mode/smalltalk/index.html +57 -0
  474. data/public/libs/codemirror/mode/smalltalk/smalltalk.js +141 -0
  475. data/public/libs/codemirror/mode/smarty/index.html +83 -0
  476. data/public/libs/codemirror/mode/smarty/smarty.js +148 -0
  477. data/public/libs/codemirror/mode/sparql/index.html +42 -0
  478. data/public/libs/codemirror/mode/sparql/sparql.js +143 -0
  479. data/public/libs/codemirror/mode/sql/index.html +68 -0
  480. data/public/libs/codemirror/mode/sql/sql.js +268 -0
  481. data/public/libs/codemirror/mode/stex/index.html +98 -0
  482. data/public/libs/codemirror/mode/stex/stex.js +246 -0
  483. data/public/libs/codemirror/mode/stex/test.js +117 -0
  484. data/public/libs/codemirror/mode/tcl/index.html +129 -0
  485. data/public/libs/codemirror/mode/tcl/tcl.js +131 -0
  486. data/public/libs/codemirror/mode/tiddlywiki/index.html +142 -0
  487. data/public/libs/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
  488. data/public/libs/codemirror/mode/tiddlywiki/tiddlywiki.js +353 -0
  489. data/public/libs/codemirror/mode/tiki/index.html +81 -0
  490. data/public/libs/codemirror/mode/tiki/tiki.css +26 -0
  491. data/public/libs/codemirror/mode/tiki/tiki.js +308 -0
  492. data/public/libs/codemirror/mode/turtle/index.html +39 -0
  493. data/public/libs/codemirror/mode/turtle/turtle.js +145 -0
  494. data/public/libs/codemirror/mode/vb/LICENSE.txt +21 -0
  495. data/public/libs/codemirror/mode/vb/index.html +88 -0
  496. data/public/libs/codemirror/mode/vb/vb.js +259 -0
  497. data/public/libs/codemirror/mode/vbscript/index.html +42 -0
  498. data/public/libs/codemirror/mode/vbscript/vbscript.js +26 -0
  499. data/public/libs/codemirror/mode/velocity/index.html +103 -0
  500. data/public/libs/codemirror/mode/velocity/velocity.js +144 -0
  501. data/public/libs/codemirror/mode/verilog/index.html +121 -0
  502. data/public/libs/codemirror/mode/verilog/verilog.js +182 -0
  503. data/public/libs/codemirror/mode/xml/index.html +45 -0
  504. data/public/libs/codemirror/mode/xml/xml.js +328 -0
  505. data/public/libs/codemirror/mode/xquery/LICENSE +20 -0
  506. data/public/libs/codemirror/mode/xquery/index.html +221 -0
  507. data/public/libs/codemirror/mode/xquery/test.js +64 -0
  508. data/public/libs/codemirror/mode/xquery/xquery.js +450 -0
  509. data/public/libs/codemirror/mode/yaml/index.html +68 -0
  510. data/public/libs/codemirror/mode/yaml/yaml.js +95 -0
  511. data/public/libs/codemirror/mode/z80/index.html +39 -0
  512. data/public/libs/codemirror/mode/z80/z80.js +85 -0
  513. data/public/libs/codemirror/package.json +21 -0
  514. data/public/libs/codemirror/test/doc_test.js +329 -0
  515. data/public/libs/codemirror/test/driver.js +138 -0
  516. data/public/libs/codemirror/test/index.html +182 -0
  517. data/public/libs/codemirror/test/lint/acorn.js +1593 -0
  518. data/public/libs/codemirror/test/lint/lint.js +112 -0
  519. data/public/libs/codemirror/test/lint/parse-js.js +1372 -0
  520. data/public/libs/codemirror/test/lint/walk.js +216 -0
  521. data/public/libs/codemirror/test/mode_test.css +10 -0
  522. data/public/libs/codemirror/test/mode_test.js +192 -0
  523. data/public/libs/codemirror/test/phantom_driver.js +31 -0
  524. data/public/libs/codemirror/test/run.js +33 -0
  525. data/public/libs/codemirror/test/test.js +1400 -0
  526. data/public/libs/codemirror/test/vim_test.js +1688 -0
  527. data/public/libs/codemirror/theme/ambiance-mobile.css +5 -0
  528. data/public/libs/codemirror/theme/ambiance.css +75 -0
  529. data/public/libs/codemirror/theme/blackboard.css +25 -0
  530. data/public/libs/codemirror/theme/cobalt.css +18 -0
  531. data/public/libs/codemirror/theme/eclipse.css +25 -0
  532. data/public/libs/codemirror/theme/elegant.css +10 -0
  533. data/public/libs/codemirror/theme/erlang-dark.css +21 -0
  534. data/public/libs/codemirror/theme/lesser-dark.css +44 -0
  535. data/public/libs/codemirror/theme/midnight.css +52 -0
  536. data/public/libs/codemirror/theme/monokai.css +28 -0
  537. data/public/libs/codemirror/theme/neat.css +9 -0
  538. data/public/libs/codemirror/theme/night.css +21 -0
  539. data/public/libs/codemirror/theme/rubyblue.css +21 -0
  540. data/public/libs/codemirror/theme/solarized.css +207 -0
  541. data/public/libs/codemirror/theme/twilight.css +26 -0
  542. data/public/libs/codemirror/theme/vibrant-ink.css +27 -0
  543. data/public/libs/codemirror/theme/xq-dark.css +46 -0
  544. data/public/libs/codemirror/theme/xq-light.css +43 -0
  545. data/public/libs/font-awesome/css/font-awesome-ie7.css +983 -0
  546. data/public/libs/font-awesome/css/font-awesome-ie7.min.css +24 -0
  547. data/public/libs/font-awesome/css/font-awesome.css +1268 -0
  548. data/public/libs/font-awesome/css/font-awesome.min.css +24 -0
  549. data/public/libs/font-awesome/font/FontAwesome.otf +0 -0
  550. data/public/libs/font-awesome/font/fontawesome-webfont.eot +0 -0
  551. data/public/libs/font-awesome/font/fontawesome-webfont.svg +339 -0
  552. data/public/libs/font-awesome/font/fontawesome-webfont.ttf +0 -0
  553. data/public/libs/font-awesome/font/fontawesome-webfont.woff +0 -0
  554. data/public/libs/font-awesome/less/bootstrap.less +78 -0
  555. data/public/libs/font-awesome/less/core.less +132 -0
  556. data/public/libs/font-awesome/less/extras.less +79 -0
  557. data/public/libs/font-awesome/less/font-awesome-ie7.less +413 -0
  558. data/public/libs/font-awesome/less/font-awesome.less +32 -0
  559. data/public/libs/font-awesome/less/icons.less +330 -0
  560. data/public/libs/font-awesome/less/mixins.less +34 -0
  561. data/public/libs/font-awesome/less/path.less +15 -0
  562. data/public/libs/font-awesome/less/variables.less +9 -0
  563. data/public/libs/jquery-1.10.0.min.js +6 -0
  564. data/public/libs/jquery-ui.min.js +12 -0
  565. data/public/libs/jquery.jsPlumb-1.4.0-all.js +9571 -0
  566. data/public/libs/jquery.livequery.js +226 -0
  567. data/public/libs/jsPlumbInitializer.js +72 -0
  568. data/public/libs/jstree/README.txt +10 -0
  569. data/public/libs/jstree/_demo/_dump.sql +20 -0
  570. data/public/libs/jstree/_demo/_inc/__mysql_errors.log +0 -0
  571. data/public/libs/jstree/_demo/_inc/class._database.php +146 -0
  572. data/public/libs/jstree/_demo/_inc/class._database_i.php +152 -0
  573. data/public/libs/jstree/_demo/_inc/class.tree.php +602 -0
  574. data/public/libs/jstree/_demo/_install.txt +6 -0
  575. data/public/libs/jstree/_demo/config.php +14 -0
  576. data/public/libs/jstree/_demo/file.png +0 -0
  577. data/public/libs/jstree/_demo/folder.png +0 -0
  578. data/public/libs/jstree/_demo/index.html +461 -0
  579. data/public/libs/jstree/_demo/root.png +0 -0
  580. data/public/libs/jstree/_demo/server.php +69 -0
  581. data/public/libs/jstree/_docs/!style.css +48 -0
  582. data/public/libs/jstree/_docs/_drive.png +0 -0
  583. data/public/libs/jstree/_docs/_html_data.html +2 -0
  584. data/public/libs/jstree/_docs/_json_data.json +4 -0
  585. data/public/libs/jstree/_docs/_search_data.json +6 -0
  586. data/public/libs/jstree/_docs/_search_result.json +1 -0
  587. data/public/libs/jstree/_docs/_xml_flat.xml +12 -0
  588. data/public/libs/jstree/_docs/_xml_nest.xml +18 -0
  589. data/public/libs/jstree/_docs/checkbox.html +171 -0
  590. data/public/libs/jstree/_docs/contextmenu.html +121 -0
  591. data/public/libs/jstree/_docs/cookies.html +97 -0
  592. data/public/libs/jstree/_docs/core.html +689 -0
  593. data/public/libs/jstree/_docs/crrm.html +316 -0
  594. data/public/libs/jstree/_docs/dnd.html +199 -0
  595. data/public/libs/jstree/_docs/hotkeys.html +82 -0
  596. data/public/libs/jstree/_docs/html_data.html +175 -0
  597. data/public/libs/jstree/_docs/index.html +86 -0
  598. data/public/libs/jstree/_docs/json_data.html +249 -0
  599. data/public/libs/jstree/_docs/languages.html +152 -0
  600. data/public/libs/jstree/_docs/logo.png +0 -0
  601. data/public/libs/jstree/_docs/search.html +153 -0
  602. data/public/libs/jstree/_docs/sort.html +85 -0
  603. data/public/libs/jstree/_docs/syntax/!script.js +2232 -0
  604. data/public/libs/jstree/_docs/syntax/!style.css +511 -0
  605. data/public/libs/jstree/_docs/syntax/clipboard.swf +0 -0
  606. data/public/libs/jstree/_docs/syntax/help.png +0 -0
  607. data/public/libs/jstree/_docs/syntax/magnifier.png +0 -0
  608. data/public/libs/jstree/_docs/syntax/page_white_code.png +0 -0
  609. data/public/libs/jstree/_docs/syntax/page_white_copy.png +0 -0
  610. data/public/libs/jstree/_docs/syntax/printer.png +0 -0
  611. data/public/libs/jstree/_docs/syntax/wrapping.png +0 -0
  612. data/public/libs/jstree/_docs/themeroller.html +107 -0
  613. data/public/libs/jstree/_docs/themes.html +127 -0
  614. data/public/libs/jstree/_docs/types.html +178 -0
  615. data/public/libs/jstree/_docs/ui.html +197 -0
  616. data/public/libs/jstree/_docs/unique.html +85 -0
  617. data/public/libs/jstree/_docs/xml_data.html +218 -0
  618. data/public/libs/jstree/_lib/jquery.cookie.js +96 -0
  619. data/public/libs/jstree/_lib/jquery.hotkeys.js +99 -0
  620. data/public/libs/jstree/_lib/jquery.js +5 -0
  621. data/public/libs/jstree/jquery.jstree.js +4564 -0
  622. data/public/libs/jstree/themes/apple/bg.jpg +0 -0
  623. data/public/libs/jstree/themes/apple/d.png +0 -0
  624. data/public/libs/jstree/themes/apple/dot_for_ie.gif +0 -0
  625. data/public/libs/jstree/themes/apple/style.css +61 -0
  626. data/public/libs/jstree/themes/apple/throbber.gif +0 -0
  627. data/public/libs/jstree/themes/classic/d.gif +0 -0
  628. data/public/libs/jstree/themes/classic/d.png +0 -0
  629. data/public/libs/jstree/themes/classic/dot_for_ie.gif +0 -0
  630. data/public/libs/jstree/themes/classic/style.css +77 -0
  631. data/public/libs/jstree/themes/classic/throbber.gif +0 -0
  632. data/public/libs/jstree/themes/default-rtl/d.gif +0 -0
  633. data/public/libs/jstree/themes/default-rtl/d.png +0 -0
  634. data/public/libs/jstree/themes/default-rtl/dots.gif +0 -0
  635. data/public/libs/jstree/themes/default-rtl/style.css +84 -0
  636. data/public/libs/jstree/themes/default-rtl/throbber.gif +0 -0
  637. data/public/libs/jstree/themes/default/d.gif +0 -0
  638. data/public/libs/jstree/themes/default/d.png +0 -0
  639. data/public/libs/jstree/themes/default/style.css +74 -0
  640. data/public/libs/jstree/themes/default/throbber.gif +0 -0
  641. data/public/themes/geo-bootstrap/README.md +25 -0
  642. data/public/themes/geo-bootstrap/img/flames.gif +0 -0
  643. data/public/themes/geo-bootstrap/img/glyphicons-halflings-white.png +0 -0
  644. data/public/themes/geo-bootstrap/img/glyphicons-halflings.png +0 -0
  645. data/public/themes/geo-bootstrap/img/microfab.gif +0 -0
  646. data/public/themes/geo-bootstrap/img/progress.gif +0 -0
  647. data/public/themes/geo-bootstrap/img/rainbow.gif +0 -0
  648. data/public/themes/geo-bootstrap/img/stars.gif +0 -0
  649. data/public/themes/geo-bootstrap/img/test/7upspot.gif +0 -0
  650. data/public/themes/geo-bootstrap/img/test/americanflag.gif +0 -0
  651. data/public/themes/geo-bootstrap/img/test/community.gif +0 -0
  652. data/public/themes/geo-bootstrap/img/test/computer-01.gif +0 -0
  653. data/public/themes/geo-bootstrap/img/test/computer.gif +0 -0
  654. data/public/themes/geo-bootstrap/img/test/construction.gif +0 -0
  655. data/public/themes/geo-bootstrap/img/test/counter.gif +0 -0
  656. data/public/themes/geo-bootstrap/img/test/counter2.gif +0 -0
  657. data/public/themes/geo-bootstrap/img/test/divider.gif +0 -0
  658. data/public/themes/geo-bootstrap/img/test/divider1.gif +0 -0
  659. data/public/themes/geo-bootstrap/img/test/divider2.gif +0 -0
  660. data/public/themes/geo-bootstrap/img/test/divider3.gif +0 -0
  661. data/public/themes/geo-bootstrap/img/test/divider4.gif +0 -0
  662. data/public/themes/geo-bootstrap/img/test/drudgesiren.gif +0 -0
  663. data/public/themes/geo-bootstrap/img/test/emailme.gif +0 -0
  664. data/public/themes/geo-bootstrap/img/test/funky.gif +0 -0
  665. data/public/themes/geo-bootstrap/img/test/geocities.jpg +0 -0
  666. data/public/themes/geo-bootstrap/img/test/hacker.gif +0 -0
  667. data/public/themes/geo-bootstrap/img/test/heart.gif +0 -0
  668. data/public/themes/geo-bootstrap/img/test/hot.gif +0 -0
  669. data/public/themes/geo-bootstrap/img/test/ie_logo.gif +0 -0
  670. data/public/themes/geo-bootstrap/img/test/mailkitten.gif +0 -0
  671. data/public/themes/geo-bootstrap/img/test/mchammer.gif +0 -0
  672. data/public/themes/geo-bootstrap/img/test/new.gif +0 -0
  673. data/public/themes/geo-bootstrap/img/test/new2.gif +0 -0
  674. data/public/themes/geo-bootstrap/img/test/noframes.gif +0 -0
  675. data/public/themes/geo-bootstrap/img/test/notepad.gif +0 -0
  676. data/public/themes/geo-bootstrap/img/test/ns_logo.gif +0 -0
  677. data/public/themes/geo-bootstrap/img/test/sign-in.gif +0 -0
  678. data/public/themes/geo-bootstrap/img/test/spinningearth.gif +0 -0
  679. data/public/themes/geo-bootstrap/img/test/underconstruction.gif +0 -0
  680. data/public/themes/geo-bootstrap/img/test/wabwalk.gif +0 -0
  681. data/public/themes/geo-bootstrap/img/test/webtrips.gif +0 -0
  682. data/public/themes/geo-bootstrap/img/test/yahooweek.gif +0 -0
  683. data/public/themes/geo-bootstrap/package.json +21 -0
  684. data/public/themes/geo-bootstrap/swatch/bootstrap-responsive.css +1109 -0
  685. data/public/themes/geo-bootstrap/swatch/bootstrap-responsive.min.css +9 -0
  686. data/public/themes/geo-bootstrap/swatch/bootstrap.css +6462 -0
  687. data/public/themes/geo-bootstrap/swatch/bootstrap.min.css +9 -0
  688. metadata +791 -0
@@ -0,0 +1,24 @@
1
+ Copyright (c) 2011, Ubalo, Inc.
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+ * Redistributions of source code must retain the above copyright
7
+ notice, this list of conditions and the following disclaimer.
8
+ * Redistributions in binary form must reproduce the above copyright
9
+ notice, this list of conditions and the following disclaimer in the
10
+ documentation and/or other materials provided with the distribution.
11
+ * Neither the name of the Ubalo, Inc. nor the names of its
12
+ contributors may be used to endorse or promote products derived
13
+ from this software without specific prior written permission.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ DISCLAIMED. IN NO EVENT SHALL UBALO, INC BE LIABLE FOR ANY
19
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,173 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>CodeMirror: Ruby mode</title>
6
+ <link rel="stylesheet" href="../../lib/codemirror.css">
7
+ <script src="../../lib/codemirror.js"></script>
8
+ <script src="../../addon/edit/matchbrackets.js"></script>
9
+ <script src="ruby.js"></script>
10
+ <style>
11
+ .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
12
+ .cm-s-default span.cm-arrow { color: red; }
13
+ </style>
14
+ <link rel="stylesheet" href="../../doc/docs.css">
15
+ </head>
16
+ <body>
17
+ <h1>CodeMirror: Ruby mode</h1>
18
+ <form><textarea id="code" name="code">
19
+ # Code from http://sandbox.mc.edu/~bennet/ruby/code/poly_rb.html
20
+ #
21
+ # This program evaluates polynomials. It first asks for the coefficients
22
+ # of a polynomial, which must be entered on one line, highest-order first.
23
+ # It then requests values of x and will compute the value of the poly for
24
+ # each x. It will repeatly ask for x values, unless you the user enters
25
+ # a blank line. It that case, it will ask for another polynomial. If the
26
+ # user types quit for either input, the program immediately exits.
27
+ #
28
+
29
+ #
30
+ # Function to evaluate a polynomial at x. The polynomial is given
31
+ # as a list of coefficients, from the greatest to the least.
32
+ def polyval(x, coef)
33
+ sum = 0
34
+ coef = coef.clone # Don't want to destroy the original
35
+ while true
36
+ sum += coef.shift # Add and remove the next coef
37
+ break if coef.empty? # If no more, done entirely.
38
+ sum *= x # This happens the right number of times.
39
+ end
40
+ return sum
41
+ end
42
+
43
+ #
44
+ # Function to read a line containing a list of integers and return
45
+ # them as an array of integers. If the string conversion fails, it
46
+ # throws TypeError. If the input line is the word 'quit', then it
47
+ # converts it to an end-of-file exception
48
+ def readints(prompt)
49
+ # Read a line
50
+ print prompt
51
+ line = readline.chomp
52
+ raise EOFError.new if line == 'quit' # You can also use a real EOF.
53
+
54
+ # Go through each item on the line, converting each one and adding it
55
+ # to retval.
56
+ retval = [ ]
57
+ for str in line.split(/\s+/)
58
+ if str =~ /^\-?\d+$/
59
+ retval.push(str.to_i)
60
+ else
61
+ raise TypeError.new
62
+ end
63
+ end
64
+
65
+ return retval
66
+ end
67
+
68
+ #
69
+ # Take a coeff and an exponent and return the string representation, ignoring
70
+ # the sign of the coefficient.
71
+ def term_to_str(coef, exp)
72
+ ret = ""
73
+
74
+ # Show coeff, unless it's 1 or at the right
75
+ coef = coef.abs
76
+ ret = coef.to_s unless coef == 1 && exp > 0
77
+ ret += "x" if exp > 0 # x if exponent not 0
78
+ ret += "^" + exp.to_s if exp > 1 # ^exponent, if > 1.
79
+
80
+ return ret
81
+ end
82
+
83
+ #
84
+ # Create a string of the polynomial in sort-of-readable form.
85
+ def polystr(p)
86
+ # Get the exponent of first coefficient, plus 1.
87
+ exp = p.length
88
+
89
+ # Assign exponents to each term, making pairs of coeff and exponent,
90
+ # Then get rid of the zero terms.
91
+ p = (p.map { |c| exp -= 1; [ c, exp ] }).select { |p| p[0] != 0 }
92
+
93
+ # If there's nothing left, it's a zero
94
+ return "0" if p.empty?
95
+
96
+ # *** Now p is a non-empty list of [ coef, exponent ] pairs. ***
97
+
98
+ # Convert the first term, preceded by a "-" if it's negative.
99
+ result = (if p[0][0] < 0 then "-" else "" end) + term_to_str(*p[0])
100
+
101
+ # Convert the rest of the terms, in each case adding the appropriate
102
+ # + or - separating them.
103
+ for term in p[1...p.length]
104
+ # Add the separator then the rep. of the term.
105
+ result += (if term[0] < 0 then " - " else " + " end) +
106
+ term_to_str(*term)
107
+ end
108
+
109
+ return result
110
+ end
111
+
112
+ #
113
+ # Run until some kind of endfile.
114
+ begin
115
+ # Repeat until an exception or quit gets us out.
116
+ while true
117
+ # Read a poly until it works. An EOF will except out of the
118
+ # program.
119
+ print "\n"
120
+ begin
121
+ poly = readints("Enter a polynomial coefficients: ")
122
+ rescue TypeError
123
+ print "Try again.\n"
124
+ retry
125
+ end
126
+ break if poly.empty?
127
+
128
+ # Read and evaluate x values until the user types a blank line.
129
+ # Again, an EOF will except out of the pgm.
130
+ while true
131
+ # Request an integer.
132
+ print "Enter x value or blank line: "
133
+ x = readline.chomp
134
+ break if x == ''
135
+ raise EOFError.new if x == 'quit'
136
+
137
+ # If it looks bad, let's try again.
138
+ if x !~ /^\-?\d+$/
139
+ print "That doesn't look like an integer. Please try again.\n"
140
+ next
141
+ end
142
+
143
+ # Convert to an integer and print the result.
144
+ x = x.to_i
145
+ print "p(x) = ", polystr(poly), "\n"
146
+ print "p(", x, ") = ", polyval(x, poly), "\n"
147
+ end
148
+ end
149
+ rescue EOFError
150
+ print "\n=== EOF ===\n"
151
+ rescue Interrupt, SignalException
152
+ print "\n=== Interrupted ===\n"
153
+ else
154
+ print "--- Bye ---\n"
155
+ end
156
+ </textarea></form>
157
+ <script>
158
+ var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
159
+ mode: "text/x-ruby",
160
+ tabMode: "indent",
161
+ matchBrackets: true,
162
+ indentUnit: 4
163
+ });
164
+ </script>
165
+
166
+ <p><strong>MIME types defined:</strong> <code>text/x-ruby</code>.</p>
167
+
168
+ <p>Development of the CodeMirror Ruby mode was kindly sponsored
169
+ by <a href="http://ubalo.com/">Ubalo</a>, who hold
170
+ the <a href="LICENSE">license</a>.</p>
171
+
172
+ </body>
173
+ </html>
@@ -0,0 +1,197 @@
1
+ CodeMirror.defineMode("ruby", function(config) {
2
+ function wordObj(words) {
3
+ var o = {};
4
+ for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;
5
+ return o;
6
+ }
7
+ var keywords = wordObj([
8
+ "alias", "and", "BEGIN", "begin", "break", "case", "class", "def", "defined?", "do", "else",
9
+ "elsif", "END", "end", "ensure", "false", "for", "if", "in", "module", "next", "not", "or",
10
+ "redo", "rescue", "retry", "return", "self", "super", "then", "true", "undef", "unless",
11
+ "until", "when", "while", "yield", "nil", "raise", "throw", "catch", "fail", "loop", "callcc",
12
+ "caller", "lambda", "proc", "public", "protected", "private", "require", "load",
13
+ "require_relative", "extend", "autoload"
14
+ ]);
15
+ var indentWords = wordObj(["def", "class", "case", "for", "while", "do", "module", "then",
16
+ "catch", "loop", "proc", "begin"]);
17
+ var dedentWords = wordObj(["end", "until"]);
18
+ var matching = {"[": "]", "{": "}", "(": ")"};
19
+ var curPunc;
20
+
21
+ function chain(newtok, stream, state) {
22
+ state.tokenize.push(newtok);
23
+ return newtok(stream, state);
24
+ }
25
+
26
+ function tokenBase(stream, state) {
27
+ curPunc = null;
28
+ if (stream.sol() && stream.match("=begin") && stream.eol()) {
29
+ state.tokenize.push(readBlockComment);
30
+ return "comment";
31
+ }
32
+ if (stream.eatSpace()) return null;
33
+ var ch = stream.next(), m;
34
+ if (ch == "`" || ch == "'" || ch == '"' ||
35
+ (ch == "/" && !stream.eol() && stream.peek() != " ")) {
36
+ return chain(readQuoted(ch, "string", ch == '"' || ch == "`"), stream, state);
37
+ } else if (ch == '⚡') {
38
+ return 'instruction-pointer';
39
+ } else if (ch == "%") {
40
+ var style, embed = false;
41
+ if (stream.eat("s")) style = "atom";
42
+ else if (stream.eat(/[WQ]/)) { style = "string"; embed = true; }
43
+ else if (stream.eat(/[wxqr]/)) style = "string";
44
+ var delim = stream.eat(/[^\w\s]/);
45
+ if (!delim) return "operator";
46
+ if (matching.propertyIsEnumerable(delim)) delim = matching[delim];
47
+ return chain(readQuoted(delim, style, embed, true), stream, state);
48
+ } else if (ch == "#") {
49
+ stream.skipToEnd();
50
+ return "comment";
51
+ } else if (ch == "<" && (m = stream.match(/^<-?[\`\"\']?([a-zA-Z_?]\w*)[\`\"\']?(?:;|$)/))) {
52
+ return chain(readHereDoc(m[1]), stream, state);
53
+ } else if (ch == "0") {
54
+ if (stream.eat("x")) stream.eatWhile(/[\da-fA-F]/);
55
+ else if (stream.eat("b")) stream.eatWhile(/[01]/);
56
+ else stream.eatWhile(/[0-7]/);
57
+ return "number";
58
+ } else if (/\d/.test(ch)) {
59
+ stream.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+\-]?[\d_]+)?/);
60
+ return "number";
61
+ } else if (ch == "?") {
62
+ while (stream.match(/^\\[CM]-/)) {}
63
+ if (stream.eat("\\")) stream.eatWhile(/\w/);
64
+ else stream.next();
65
+ return "string";
66
+ } else if (ch == ":") {
67
+ if (stream.eat("'")) return chain(readQuoted("'", "atom", false), stream, state);
68
+ if (stream.eat('"')) return chain(readQuoted('"', "atom", true), stream, state);
69
+ stream.eatWhile(/[\w\?]/);
70
+ return "atom";
71
+ } else if (ch == "@") {
72
+ stream.eat("@");
73
+ stream.eatWhile(/[\w\?]/);
74
+ return "variable-2";
75
+ } else if (ch == "$") {
76
+ stream.next();
77
+ stream.eatWhile(/[\w\?]/);
78
+ return "variable-3";
79
+ } else if (/\w/.test(ch)) {
80
+ stream.eatWhile(/[\w\?]/);
81
+ if (stream.eat(":")) return "atom";
82
+ return "ident";
83
+ } else if (ch == "|" && (state.varList || state.lastTok == "{" || state.lastTok == "do")) {
84
+ curPunc = "|";
85
+ return null;
86
+ } else if (/[\(\)\[\]{}\\;]/.test(ch)) {
87
+ curPunc = ch;
88
+ return null;
89
+ } else if (ch == "-" && stream.eat(">")) {
90
+ return "arrow";
91
+ } else if (/[=+\-\/*:\.^%<>~|]/.test(ch)) {
92
+ stream.eatWhile(/[=+\-\/*:\.^%<>~|]/);
93
+ return "operator";
94
+ } else {
95
+ return null;
96
+ }
97
+ }
98
+
99
+ function tokenBaseUntilBrace() {
100
+ var depth = 1;
101
+ return function(stream, state) {
102
+ if (stream.peek() == "}") {
103
+ depth--;
104
+ if (depth == 0) {
105
+ state.tokenize.pop();
106
+ return state.tokenize[state.tokenize.length-1](stream, state);
107
+ }
108
+ } else if (stream.peek() == "{") {
109
+ depth++;
110
+ }
111
+ return tokenBase(stream, state);
112
+ };
113
+ }
114
+ function readQuoted(quote, style, embed, unescaped) {
115
+ return function(stream, state) {
116
+ var escaped = false, ch;
117
+ while ((ch = stream.next()) != null) {
118
+ if (ch == quote && (unescaped || !escaped)) {
119
+ state.tokenize.pop();
120
+ break;
121
+ }
122
+ if (embed && ch == "#" && !escaped && stream.eat("{")) {
123
+ state.tokenize.push(tokenBaseUntilBrace(arguments.callee));
124
+ break;
125
+ }
126
+ escaped = !escaped && ch == "\\";
127
+ }
128
+ return style;
129
+ };
130
+ }
131
+ function readHereDoc(phrase) {
132
+ return function(stream, state) {
133
+ if (stream.match(phrase)) state.tokenize.pop();
134
+ else stream.skipToEnd();
135
+ return "string";
136
+ };
137
+ }
138
+ function readBlockComment(stream, state) {
139
+ if (stream.sol() && stream.match("=end") && stream.eol())
140
+ state.tokenize.pop();
141
+ stream.skipToEnd();
142
+ return "comment";
143
+ }
144
+
145
+ return {
146
+ startState: function() {
147
+ return {tokenize: [tokenBase],
148
+ indented: 0,
149
+ context: {type: "top", indented: -config.indentUnit},
150
+ continuedLine: false,
151
+ lastTok: null,
152
+ varList: false};
153
+ },
154
+
155
+ token: function(stream, state) {
156
+ if (stream.sol()) state.indented = stream.indentation();
157
+ var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype;
158
+ if (style == "ident") {
159
+ var word = stream.current();
160
+ style = keywords.propertyIsEnumerable(stream.current()) ? "keyword"
161
+ : /^[A-Z]/.test(word) ? "tag"
162
+ : (state.lastTok == "def" || state.lastTok == "class" || state.varList) ? "def"
163
+ : "variable";
164
+ if (indentWords.propertyIsEnumerable(word)) kwtype = "indent";
165
+ else if (dedentWords.propertyIsEnumerable(word)) kwtype = "dedent";
166
+ else if ((word == "if" || word == "unless") && stream.column() == stream.indentation())
167
+ kwtype = "indent";
168
+ }
169
+ if (curPunc || (style && style != "comment")) state.lastTok = word || curPunc || style;
170
+ if (curPunc == "|") state.varList = !state.varList;
171
+
172
+ if (kwtype == "indent" || /[\(\[\{]/.test(curPunc))
173
+ state.context = {prev: state.context, type: curPunc || style, indented: state.indented};
174
+ else if ((kwtype == "dedent" || /[\)\]\}]/.test(curPunc)) && state.context.prev)
175
+ state.context = state.context.prev;
176
+
177
+ if (stream.eol())
178
+ state.continuedLine = (curPunc == "\\" || style == "operator");
179
+ return style;
180
+ },
181
+
182
+ indent: function(state, textAfter) {
183
+ if (state.tokenize[state.tokenize.length-1] != tokenBase) return 0;
184
+ var firstChar = textAfter && textAfter.charAt(0);
185
+ var ct = state.context;
186
+ var closing = ct.type == matching[firstChar] ||
187
+ ct.type == "keyword" && /^(?:end|until|else|elsif|when|rescue)\b/.test(textAfter);
188
+ return ct.indented + (closing ? 0 : config.indentUnit) +
189
+ (state.continuedLine ? config.indentUnit : 0);
190
+ },
191
+ electricChars: "}de" // enD and rescuE
192
+
193
+ };
194
+ });
195
+
196
+ CodeMirror.defineMIME("text/x-ruby", "ruby");
197
+
@@ -0,0 +1,48 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>CodeMirror: Rust mode</title>
6
+ <link rel="stylesheet" href="../../lib/codemirror.css">
7
+ <script src="../../lib/codemirror.js"></script>
8
+ <script src="rust.js"></script>
9
+ <link rel="stylesheet" href="../../doc/docs.css">
10
+ <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
11
+ </head>
12
+ <body>
13
+ <h1>CodeMirror: Rust mode</h1>
14
+
15
+ <div><textarea id="code" name="code">
16
+ // Demo code.
17
+
18
+ type foo<T> = int;
19
+ enum bar {
20
+ some(int, foo<float>),
21
+ none
22
+ }
23
+
24
+ fn check_crate(x: int) {
25
+ let v = 10;
26
+ alt foo {
27
+ 1 to 3 {
28
+ print_foo();
29
+ if x {
30
+ blah() + 10;
31
+ }
32
+ }
33
+ (x, y) { "bye" }
34
+ _ { "hi" }
35
+ }
36
+ }
37
+ </textarea></div>
38
+
39
+ <script>
40
+ var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
41
+ lineNumbers: true,
42
+ tabMode: "indent"
43
+ });
44
+ </script>
45
+
46
+ <p><strong>MIME types defined:</strong> <code>text/x-rustsrc</code>.</p>
47
+ </body>
48
+ </html>
@@ -0,0 +1,432 @@
1
+ CodeMirror.defineMode("rust", function() {
2
+ var indentUnit = 4, altIndentUnit = 2;
3
+ var valKeywords = {
4
+ "if": "if-style", "while": "if-style", "else": "else-style",
5
+ "do": "else-style", "ret": "else-style", "fail": "else-style",
6
+ "break": "atom", "cont": "atom", "const": "let", "resource": "fn",
7
+ "let": "let", "fn": "fn", "for": "for", "alt": "alt", "iface": "iface",
8
+ "impl": "impl", "type": "type", "enum": "enum", "mod": "mod",
9
+ "as": "op", "true": "atom", "false": "atom", "assert": "op", "check": "op",
10
+ "claim": "op", "native": "ignore", "unsafe": "ignore", "import": "else-style",
11
+ "export": "else-style", "copy": "op", "log": "op", "log_err": "op",
12
+ "use": "op", "bind": "op", "self": "atom"
13
+ };
14
+ var typeKeywords = function() {
15
+ var keywords = {"fn": "fn", "block": "fn", "obj": "obj"};
16
+ var atoms = "bool uint int i8 i16 i32 i64 u8 u16 u32 u64 float f32 f64 str char".split(" ");
17
+ for (var i = 0, e = atoms.length; i < e; ++i) keywords[atoms[i]] = "atom";
18
+ return keywords;
19
+ }();
20
+ var operatorChar = /[+\-*&%=<>!?|\.@]/;
21
+
22
+ // Tokenizer
23
+
24
+ // Used as scratch variable to communicate multiple values without
25
+ // consing up tons of objects.
26
+ var tcat, content;
27
+ function r(tc, style) {
28
+ tcat = tc;
29
+ return style;
30
+ }
31
+
32
+ function tokenBase(stream, state) {
33
+ var ch = stream.next();
34
+ if (ch == '"') {
35
+ state.tokenize = tokenString;
36
+ return state.tokenize(stream, state);
37
+ }
38
+ if (ch == "'") {
39
+ tcat = "atom";
40
+ if (stream.eat("\\")) {
41
+ if (stream.skipTo("'")) { stream.next(); return "string"; }
42
+ else { return "error"; }
43
+ } else {
44
+ stream.next();
45
+ return stream.eat("'") ? "string" : "error";
46
+ }
47
+ }
48
+ if (ch == "/") {
49
+ if (stream.eat("/")) { stream.skipToEnd(); return "comment"; }
50
+ if (stream.eat("*")) {
51
+ state.tokenize = tokenComment(1);
52
+ return state.tokenize(stream, state);
53
+ }
54
+ }
55
+ if (ch == "#") {
56
+ if (stream.eat("[")) { tcat = "open-attr"; return null; }
57
+ stream.eatWhile(/\w/);
58
+ return r("macro", "meta");
59
+ }
60
+ if (ch == ":" && stream.match(":<")) {
61
+ return r("op", null);
62
+ }
63
+ if (ch.match(/\d/) || (ch == "." && stream.eat(/\d/))) {
64
+ var flp = false;
65
+ if (!stream.match(/^x[\da-f]+/i) && !stream.match(/^b[01]+/)) {
66
+ stream.eatWhile(/\d/);
67
+ if (stream.eat(".")) { flp = true; stream.eatWhile(/\d/); }
68
+ if (stream.match(/^e[+\-]?\d+/i)) { flp = true; }
69
+ }
70
+ if (flp) stream.match(/^f(?:32|64)/);
71
+ else stream.match(/^[ui](?:8|16|32|64)/);
72
+ return r("atom", "number");
73
+ }
74
+ if (ch.match(/[()\[\]{}:;,]/)) return r(ch, null);
75
+ if (ch == "-" && stream.eat(">")) return r("->", null);
76
+ if (ch.match(operatorChar)) {
77
+ stream.eatWhile(operatorChar);
78
+ return r("op", null);
79
+ }
80
+ stream.eatWhile(/\w/);
81
+ content = stream.current();
82
+ if (stream.match(/^::\w/)) {
83
+ stream.backUp(1);
84
+ return r("prefix", "variable-2");
85
+ }
86
+ if (state.keywords.propertyIsEnumerable(content))
87
+ return r(state.keywords[content], content.match(/true|false/) ? "atom" : "keyword");
88
+ return r("name", "variable");
89
+ }
90
+
91
+ function tokenString(stream, state) {
92
+ var ch, escaped = false;
93
+ while (ch = stream.next()) {
94
+ if (ch == '"' && !escaped) {
95
+ state.tokenize = tokenBase;
96
+ return r("atom", "string");
97
+ }
98
+ escaped = !escaped && ch == "\\";
99
+ }
100
+ // Hack to not confuse the parser when a string is split in
101
+ // pieces.
102
+ return r("op", "string");
103
+ }
104
+
105
+ function tokenComment(depth) {
106
+ return function(stream, state) {
107
+ var lastCh = null, ch;
108
+ while (ch = stream.next()) {
109
+ if (ch == "/" && lastCh == "*") {
110
+ if (depth == 1) {
111
+ state.tokenize = tokenBase;
112
+ break;
113
+ } else {
114
+ state.tokenize = tokenComment(depth - 1);
115
+ return state.tokenize(stream, state);
116
+ }
117
+ }
118
+ if (ch == "*" && lastCh == "/") {
119
+ state.tokenize = tokenComment(depth + 1);
120
+ return state.tokenize(stream, state);
121
+ }
122
+ lastCh = ch;
123
+ }
124
+ return "comment";
125
+ };
126
+ }
127
+
128
+ // Parser
129
+
130
+ var cx = {state: null, stream: null, marked: null, cc: null};
131
+ function pass() {
132
+ for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);
133
+ }
134
+ function cont() {
135
+ pass.apply(null, arguments);
136
+ return true;
137
+ }
138
+
139
+ function pushlex(type, info) {
140
+ var result = function() {
141
+ var state = cx.state;
142
+ state.lexical = {indented: state.indented, column: cx.stream.column(),
143
+ type: type, prev: state.lexical, info: info};
144
+ };
145
+ result.lex = true;
146
+ return result;
147
+ }
148
+ function poplex() {
149
+ var state = cx.state;
150
+ if (state.lexical.prev) {
151
+ if (state.lexical.type == ")")
152
+ state.indented = state.lexical.indented;
153
+ state.lexical = state.lexical.prev;
154
+ }
155
+ }
156
+ function typecx() { cx.state.keywords = typeKeywords; }
157
+ function valcx() { cx.state.keywords = valKeywords; }
158
+ poplex.lex = typecx.lex = valcx.lex = true;
159
+
160
+ function commasep(comb, end) {
161
+ function more(type) {
162
+ if (type == ",") return cont(comb, more);
163
+ if (type == end) return cont();
164
+ return cont(more);
165
+ }
166
+ return function(type) {
167
+ if (type == end) return cont();
168
+ return pass(comb, more);
169
+ };
170
+ }
171
+
172
+ function stat_of(comb, tag) {
173
+ return cont(pushlex("stat", tag), comb, poplex, block);
174
+ }
175
+ function block(type) {
176
+ if (type == "}") return cont();
177
+ if (type == "let") return stat_of(letdef1, "let");
178
+ if (type == "fn") return stat_of(fndef);
179
+ if (type == "type") return cont(pushlex("stat"), tydef, endstatement, poplex, block);
180
+ if (type == "enum") return stat_of(enumdef);
181
+ if (type == "mod") return stat_of(mod);
182
+ if (type == "iface") return stat_of(iface);
183
+ if (type == "impl") return stat_of(impl);
184
+ if (type == "open-attr") return cont(pushlex("]"), commasep(expression, "]"), poplex);
185
+ if (type == "ignore" || type.match(/[\]\);,]/)) return cont(block);
186
+ return pass(pushlex("stat"), expression, poplex, endstatement, block);
187
+ }
188
+ function endstatement(type) {
189
+ if (type == ";") return cont();
190
+ return pass();
191
+ }
192
+ function expression(type) {
193
+ if (type == "atom" || type == "name") return cont(maybeop);
194
+ if (type == "{") return cont(pushlex("}"), exprbrace, poplex);
195
+ if (type.match(/[\[\(]/)) return matchBrackets(type, expression);
196
+ if (type.match(/[\]\)\};,]/)) return pass();
197
+ if (type == "if-style") return cont(expression, expression);
198
+ if (type == "else-style" || type == "op") return cont(expression);
199
+ if (type == "for") return cont(pattern, maybetype, inop, expression, expression);
200
+ if (type == "alt") return cont(expression, altbody);
201
+ if (type == "fn") return cont(fndef);
202
+ if (type == "macro") return cont(macro);
203
+ return cont();
204
+ }
205
+ function maybeop(type) {
206
+ if (content == ".") return cont(maybeprop);
207
+ if (content == "::<"){return cont(typarams, maybeop);}
208
+ if (type == "op" || content == ":") return cont(expression);
209
+ if (type == "(" || type == "[") return matchBrackets(type, expression);
210
+ return pass();
211
+ }
212
+ function maybeprop() {
213
+ if (content.match(/^\w+$/)) {cx.marked = "variable"; return cont(maybeop);}
214
+ return pass(expression);
215
+ }
216
+ function exprbrace(type) {
217
+ if (type == "op") {
218
+ if (content == "|") return cont(blockvars, poplex, pushlex("}", "block"), block);
219
+ if (content == "||") return cont(poplex, pushlex("}", "block"), block);
220
+ }
221
+ if (content == "mutable" || (content.match(/^\w+$/) && cx.stream.peek() == ":"
222
+ && !cx.stream.match("::", false)))
223
+ return pass(record_of(expression));
224
+ return pass(block);
225
+ }
226
+ function record_of(comb) {
227
+ function ro(type) {
228
+ if (content == "mutable" || content == "with") {cx.marked = "keyword"; return cont(ro);}
229
+ if (content.match(/^\w*$/)) {cx.marked = "variable"; return cont(ro);}
230
+ if (type == ":") return cont(comb, ro);
231
+ if (type == "}") return cont();
232
+ return cont(ro);
233
+ }
234
+ return ro;
235
+ }
236
+ function blockvars(type) {
237
+ if (type == "name") {cx.marked = "def"; return cont(blockvars);}
238
+ if (type == "op" && content == "|") return cont();
239
+ return cont(blockvars);
240
+ }
241
+
242
+ function letdef1(type) {
243
+ if (type.match(/[\]\)\};]/)) return cont();
244
+ if (content == "=") return cont(expression, letdef2);
245
+ if (type == ",") return cont(letdef1);
246
+ return pass(pattern, maybetype, letdef1);
247
+ }
248
+ function letdef2(type) {
249
+ if (type.match(/[\]\)\};,]/)) return pass(letdef1);
250
+ else return pass(expression, letdef2);
251
+ }
252
+ function maybetype(type) {
253
+ if (type == ":") return cont(typecx, rtype, valcx);
254
+ return pass();
255
+ }
256
+ function inop(type) {
257
+ if (type == "name" && content == "in") {cx.marked = "keyword"; return cont();}
258
+ return pass();
259
+ }
260
+ function fndef(type) {
261
+ if (content == "@" || content == "~") {cx.marked = "keyword"; return cont(fndef);}
262
+ if (type == "name") {cx.marked = "def"; return cont(fndef);}
263
+ if (content == "<") return cont(typarams, fndef);
264
+ if (type == "{") return pass(expression);
265
+ if (type == "(") return cont(pushlex(")"), commasep(argdef, ")"), poplex, fndef);
266
+ if (type == "->") return cont(typecx, rtype, valcx, fndef);
267
+ if (type == ";") return cont();
268
+ return cont(fndef);
269
+ }
270
+ function tydef(type) {
271
+ if (type == "name") {cx.marked = "def"; return cont(tydef);}
272
+ if (content == "<") return cont(typarams, tydef);
273
+ if (content == "=") return cont(typecx, rtype, valcx);
274
+ return cont(tydef);
275
+ }
276
+ function enumdef(type) {
277
+ if (type == "name") {cx.marked = "def"; return cont(enumdef);}
278
+ if (content == "<") return cont(typarams, enumdef);
279
+ if (content == "=") return cont(typecx, rtype, valcx, endstatement);
280
+ if (type == "{") return cont(pushlex("}"), typecx, enumblock, valcx, poplex);
281
+ return cont(enumdef);
282
+ }
283
+ function enumblock(type) {
284
+ if (type == "}") return cont();
285
+ if (type == "(") return cont(pushlex(")"), commasep(rtype, ")"), poplex, enumblock);
286
+ if (content.match(/^\w+$/)) cx.marked = "def";
287
+ return cont(enumblock);
288
+ }
289
+ function mod(type) {
290
+ if (type == "name") {cx.marked = "def"; return cont(mod);}
291
+ if (type == "{") return cont(pushlex("}"), block, poplex);
292
+ return pass();
293
+ }
294
+ function iface(type) {
295
+ if (type == "name") {cx.marked = "def"; return cont(iface);}
296
+ if (content == "<") return cont(typarams, iface);
297
+ if (type == "{") return cont(pushlex("}"), block, poplex);
298
+ return pass();
299
+ }
300
+ function impl(type) {
301
+ if (content == "<") return cont(typarams, impl);
302
+ if (content == "of" || content == "for") {cx.marked = "keyword"; return cont(rtype, impl);}
303
+ if (type == "name") {cx.marked = "def"; return cont(impl);}
304
+ if (type == "{") return cont(pushlex("}"), block, poplex);
305
+ return pass();
306
+ }
307
+ function typarams() {
308
+ if (content == ">") return cont();
309
+ if (content == ",") return cont(typarams);
310
+ if (content == ":") return cont(rtype, typarams);
311
+ return pass(rtype, typarams);
312
+ }
313
+ function argdef(type) {
314
+ if (type == "name") {cx.marked = "def"; return cont(argdef);}
315
+ if (type == ":") return cont(typecx, rtype, valcx);
316
+ return pass();
317
+ }
318
+ function rtype(type) {
319
+ if (type == "name") {cx.marked = "variable-3"; return cont(rtypemaybeparam); }
320
+ if (content == "mutable") {cx.marked = "keyword"; return cont(rtype);}
321
+ if (type == "atom") return cont(rtypemaybeparam);
322
+ if (type == "op" || type == "obj") return cont(rtype);
323
+ if (type == "fn") return cont(fntype);
324
+ if (type == "{") return cont(pushlex("{"), record_of(rtype), poplex);
325
+ return matchBrackets(type, rtype);
326
+ }
327
+ function rtypemaybeparam() {
328
+ if (content == "<") return cont(typarams);
329
+ return pass();
330
+ }
331
+ function fntype(type) {
332
+ if (type == "(") return cont(pushlex("("), commasep(rtype, ")"), poplex, fntype);
333
+ if (type == "->") return cont(rtype);
334
+ return pass();
335
+ }
336
+ function pattern(type) {
337
+ if (type == "name") {cx.marked = "def"; return cont(patternmaybeop);}
338
+ if (type == "atom") return cont(patternmaybeop);
339
+ if (type == "op") return cont(pattern);
340
+ if (type.match(/[\]\)\};,]/)) return pass();
341
+ return matchBrackets(type, pattern);
342
+ }
343
+ function patternmaybeop(type) {
344
+ if (type == "op" && content == ".") return cont();
345
+ if (content == "to") {cx.marked = "keyword"; return cont(pattern);}
346
+ else return pass();
347
+ }
348
+ function altbody(type) {
349
+ if (type == "{") return cont(pushlex("}", "alt"), altblock1, poplex);
350
+ return pass();
351
+ }
352
+ function altblock1(type) {
353
+ if (type == "}") return cont();
354
+ if (type == "|") return cont(altblock1);
355
+ if (content == "when") {cx.marked = "keyword"; return cont(expression, altblock2);}
356
+ if (type.match(/[\]\);,]/)) return cont(altblock1);
357
+ return pass(pattern, altblock2);
358
+ }
359
+ function altblock2(type) {
360
+ if (type == "{") return cont(pushlex("}", "alt"), block, poplex, altblock1);
361
+ else return pass(altblock1);
362
+ }
363
+
364
+ function macro(type) {
365
+ if (type.match(/[\[\(\{]/)) return matchBrackets(type, expression);
366
+ return pass();
367
+ }
368
+ function matchBrackets(type, comb) {
369
+ if (type == "[") return cont(pushlex("]"), commasep(comb, "]"), poplex);
370
+ if (type == "(") return cont(pushlex(")"), commasep(comb, ")"), poplex);
371
+ if (type == "{") return cont(pushlex("}"), commasep(comb, "}"), poplex);
372
+ return cont();
373
+ }
374
+
375
+ function parse(state, stream, style) {
376
+ var cc = state.cc;
377
+ // Communicate our context to the combinators.
378
+ // (Less wasteful than consing up a hundred closures on every call.)
379
+ cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc;
380
+
381
+ while (true) {
382
+ var combinator = cc.length ? cc.pop() : block;
383
+ if (combinator(tcat)) {
384
+ while(cc.length && cc[cc.length - 1].lex)
385
+ cc.pop()();
386
+ return cx.marked || style;
387
+ }
388
+ }
389
+ }
390
+
391
+ return {
392
+ startState: function() {
393
+ return {
394
+ tokenize: tokenBase,
395
+ cc: [],
396
+ lexical: {indented: -indentUnit, column: 0, type: "top", align: false},
397
+ keywords: valKeywords,
398
+ indented: 0
399
+ };
400
+ },
401
+
402
+ token: function(stream, state) {
403
+ if (stream.sol()) {
404
+ if (!state.lexical.hasOwnProperty("align"))
405
+ state.lexical.align = false;
406
+ state.indented = stream.indentation();
407
+ }
408
+ if (stream.eatSpace()) return null;
409
+ tcat = content = null;
410
+ var style = state.tokenize(stream, state);
411
+ if (style == "comment") return style;
412
+ if (!state.lexical.hasOwnProperty("align"))
413
+ state.lexical.align = true;
414
+ if (tcat == "prefix") return style;
415
+ if (!content) content = stream.current();
416
+ return parse(state, stream, style);
417
+ },
418
+
419
+ indent: function(state, textAfter) {
420
+ if (state.tokenize != tokenBase) return 0;
421
+ var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical,
422
+ type = lexical.type, closing = firstChar == type;
423
+ if (type == "stat") return lexical.indented + indentUnit;
424
+ if (lexical.align) return lexical.column + (closing ? 0 : 1);
425
+ return lexical.indented + (closing ? 0 : (lexical.info == "alt" ? altIndentUnit : indentUnit));
426
+ },
427
+
428
+ electricChars: "{}"
429
+ };
430
+ });
431
+
432
+ CodeMirror.defineMIME("text/x-rustsrc", "rust");