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,1996 @@
1
+ Smalltalk current createPackage: 'Presentation' properties: #{}!
2
+ Widget subclass: #Slide
3
+ instanceVariableNames: 'presentation'
4
+ category: 'Presentation'!
5
+
6
+ !Slide methodsFor: 'accessing'!
7
+
8
+ presentation
9
+ ^presentation
10
+ !
11
+
12
+ presentation: aPresentation
13
+ presentation := aPresentation
14
+ !
15
+
16
+ id
17
+ ^ self class name
18
+ !
19
+
20
+ cssClass
21
+ ^'slide'
22
+ !
23
+
24
+ backgroundColor
25
+ ^'#555'
26
+ !
27
+
28
+ title
29
+ ^ self id
30
+ ! !
31
+
32
+ !Slide methodsFor: 'actions'!
33
+
34
+ show
35
+ self backgroundColor ifNotNil: [
36
+ (window jQuery: '#slides') css: 'background' color: self backgroundColor].
37
+ (window jQuery: '.slide') hide: self presentation slideTransition options: #() duration: 300.
38
+ (window jQuery: '#', self id) show: self presentation slideTransition options: #() duration: 300.
39
+ ! !
40
+
41
+ !Slide methodsFor: 'rendering'!
42
+
43
+ renderOn: html
44
+ html div class: self cssClass; id: self id; with: [
45
+ self renderSlideOn: html.
46
+ self renderMetaOn: html]
47
+ !
48
+
49
+ renderSlideOn: html
50
+ !
51
+
52
+ renderMetaOn: html
53
+ html div
54
+ id: 'meta';
55
+ with: [
56
+ html p class: 'title'; with: self presentation title.
57
+ html p class: 'description'; with: self presentation description.
58
+ html a class: 'author'; with: self presentation author; href: 'mailto:', self presentation email.
59
+ html a class: 'url'; with: self presentation url; href: self presentation url]
60
+ ! !
61
+
62
+ !Slide class methodsFor: 'instance creation'!
63
+
64
+ on: aPresentation
65
+ ^self new
66
+ presentation: aPresentation;
67
+ yourself
68
+ ! !
69
+
70
+ Widget subclass: #PresentationNavigator
71
+ instanceVariableNames: 'presentationBrush currentPresentation slideSelect'
72
+ category: 'Presentation'!
73
+
74
+ !PresentationNavigator methodsFor: 'accessing'!
75
+
76
+ currentPresentation: aPresentation
77
+ currentPresentation := aPresentation.
78
+ !
79
+
80
+ currentPresentation
81
+ ^ currentPresentation ifNil: [currentPresentation := Presentation concretePresentations first new].
82
+ !
83
+
84
+ style
85
+ ^ '
86
+ #navigator {
87
+ z-index: 1;
88
+ position: fixed;
89
+ top: 0;
90
+ left: 50%;
91
+ margin-left: -150px;
92
+ padding: 5px;
93
+ border-radius: 5px;
94
+ -moz-border-radius: 5px;
95
+ -webkit-border-radius: 5px;
96
+ background: #333;
97
+ opacity: 0.3;
98
+ color: #eee;
99
+ }
100
+
101
+ #navigator a {
102
+ font-weight: bold;
103
+ color: #eee;
104
+ text-decoration: none;
105
+ cursor: pointer;
106
+ padding: 0 2px;
107
+ font-size: 14px;
108
+ }
109
+
110
+ #navigator:hover {
111
+ opacity: 0.8;
112
+ }
113
+ '
114
+ ! !
115
+
116
+ !PresentationNavigator methodsFor: 'callbacks'!
117
+
118
+ selectPresentation: aPresentationClass
119
+ self currentPresentation: aPresentationClass new.
120
+ self renderCurrentPresentation.
121
+ !
122
+
123
+ selectPresentationNamed: aString
124
+ |presentationClass|
125
+ presentationClass := (Smalltalk current at: aString).
126
+ presentationClass ifNotNil: [ self selectPresentation: presentationClass ].
127
+ !
128
+
129
+ previousSlide
130
+ self currentPresentation previousSlide.
131
+ self updateHash.
132
+ !
133
+
134
+ nextSlide
135
+ self currentPresentation nextSlide.
136
+ self updateHash.
137
+ !
138
+
139
+ reload
140
+ |slideIndex|
141
+ slideIndex := self currentPresentation currentSlideIndex.
142
+ self currentPresentation: self currentPresentation class new.
143
+ self renderCurrentPresentation.
144
+ self selectSlideAt: slideIndex.
145
+ !
146
+
147
+ selectSlideAt: anInteger
148
+ self currentPresentation moveAt: anInteger.
149
+ self updateHash.
150
+ !
151
+
152
+ updateHash
153
+ document location hash: self currentPresentation class name, '-', self currentPresentation currentSlideIndex.
154
+ ! !
155
+
156
+ !PresentationNavigator methodsFor: 'hash'!
157
+
158
+ checkHash
159
+ | hash presentation |
160
+ hash := (document location hash replace: '^#' with: '') tokenize: '-'.
161
+ presentation := Presentation concretePresentations
162
+ detect: [:aPresentationClass | aPresentationClass name == hash first]
163
+ ifNone: [^ self].
164
+ presentation == self currentPresentation class ifFalse: [
165
+ self selectPresentationNamed: presentation.
166
+ self selectSlideAt: hash last
167
+ ].
168
+ !
169
+
170
+ checkHashChange
171
+ (window jQuery: window) bind: 'hashchange' do: [self checkHash]
172
+ ! !
173
+
174
+ !PresentationNavigator methodsFor: 'keybindings'!
175
+
176
+ setKeybindings
177
+ (window jQuery: document) keyup: [:e || node |
178
+ node := e target nodeName asLowercase.
179
+ (node = 'textarea' or: [node = 'input']) ifFalse: [
180
+ e keyCode = 39 ifTrue: [self nextSlide].
181
+ e keyCode = 37 ifTrue: [self previousSlide]]]
182
+ ! !
183
+
184
+ !PresentationNavigator methodsFor: 'rendering'!
185
+
186
+ renderToolsOn: html
187
+ html a
188
+ with: 'IDE';
189
+ onClick: [TabManager current open].
190
+ html a
191
+ with: 'Reload';
192
+ onClick: [self reload].
193
+ html a
194
+ with: '←';
195
+ onClick: [self previousSlide].
196
+ html a
197
+ with: '→';
198
+ onClick: [self nextSlide].
199
+ !
200
+
201
+ renderPresentationSelectOn: html
202
+ |presentationSelect|
203
+ presentationSelect := html select.
204
+ presentationSelect
205
+ onChange: [self selectPresentationNamed: presentationSelect asJQuery val];
206
+ with: [ Presentation concretePresentationsDo: [:aPresentationClass |
207
+ html option
208
+ value: aPresentationClass name;
209
+ with: aPresentationClass title ] ].
210
+ !
211
+
212
+ open
213
+ (window jQuery: document) ready: [
214
+ self
215
+ appendToJQuery: 'body' asJQuery;
216
+ setKeybindings;
217
+ checkHashChange.
218
+ ].
219
+ !
220
+
221
+ renderOn: html
222
+ html style
223
+ type: 'text/css';
224
+ with: self style.
225
+ html div
226
+ id: 'navigator';
227
+ with: [ self
228
+ renderToolsOn: html;
229
+ renderPresentationSelectOn: html;
230
+ renderSlideSelectOn: html].
231
+
232
+ presentationBrush := html div
233
+ id: 'presentation';
234
+ yourself.
235
+
236
+ self checkHash.
237
+ self renderCurrentPresentation.
238
+ !
239
+
240
+ renderCurrentPresentation
241
+ presentationBrush contents: [:html |
242
+ self currentPresentation renderOn: html.
243
+ ].
244
+ self updateSlideSelect.
245
+ !
246
+
247
+ renderSlideSelectOn: html
248
+ slideSelect := html select.
249
+ slideSelect onChange: [ self selectSlideAt: slideSelect asJQuery val ].
250
+ self updateSlideSelect.
251
+ !
252
+
253
+ updateSlideSelect
254
+ slideSelect contents: [:html| |index|
255
+ index := 0.
256
+ self currentPresentation slidesDo: [ :aSlide|
257
+ index := index + 1.
258
+ html option
259
+ value: index;
260
+ with: aSlide title ] ].
261
+ ! !
262
+
263
+ !PresentationNavigator class methodsFor: 'initialize'!
264
+
265
+ initialize
266
+ ^ self open
267
+ !
268
+
269
+ open
270
+ ^ self new open
271
+ ! !
272
+
273
+ Widget subclass: #Presentation
274
+ instanceVariableNames: 'currentSlide slides'
275
+ category: 'Presentation'!
276
+
277
+ !Presentation methodsFor: 'accessing'!
278
+
279
+ title
280
+ ^ self class title.
281
+ !
282
+
283
+ author
284
+ ^'John Smith'
285
+ !
286
+
287
+ url
288
+ ^'http://jtalk-project.org'
289
+ !
290
+
291
+ description
292
+ ^'A presentation written in Jtalk'
293
+ !
294
+
295
+ email
296
+ ^'john@smith.com'
297
+ !
298
+
299
+ slides
300
+ slides ifNil: [self initSlides].
301
+ ^slides
302
+ !
303
+
304
+ slideClasses
305
+ ^self subclassResponsibility
306
+ !
307
+
308
+ currentSlide
309
+ ^currentSlide
310
+ !
311
+
312
+ currentSlide: aSlide
313
+ currentSlide := aSlide
314
+ !
315
+
316
+ slideTransition
317
+ ^'fade'
318
+ !
319
+
320
+ style
321
+ "Should return a CSS style"
322
+ ^ ''
323
+ ! !
324
+
325
+ !Presentation methodsFor: 'actions'!
326
+
327
+ nextSlide
328
+ | next |
329
+ self currentSlide ifNotNil: [
330
+ next := self slides
331
+ at: (self currentSlideIndex) + 1
332
+ ifAbsent: [nil].
333
+ next ifNotNil: [currentSlide := next. next show]]
334
+ !
335
+
336
+ showCurrentSlide
337
+ self currentSlide ifNotNil: [
338
+ '.slide' asJQuery hide.
339
+ ('#', self currentSlide id) asJQuery show.
340
+ 'title' asJQuery text: self title, ' - ', self currentSlide id.
341
+ ]
342
+ !
343
+
344
+ previousSlide
345
+ | next |
346
+ self currentSlide ifNotNil: [
347
+ next := self slides
348
+ at: (self currentSlideIndex) - 1
349
+ ifAbsent: [nil].
350
+ next ifNotNil: [currentSlide := next. next show]]
351
+ !
352
+
353
+ moveAt: anInteger
354
+ | next |
355
+ next := self slides
356
+ at: anInteger
357
+ ifAbsent: [nil].
358
+ next ifNotNil: [currentSlide := next. next show]
359
+ !
360
+
361
+ currentSlideIndex
362
+ ^ self slides indexOf: self currentSlide ifAbsent: [1]
363
+ ! !
364
+
365
+ !Presentation methodsFor: 'enumerating'!
366
+
367
+ slidesDo: aBlockWithArg
368
+ self slides do: [:aSlide| aBlockWithArg value: aSlide].
369
+ ! !
370
+
371
+ !Presentation methodsFor: 'initialization'!
372
+
373
+ initSlides
374
+ slides := self slideClasses collect: [:each | each on: self]
375
+ ! !
376
+
377
+ !Presentation methodsFor: 'rendering'!
378
+
379
+ renderOn: html
380
+ html style
381
+ type: 'text/css';
382
+ with: self style.
383
+ html div
384
+ id: 'slides';
385
+ with: [self renderSlidesOn: html]
386
+ !
387
+
388
+ renderSlidesOn: html
389
+ self slides do: [:each |
390
+ each renderOn: html].
391
+ currentSlide ifNil: [currentSlide := self slides first].
392
+ self showCurrentSlide
393
+ ! !
394
+
395
+ Presentation class instanceVariableNames: 'current'!
396
+
397
+ !Presentation class methodsFor: 'accessing'!
398
+
399
+ concretePresentations
400
+ ^ self allSubclasses select: [:aPresentationClass| aPresentationClass isConcrete]
401
+ !
402
+
403
+ title
404
+ ^ 'Slides'
405
+ ! !
406
+
407
+ !Presentation class methodsFor: 'enumerating'!
408
+
409
+ concretePresentationsDo: aBlockWithArg
410
+ self concretePresentations do: aBlockWithArg.
411
+ ! !
412
+
413
+ !Presentation class methodsFor: 'testing'!
414
+
415
+ isConcrete
416
+ ^false
417
+ ! !
418
+
419
+ Slide subclass: #FOSDEMSlide
420
+ instanceVariableNames: ''
421
+ category: 'Presentation'!
422
+
423
+ !FOSDEMSlide methodsFor: 'accessing'!
424
+
425
+ codeSnippet
426
+ self subclassResponsibility
427
+ ! !
428
+
429
+ !FOSDEMSlide methodsFor: 'rendering'!
430
+
431
+ renderSnippet: aString on: html
432
+ (SourceArea new
433
+ renderOn: html;
434
+ editor) setValue: aString.
435
+ !
436
+
437
+ renderCodeSnippetOn: html
438
+ (SourceArea new
439
+ renderOn: html;
440
+ editor) setValue: self codeSnippet.
441
+ ! !
442
+
443
+ FOSDEMSlide subclass: #FOSDEMREPLSlide
444
+ instanceVariableNames: ''
445
+ category: 'Presentation'!
446
+
447
+ !FOSDEMREPLSlide methodsFor: 'rendering'!
448
+
449
+ renderSlideOn: html
450
+ html h1: 'REPL'.
451
+ self renderCodeSnippetOn: html.
452
+ !
453
+
454
+ codeSnippet
455
+ ^
456
+ './bin/amber
457
+ fs := require value: ''fs''.
458
+ fs readdir: ''/tmp'' do: [:err :file| console log: file]'.
459
+ ! !
460
+
461
+ FOSDEMSlide subclass: #FOSDEMJSToSmalltalk
462
+ instanceVariableNames: ''
463
+ category: 'Presentation'!
464
+
465
+ !FOSDEMJSToSmalltalk methodsFor: 'accessing'!
466
+
467
+ cssClass
468
+ ^ 'slide blue3d'
469
+ !
470
+
471
+ codeSnippet
472
+ ^
473
+ 'var counter = window.smalltalk.Counter._new();
474
+ counter._appendToJQuery_($(''#jsToSmalltalk''));'.
475
+ ! !
476
+
477
+ !FOSDEMJSToSmalltalk methodsFor: 'rendering'!
478
+
479
+ renderSlideOn: html
480
+ html h1: 'Call Smalltalk from Javascript'.
481
+ html div
482
+ id: 'jsToSmalltalk';
483
+ style: 'float: left'.
484
+ self renderCodeSnippetOn: html.
485
+ ! !
486
+
487
+ FOSDEMSlide subclass: #FOSDEMCanvasSlide
488
+ instanceVariableNames: 'c2d canvas'
489
+ category: 'Presentation'!
490
+
491
+ !FOSDEMCanvasSlide methodsFor: 'accessing'!
492
+
493
+ cssClass
494
+ ^ 'slide red3d'
495
+ ! !
496
+
497
+ !FOSDEMCanvasSlide methodsFor: 'drawing'!
498
+
499
+ drawOnCanvas
500
+ |c2d|
501
+ c2d := canvas element getContext: '2d'.
502
+ c2d
503
+ clearRect: 0
504
+ y: 0
505
+ width: canvas element width
506
+ height: canvas element height.
507
+
508
+ 40 atRandom timesRepeat: [ |rgba|
509
+ rgba := ',' join: {255 atRandom. 255 atRandom. 255 atRandom. 10 atRandom / 10}.
510
+ c2d at: 'fillStyle' put: 'rgba(', rgba, ')'.
511
+ c2d
512
+ fillRect: 600 atRandom
513
+ y: 300 atRandom
514
+ width: 200 atRandom
515
+ height: 200 atRandom ]
516
+ ! !
517
+
518
+ !FOSDEMCanvasSlide methodsFor: 'rendering'!
519
+
520
+ renderSlideOn: html
521
+ html h1: 'Playing with canvas'.
522
+ canvas := html canvas
523
+ width: 700;
524
+ height: 400.
525
+
526
+ self updateCanvas.
527
+ ! !
528
+
529
+ !FOSDEMCanvasSlide methodsFor: 'updating'!
530
+
531
+ updateCanvas
532
+ self drawOnCanvas.
533
+ window setTimeout: [self updateCanvas] delay: 500.
534
+ ! !
535
+
536
+ FOSDEMSlide subclass: #FOSDEMJSPlayGroundSlide
537
+ instanceVariableNames: ''
538
+ category: 'Presentation'!
539
+
540
+ !FOSDEMJSPlayGroundSlide methodsFor: 'accessing'!
541
+
542
+ codeSnippet
543
+ ^'|logo|
544
+ logo:=''img#amberlogo'' asJQuery.
545
+
546
+ logo
547
+ css:''-webkit-transition'' put:''all 10s ease-in-out''.
548
+
549
+ <logo.css(''-webkit-transform'', ''rotateY(360deg)'');>.
550
+
551
+ logo click: [window alert: ''This is cool !!''].
552
+
553
+ logo inspect'.
554
+ ! !
555
+
556
+ !FOSDEMJSPlayGroundSlide methodsFor: 'rendering'!
557
+
558
+ renderSlideOn: html
559
+ html div
560
+ class: 'section center';
561
+ with: [
562
+ self renderCodeSnippetOn: html.
563
+ html img
564
+ id: 'amberlogo';
565
+ src: 'fosdem2012/images/amber.png' ]
566
+ ! !
567
+
568
+ FOSDEMSlide subclass: #FOSDEMAmberBackend
569
+ instanceVariableNames: ''
570
+ category: 'Presentation'!
571
+
572
+ !FOSDEMAmberBackend methodsFor: 'accessing'!
573
+
574
+ cssClass
575
+ ^ 'slide green3d'
576
+ ! !
577
+
578
+ !FOSDEMAmberBackend methodsFor: 'rendering'!
579
+
580
+ renderSlideOn: html
581
+ html div
582
+ class: 'section center';
583
+ with: [ html h1: 'Need a backend ?'.
584
+ {'nodejs.png'. 'php.gif'. 'rails.png'. 'pharo.png'. 'ambrhino.jpg'} do: [:aString |
585
+ html img: 'fosdem2012/images/', aString.
586
+ ]
587
+ ]
588
+ ! !
589
+
590
+ FOSDEMSlide subclass: #FOSDEMBookletSlide
591
+ instanceVariableNames: ''
592
+ category: 'Presentation'!
593
+
594
+ !FOSDEMBookletSlide methodsFor: 'accessing'!
595
+
596
+ cssClass
597
+ ^ 'slide blue3d'
598
+ ! !
599
+
600
+ !FOSDEMBookletSlide methodsFor: 'css'!
601
+
602
+ style
603
+ ^ '
604
+ #book { font-size: 1.4em; }
605
+ #book .b-load .b-wrap-right { background-color: #DEC3A9;}
606
+ #book .b-load .b-wrap-left { background-color: #DDD;}
607
+ '
608
+ ! !
609
+
610
+ !FOSDEMBookletSlide methodsFor: 'rendering'!
611
+
612
+ renderSlideOn: html
613
+ self renderBookOn: html.
614
+ html link
615
+ rel:'stylesheet';
616
+ href: 'fosdem2012/lib/booklet/jquery.booklet.1.2.0.css'.
617
+
618
+ html style: self style.
619
+
620
+ jQuery
621
+ getScript: 'fosdem2012/lib/booklet/jquery.booklet.1.2.0.min.js'
622
+ do: ['#book' asJQuery booklet: self bookletOptions].
623
+ !
624
+
625
+ renderBookOn: html
626
+ html div
627
+ id: 'book';
628
+ with: [ html div
629
+ class: 'b-load';
630
+ with: [ html
631
+ div: 'Amber makes it easy to plug existing javascript libraires';
632
+ div: 'Here is an example with the jQuery Booklet plugin';
633
+ div: 'Want to see how ?';
634
+ div: [ html button
635
+ onClick: [Browser openOn: FOSDEMBookletSlide ];
636
+ with: 'Just browse the code :)'. ]
637
+
638
+ ]
639
+ ].
640
+ !
641
+
642
+ bookletOptions
643
+ ^ #{
644
+ 'arrows' -> true.
645
+ 'keyboard' -> false.
646
+ 'pageNumbers' -> false.
647
+ 'closed' -> true
648
+ }
649
+ ! !
650
+
651
+ FOSDEMSlide subclass: #FOSDEMIntroSlide
652
+ instanceVariableNames: ''
653
+ category: 'Presentation'!
654
+
655
+ !FOSDEMIntroSlide methodsFor: 'not yet classified'!
656
+
657
+ renderSlideOn: html
658
+ html div class: 'section center animate'; with: [
659
+ html img src: 'fosdem2012/images/amber.png'.
660
+ html p: self presentation author.
661
+ html p: self presentation description.
662
+ html p: [
663
+ html with: self presentation email]].
664
+ ! !
665
+
666
+ Presentation subclass: #ESUG2011Presentation
667
+ instanceVariableNames: ''
668
+ category: 'Presentation'!
669
+
670
+ !ESUG2011Presentation methodsFor: 'accessing'!
671
+
672
+ description
673
+ ^'ESUG 2011, Edinburgh'
674
+ !
675
+
676
+ author
677
+ ^'Nicolas Petton'
678
+ !
679
+
680
+ email
681
+ ^'nico@objectfusion.fr'
682
+ !
683
+
684
+ url
685
+ ^'http://jtalk-project.org'
686
+ !
687
+
688
+ slideClasses
689
+ ^Array new
690
+ add: IntroSlide;
691
+ add: AboutSlide;
692
+ add: WhatIsJtalkSlide;
693
+ add: JtalkFeaturesSlide;
694
+ add: WorkspaceSlide;
695
+ add: IDESlide;
696
+ add: CountersSlide;
697
+ add: JtalkAndJavascriptSlide;
698
+ add: JtalkAndJavascriptSlide2;
699
+ add: JtalkAndJavascriptSlide3;
700
+ add: JtalkAndJavascriptSlide4;
701
+ add: JtalkAndCLI;
702
+ add: JtalkAndNode;
703
+ add: JtalkAndNode2;
704
+ add: JtalkAndNode3;
705
+ add: JtalkAndWebOS;
706
+ add: JtalkAndEnyo;
707
+ add: ContributionsSlide;
708
+ yourself
709
+ !
710
+
711
+ style
712
+ ^'
713
+ body {
714
+ font-family: Helvetica,Arial,sans;
715
+ }
716
+
717
+ #slides {
718
+ width: 100%;
719
+ height: 100%;
720
+ overflow: hidden;
721
+ position: absolute;
722
+ top: 0;
723
+ bottom: 0;
724
+ left: 0;
725
+ right: 0;
726
+ background: #555;
727
+ }
728
+
729
+ .slide {
730
+ background: #fff;
731
+ color: #444;
732
+ text-align: left;
733
+ font-size: 20px;
734
+ line-height: 1.8em;
735
+ height: 500px;
736
+ width: 700px;
737
+ padding: 60px;
738
+ position: absolute;
739
+ left: 50%;
740
+ top: 50%;
741
+ margin-left: -420px;
742
+ margin-top: -320px;
743
+ box-shadow: 0 0 20px #111;
744
+ -moz-box-shadow: 0 0 20px #111;
745
+ -webkit-box-shadow: 0 0 20px #111;
746
+ }
747
+
748
+ .slide.transparent {
749
+ background: transparent;
750
+ box-shadow: 0 0 0 none;
751
+ -moz-box-shadow: 0 0 0 transparent;
752
+ -webkit-box-shadow: 0 0 0 transparent;
753
+ color: #fff !!important;
754
+ }
755
+
756
+ .slide.black {
757
+ background: black;
758
+ background-image: -webkit-gradient(
759
+ linear,
760
+ left bottom,
761
+ left top,
762
+ color-stop(0.38, rgb(79,79,79)),
763
+ color-stop(0.69, rgb(33,33,33)),
764
+ color-stop(0.86, rgb(4,4,4))
765
+ );
766
+ background-image: -moz-linear-gradient(
767
+ center bottom,
768
+ rgb(79,79,79) 38%,
769
+ rgb(33,33,33) 69%,
770
+ rgb(4,4,4) 86%
771
+ );
772
+ color: #fff !!important;
773
+ }
774
+
775
+ .slide.black h1, .slide.black h2, .slide.black h3,
776
+ .slide.transparent h1, .slide.transparent h2, .slide.transparent h3 {
777
+ color: #fff;
778
+ text-shadow: 0 1px 4px #aaa;
779
+ }
780
+
781
+ .slide.black a, .slide.transparent a {
782
+ color: #ccc;
783
+ }
784
+
785
+ .slide.white {
786
+ color: #333 !!important;
787
+ }
788
+
789
+ .slide.white h1, .slide.white h2, .slide.white h3 {
790
+ color: #333;
791
+ }
792
+
793
+ .slide.white a {
794
+ color: #333;
795
+ }
796
+
797
+
798
+ .slide h1, .slide h2, .slide h3 {
799
+ color: #333;
800
+ /* text-align: center; */
801
+ }
802
+
803
+ .slide h1 {
804
+ font-family: "Droid Sans";
805
+ font-size: 36px;
806
+ text-shadow: 0 1px 4px #aaa;
807
+ margin-top: 30px;
808
+ margin-bottom: 50px;
809
+ }
810
+
811
+ /* .slide ul, .slide li { */
812
+ /* padding: 0; */
813
+ /* margin: 0; */
814
+ /* } */
815
+
816
+ .slide button {
817
+ font-size: 18px;
818
+ }
819
+
820
+ .slide a {
821
+ color: #555;
822
+ text-decoration: none;
823
+ cursor: pointer;
824
+ }
825
+
826
+ .slide a:hover {
827
+ color: #fff;
828
+ background: #555;
829
+ }
830
+
831
+ .slide .right {
832
+ text-align: right;
833
+ }
834
+
835
+ .slide .section.center {
836
+ text-align: center;
837
+ display: table-cell;
838
+ vertical-align: middle;
839
+ width: 700px;
840
+ height: 500px;
841
+ }
842
+
843
+ .slide code {
844
+ font-family: "Droid Sans Mono";
845
+ color: #444;
846
+ border: 1px solid #ddd;
847
+ background: #eee;
848
+ border-radius: 4px;
849
+ padding: 2px;
850
+ font-size: 16px;
851
+ }
852
+
853
+ .slide .code2 {
854
+ font-family: "Droid Sans Mono";
855
+ line-height: 1.2em;
856
+ color: #444;
857
+ padding: 2px;
858
+ font-size: 16px;
859
+ }
860
+
861
+
862
+ .slide .CodeMirror {
863
+ width: 500px;
864
+ height: 300px;
865
+ text-align: left;
866
+ }
867
+
868
+ .slide .CodeMirror-scroll {
869
+ text-align: left;
870
+ }
871
+
872
+ .slide .fancy {
873
+ margin-top: 30px;
874
+ -webkit-transform: rotate(-10deg);
875
+ -moz-transform: rotate(-10deg);
876
+ transform: rotate(-10deg);
877
+ color: red;
878
+ }
879
+
880
+ .slide .comment {
881
+ opacity: 0.6;
882
+ font-weight: normal;
883
+ }
884
+
885
+ .slide .red {
886
+ color: red;
887
+ }
888
+
889
+ .slide .blue {
890
+ color: blue;
891
+ }
892
+
893
+ .slide#WhatIsJtalk {
894
+ background: white url("esug2011/images/balloon.jpg") 650px 50px no-repeat;
895
+ }
896
+
897
+ .slide#ide {
898
+ background: black url("esug2011/images/ide_star_wars.png") center center no-repeat;
899
+ }
900
+
901
+ .slide#JtalkAndCLI {
902
+ background: white url("esug2011/images/terminal.png") 620px 20px no-repeat;
903
+ }
904
+
905
+ .slide#JtalkAndNode {
906
+ background: white url("esug2011/images/nodejs.png") 580px 40px no-repeat;
907
+ }
908
+ .slide#JtalkAndNode2 {
909
+ background: white url("esug2011/images/nodejs.png") 580px 40px no-repeat;
910
+ }
911
+
912
+ .slide#JtalkAndNode3 {
913
+ background: white url("esug2011/images/nodejs.png") 580px 40px no-repeat;
914
+ }
915
+
916
+ .slide#JtalkAndWebOS {
917
+ background: white url("esug2011/images/devices.jpg") 380px 280px no-repeat;
918
+ }
919
+
920
+ .slide#JtalkAndEnyo {
921
+ background: white url("esug2011/images/enyo.png") 130px 150px no-repeat;
922
+ }
923
+
924
+ .slide#links {
925
+ background: white url("esug2011/images/asterix.png") 30px 130px no-repeat;
926
+ }
927
+
928
+ .slide#links .section {
929
+ margin-left: 250px;
930
+ margin-top: 200px;
931
+ font-family: "Droid Sans";
932
+ font-size: 26px;
933
+ font-weight: bold;
934
+ }
935
+
936
+
937
+ #meta {
938
+ position: absolute;
939
+ font-size: 12px;
940
+ opacity: 0.6;
941
+ bottom: 0;
942
+ right: 0;
943
+ z-index: 2;
944
+ background: #333;
945
+ text-align: right;
946
+ padding: 0 10px;
947
+ line-height: 1.8em;
948
+ color: #eee;
949
+ border-top-left-radius: 5px;
950
+ }
951
+
952
+ #meta:hover {
953
+ opacity: 0.8;
954
+ }
955
+
956
+ #meta p {
957
+ display: inline;
958
+ padding: 0 5px;
959
+ }
960
+
961
+ #meta a {
962
+ //background: #ccc;
963
+ color: #ccc;
964
+ text-decoration: none;
965
+ padding: 0 5px;
966
+ }
967
+
968
+ .slide {
969
+
970
+ }
971
+ '
972
+ ! !
973
+
974
+ ESUG2011Presentation class instanceVariableNames: 'current'!
975
+
976
+ !ESUG2011Presentation class methodsFor: 'accessing'!
977
+
978
+ title
979
+ ^'Jtalk'
980
+ ! !
981
+
982
+ !ESUG2011Presentation class methodsFor: 'testing'!
983
+
984
+ isConcrete
985
+ ^true
986
+ ! !
987
+
988
+ Slide subclass: #IntroSlide
989
+ instanceVariableNames: ''
990
+ category: 'Presentation'!
991
+
992
+ !IntroSlide methodsFor: 'accessing'!
993
+
994
+ id
995
+ ^'intro'
996
+ !
997
+
998
+ cssClass
999
+ ^'slide black'
1000
+ ! !
1001
+
1002
+ !IntroSlide methodsFor: 'rendering'!
1003
+
1004
+ renderSlideOn: html
1005
+ html div class: 'section center'; with: [
1006
+ html h1 with: 'Jtalk, the Smalltalk for Web developers'.
1007
+ html p with: self presentation author, ' & Göran Krampe - ', self presentation description.
1008
+ html p with: [
1009
+ html a
1010
+ with: self presentation email;
1011
+ href: 'mailto:', self presentation email].
1012
+ html p with: [
1013
+ html a
1014
+ with: 'goran@krampe.se';
1015
+ href: 'mailto:goran@krampe.se'].
1016
+
1017
+ html p with: [
1018
+ html a
1019
+ with: 'objectfusion.fr';
1020
+ href: 'http://www.objectfusion.fr']]
1021
+ ! !
1022
+
1023
+ Slide subclass: #WhatIsJtalkSlide
1024
+ instanceVariableNames: ''
1025
+ category: 'Presentation'!
1026
+
1027
+ !WhatIsJtalkSlide methodsFor: 'accessing'!
1028
+
1029
+ id
1030
+ ^'WhatIsJtalk'
1031
+ ! !
1032
+
1033
+ !WhatIsJtalkSlide methodsFor: 'rendering'!
1034
+
1035
+ renderSlideOn: html
1036
+ html div class: 'section center'; with: [
1037
+ html h1 with: 'Jtalk in a nutshell'.
1038
+ html h2 with: 'Jtalk is an implementation of Smalltalk'.
1039
+ html h2 with: 'Jtalk runs on top of the JavaScript runtime'.
1040
+ html h2 with: 'Jtalk is an opensource project (MIT)'.
1041
+ html h2 class: 'fancy'; with: 'Jtalk is cool!!']
1042
+ ! !
1043
+
1044
+ Slide subclass: #JtalkFeaturesSlide
1045
+ instanceVariableNames: ''
1046
+ category: 'Presentation'!
1047
+
1048
+ !JtalkFeaturesSlide methodsFor: 'accessing'!
1049
+
1050
+ id
1051
+ ^'features'
1052
+ ! !
1053
+
1054
+ !JtalkFeaturesSlide methodsFor: 'rendering'!
1055
+
1056
+ renderSlideOn: html
1057
+ html h1 with: 'Jtalk features'.
1058
+ html ul with: [
1059
+ html li with: 'Jtalk is (mostly) written in itself, including the parser & compiler'.
1060
+ html li with: 'Full Smalltalk object system, including classes & metaclasses, etc'.
1061
+ html li with: 'Core libraries (streams, collections, RegExp, etc)'.
1062
+ html li with: 'Web related libraries: HTML Canvas, DOM manipulation'.
1063
+ html li with: 'Full featured IDE'.
1064
+ html li with: [
1065
+ html with:'Advanced Smalltalk features, including '.
1066
+ html code with: '#doesNotUnderstand:'.
1067
+ html with: ' support and '.
1068
+ html code with: 'thisContext']]
1069
+ ! !
1070
+
1071
+ Slide subclass: #AboutSlide
1072
+ instanceVariableNames: ''
1073
+ category: 'Presentation'!
1074
+
1075
+ !AboutSlide methodsFor: 'accessing'!
1076
+
1077
+ id
1078
+ ^'about'
1079
+ !
1080
+
1081
+ cssClass
1082
+ ^'slide transparent white'
1083
+ !
1084
+
1085
+ backgroundColor
1086
+ ^'white'
1087
+ ! !
1088
+
1089
+ !AboutSlide methodsFor: 'rendering'!
1090
+
1091
+ renderSlideOn: html
1092
+ html div class: 'section center'; with: [
1093
+ html h1 with: 'About this presentation'.
1094
+ html p with: 'This presentation is entirely written in Jtalk and is licensed under CC BY-SA.'.
1095
+ html p with: [
1096
+ html with: 'Press '.
1097
+ html code with: '←'.
1098
+ html with: ' to move backward and '.
1099
+ html code with: ' →'.
1100
+ html with: ' to move forward.'].
1101
+ html p with: [
1102
+ html with: 'Open a '.
1103
+ html button
1104
+ with: 'browser';
1105
+ onClick: [Browser openOn: Presentation].
1106
+ html with: ' to edit the source code.']]
1107
+ ! !
1108
+
1109
+ Slide subclass: #JtalkAndJavascriptSlide3
1110
+ instanceVariableNames: ''
1111
+ category: 'Presentation'!
1112
+
1113
+ !JtalkAndJavascriptSlide3 methodsFor: 'accessing'!
1114
+
1115
+ id
1116
+ ^'jtalkAndJs3'
1117
+ !
1118
+
1119
+ backgroundColor
1120
+ ^'#08C'
1121
+ ! !
1122
+
1123
+ !JtalkAndJavascriptSlide3 methodsFor: 'rendering'!
1124
+
1125
+ renderSlideOn: html
1126
+ html h1 with: [
1127
+ html with: 'Smalltalk '.
1128
+ html span class: 'red'; with: '♥'.
1129
+ html with: ' JavaScript'].
1130
+ html h2 with: 'Smalltalk ⇒ JavaScript'.
1131
+ html ol with: [
1132
+ html li
1133
+ with: 'Unary messages begin with an underscore: ';
1134
+ with: [html code with: 'yourself'];
1135
+ with: ' becomes ';
1136
+ with: [html code with: '_yourself()'].
1137
+ html li
1138
+ with: 'Binary messages are prefixed with 2 underscores: ';
1139
+ with: [html code with: '3@4'];
1140
+ with: ' becomes ';
1141
+ with: [html code with: '(3).__at(4)'].
1142
+ html li
1143
+ with: 'Keyword message follow the same rules as unary messages, with a final underscore: ';
1144
+ with: [html code with: 'aDictionary at: 3 put: 4'];
1145
+ with: ' becomes ';
1146
+ with: [html code with: 'aDictionary._at_put_(3, 4)']]
1147
+ ! !
1148
+
1149
+ Slide subclass: #JtalkAndJavascriptSlide2
1150
+ instanceVariableNames: ''
1151
+ category: 'Presentation'!
1152
+
1153
+ !JtalkAndJavascriptSlide2 methodsFor: 'accessing'!
1154
+
1155
+ id
1156
+ ^'jtalkAndJs2'
1157
+ !
1158
+
1159
+ backgroundColor
1160
+ ^'#08C'
1161
+ ! !
1162
+
1163
+ !JtalkAndJavascriptSlide2 methodsFor: 'rendering'!
1164
+
1165
+ renderSlideOn: html
1166
+ html h1 with: [
1167
+ html with: 'Smalltalk '.
1168
+ html span class: 'red'; with: '♥'.
1169
+ html with: ' JavaScript'].
1170
+ html h2 with: 'Jtalk maps one to one with the JavaScript equivalent:'.
1171
+ html ul with: [
1172
+ html li with: 'String ⇔ String'.
1173
+ html li with: 'Number ⇔ Number'.
1174
+ html li with: 'BlockClosure ⇔ function'.
1175
+ html li with: 'Dictionary ⇔ Object'.
1176
+ html li with: 'Error ⇔ Error'.
1177
+ html li with: 'etc.']
1178
+ ! !
1179
+
1180
+ Slide subclass: #JtalkAndJavascriptSlide
1181
+ instanceVariableNames: ''
1182
+ category: 'Presentation'!
1183
+
1184
+ !JtalkAndJavascriptSlide methodsFor: 'accessing'!
1185
+
1186
+ id
1187
+ ^'jtalkAndJs'
1188
+ !
1189
+
1190
+ cssClass
1191
+ ^'slide transparent'
1192
+ !
1193
+
1194
+ backgroundColor
1195
+ ^'#08C'
1196
+ ! !
1197
+
1198
+ !JtalkAndJavascriptSlide methodsFor: 'rendering'!
1199
+
1200
+ renderSlideOn: html
1201
+ html div class: 'section center'; with: [
1202
+ html h1 with: [
1203
+ html with: 'Smalltalk '.
1204
+ html span class: 'red'; with: '♥'.
1205
+ html with: ' JavaScript']]
1206
+ ! !
1207
+
1208
+ Slide subclass: #WorkspaceSlide
1209
+ instanceVariableNames: ''
1210
+ category: 'Presentation'!
1211
+
1212
+ !WorkspaceSlide methodsFor: 'accessing'!
1213
+
1214
+ id
1215
+ ^'workspace'
1216
+ !
1217
+
1218
+ backgroundColor
1219
+ ^'#18bd7d'
1220
+ !
1221
+
1222
+ renderSlideOn: html
1223
+ | workspace |
1224
+ workspace := SourceArea new.
1225
+ html div class: 'section center'; with: [
1226
+ html h1 with: 'Give Jtalk a try!!'.
1227
+ workspace renderOn: html.
1228
+ html div with: [
1229
+ html button
1230
+ with: 'DoIt';
1231
+ onClick: [workspace doIt].
1232
+ html button
1233
+ with: 'PrintIt';
1234
+ onClick: [workspace printIt].
1235
+ html button
1236
+ with: 'InspectIt';
1237
+ onClick: [workspace inspectIt]]]
1238
+ ! !
1239
+
1240
+ Slide subclass: #CountersSlide
1241
+ instanceVariableNames: ''
1242
+ category: 'Presentation'!
1243
+
1244
+ !CountersSlide methodsFor: 'accessing'!
1245
+
1246
+ id
1247
+ ^'counters'
1248
+ !
1249
+
1250
+ backgroundColor
1251
+ ^'#18bd7d'
1252
+ ! !
1253
+
1254
+ !CountersSlide methodsFor: 'rendering'!
1255
+
1256
+ renderSlideOn: html
1257
+ html div class: 'section center'; with: [
1258
+ html h1 with: 'The counter example'.
1259
+ html div with: [
1260
+ 2 timesRepeat: [Counter new renderOn: html]]]
1261
+ ! !
1262
+
1263
+ Slide subclass: #JtalkAndJavascriptSlide4
1264
+ instanceVariableNames: ''
1265
+ category: 'Presentation'!
1266
+
1267
+ !JtalkAndJavascriptSlide4 methodsFor: 'accessing'!
1268
+
1269
+ id
1270
+ ^'jtalkAndJs4'
1271
+ !
1272
+
1273
+ backgroundColor
1274
+ ^'#08C'
1275
+ ! !
1276
+
1277
+ !JtalkAndJavascriptSlide4 methodsFor: 'rendering'!
1278
+
1279
+ renderSlideOn: html
1280
+ html h1 with: [
1281
+ html with: 'JavaScript '.
1282
+ html span class: 'red'; with: '♥'.
1283
+ html with: ' Smalltalk too!! ';
1284
+ with: [html span class: 'comment'; with: '(how cute)']].
1285
+ html h2 with: 'JavaScript ⇒ Smalltalk'.
1286
+ html ol with: [
1287
+ html li
1288
+ with: [html code with: 'someUser.name'];
1289
+ with: ' becomes ';
1290
+ with: [html code with: 'someUser name'].
1291
+ html li
1292
+ with: [html code with: 'someUser name = "John"'];
1293
+ with: ' becomes ';
1294
+ with: [html code with: 'someUser name: ''John'''].
1295
+ html li
1296
+ with: [html code with: 'console.log(''hello world'')'];
1297
+ with: ' becomes ';
1298
+ with: [html code with: 'console log: ''hello world'''].
1299
+ html li
1300
+ with: [html code with: 'window.jQuery(''foo'').css(''background'', ''red'')'];
1301
+ with: ' becomes ';
1302
+ with: [html br];
1303
+ with: [html code with: '(window jQuery: ''foo'') css: ''background'' color: ''red''']]
1304
+ ! !
1305
+
1306
+ Slide subclass: #IDESlide
1307
+ instanceVariableNames: ''
1308
+ category: 'Presentation'!
1309
+
1310
+ !IDESlide methodsFor: 'accessing'!
1311
+
1312
+ id
1313
+ ^'ide'
1314
+ !
1315
+
1316
+ backgroundColor
1317
+ ^'black'
1318
+ !
1319
+
1320
+ cssClass
1321
+ ^'slide transparent'
1322
+ ! !
1323
+
1324
+ !IDESlide methodsFor: 'rendering'!
1325
+
1326
+ renderSlideOn: html
1327
+ " html div class: 'section center'; with: [
1328
+ html h1
1329
+ with: 'The wonderful Jtalk ';
1330
+ with: [
1331
+ html a
1332
+ with: 'development tools';
1333
+ onClick: [TabManager current open]];
1334
+ with: '.']
1335
+ "
1336
+ ! !
1337
+
1338
+ Slide subclass: #ContributionsSlide
1339
+ instanceVariableNames: ''
1340
+ category: 'Presentation'!
1341
+
1342
+ !ContributionsSlide methodsFor: 'accessing'!
1343
+
1344
+ id
1345
+ ^'links'
1346
+ ! !
1347
+
1348
+ !ContributionsSlide methodsFor: 'rendering'!
1349
+
1350
+ renderSlideOn: html
1351
+ html div class: 'section'; with: [
1352
+ html p with: [
1353
+ html a href: 'http://jtalk-project.org'; with: 'jtalk-project.org'].
1354
+ html p with: [
1355
+ html a href: 'https://github.com/NicolasPetton/jtalk'; with: 'github.com/NicolasPetton/jtalk'].
1356
+ html p with: [
1357
+ html a href: 'http://http://groups.google.com/group/jtalk-project'; with: 'groups.google.com/group/jtalk-project']]
1358
+ ! !
1359
+
1360
+ Slide subclass: #JtalkAndCLI
1361
+ instanceVariableNames: ''
1362
+ category: 'Presentation'!
1363
+
1364
+ !JtalkAndCLI methodsFor: 'not yet classified'!
1365
+
1366
+ backgroundColor
1367
+ ^'#0A1'
1368
+ !
1369
+
1370
+ id
1371
+ ^'JtalkAndCLI'
1372
+ !
1373
+
1374
+ renderSlideOn: html
1375
+ html h1 with: [
1376
+ html with: 'Jtalk and '.
1377
+ html span class: 'blue'; with: 'the command line'].
1378
+
1379
+ html h2 with: 'jtalkc - a fairly elaborate bash script that:'.
1380
+
1381
+ html ul with: [
1382
+ html li with: 'Uses Node.js to run the Jtalk Compiler'.
1383
+ html li with: 'Compiles .st files to .js'.
1384
+ html li with: 'Links .js files into a single one'.
1385
+ html li with: 'Adds class initilization and/or call to main'.
1386
+ html li with: 'Optionally runs Google Closure compiler']
1387
+ ! !
1388
+
1389
+ Slide subclass: #JtalkAndNode
1390
+ instanceVariableNames: ''
1391
+ category: 'Presentation'!
1392
+
1393
+ !JtalkAndNode methodsFor: 'not yet classified'!
1394
+
1395
+ backgroundColor
1396
+ ^'#0A1'
1397
+ !
1398
+
1399
+ id
1400
+ ^'JtalkAndNode'
1401
+ !
1402
+
1403
+ renderSlideOn: html
1404
+ html h1 with: [
1405
+ html with: 'Jtalk and '.
1406
+ html span class: 'blue'; with: 'Node.js'].
1407
+
1408
+ html h2 with: 'Hello.st:'.
1409
+ html pre with: [
1410
+ html div class: 'code2'; with: 'Object subclass: #Hello
1411
+ instanceVariableNames: ''''
1412
+ category: ''Hello''!!
1413
+
1414
+ !!Hello class methodsFor: ''main''!!
1415
+ main
1416
+ console log: ''Hello world from JTalk in Node.js''
1417
+ !! !!']
1418
+ ! !
1419
+
1420
+ Slide subclass: #JtalkAndNode2
1421
+ instanceVariableNames: ''
1422
+ category: 'Presentation'!
1423
+
1424
+ !JtalkAndNode2 methodsFor: 'not yet classified'!
1425
+
1426
+ backgroundColor
1427
+ ^'#0A1'
1428
+ !
1429
+
1430
+ id
1431
+ ^'JtalkAndNode2'
1432
+ !
1433
+
1434
+ renderSlideOn: html
1435
+ html h1 with: [
1436
+ html with: 'Jtalk and '.
1437
+ html span class: 'blue'; with: 'Node.js'].
1438
+
1439
+ html h2 with: 'Makefile:'.
1440
+ html pre with: [
1441
+ html div class: 'code2'; with: 'Program.js: Hello.st
1442
+ ../../bin/jtalkc -N -m Hello Hello.st Program
1443
+
1444
+ run: Program.js
1445
+ ./hello
1446
+
1447
+ clean:
1448
+ rm -f Program.js Hello.js
1449
+ '].
1450
+ html h2 with: 'hello:'.
1451
+ html pre with: [
1452
+ html div class: 'code2'; with: 'node Program.js $@']
1453
+ ! !
1454
+
1455
+ Slide subclass: #JtalkAndNode3
1456
+ instanceVariableNames: ''
1457
+ category: 'Presentation'!
1458
+
1459
+ !JtalkAndNode3 methodsFor: 'not yet classified'!
1460
+
1461
+ backgroundColor
1462
+ ^'#0A1'
1463
+ !
1464
+
1465
+ id
1466
+ ^'JtalkAndNode3'
1467
+ !
1468
+
1469
+ renderSlideOn: html
1470
+ html h1 with: [
1471
+ html with: 'Jtalk and '.
1472
+ html span class: 'blue'; with: 'Node.js'].
1473
+
1474
+ html h2 with: 'make clean && make run:'.
1475
+
1476
+ html pre with: [
1477
+ html div class: 'code2'; with: 'rm -f Program.js Hello.js
1478
+ ../../bin/jtalkc -N -m Hello Hello.st Program
1479
+ Loading libraries /home/gokr/jtalk/js/boot.js /home/gokr/jtalk/js/Kernel.js
1480
+ /home/gokr/jtalk/js/Parser.js /home/gokr/jtalk/js/Compiler.js
1481
+ /home/gokr/jtalk/js/init.js /home/gokr/jtalk/nodejs/nodecompile.js
1482
+ and compiling ...
1483
+ Compiling in debugMode: false
1484
+ Reading file Hello.st
1485
+ Exporting category Hello as Hello.js
1486
+ Adding libraries /home/gokr/jtalk/js/boot.js /home/gokr/jtalk/js/Kernel.js ...
1487
+ Adding Jtalk code Hello.js ...
1488
+ Adding initializer /home/gokr/jtalk/js/init.js ...
1489
+ Adding call to Hello class >> main ...
1490
+ Writing Program.js ...
1491
+ Done.
1492
+ ./hello'.
1493
+ html span class: 'blue'; with:'Hello world from JTalk in Node.js']
1494
+ ! !
1495
+
1496
+ Slide subclass: #JtalkAndWebOS
1497
+ instanceVariableNames: ''
1498
+ category: 'Presentation'!
1499
+
1500
+ !JtalkAndWebOS methodsFor: 'not yet classified'!
1501
+
1502
+ backgroundColor
1503
+ ^'#0A1'
1504
+ !
1505
+
1506
+ id
1507
+ ^'JtalkAndWebOS'
1508
+ !
1509
+
1510
+ renderSlideOn: html
1511
+ html h1 with: [
1512
+ html with: 'Jtalk and '.
1513
+ html span class: 'blue'; with: 'webOS'].
1514
+
1515
+ html h2 with: 'A really cool mobile OS based on Linux:'.
1516
+
1517
+ html ul with: [
1518
+ html li with: 'The primary language in webOS is Javascript'.
1519
+ html li with: 'The new UI framework for webOS 3.0 is called Enyo'.
1520
+ html li with: 'Regular apps run in V8 + Webkit'.
1521
+ html li with: 'Background services run in Node.js']
1522
+ ! !
1523
+
1524
+ Slide subclass: #JtalkAndEnyo
1525
+ instanceVariableNames: ''
1526
+ category: 'Presentation'!
1527
+
1528
+ !JtalkAndEnyo methodsFor: 'not yet classified'!
1529
+
1530
+ id
1531
+ ^'JtalkAndEnyo'
1532
+ !
1533
+
1534
+ backgroundColor
1535
+ ^'#0A1'
1536
+ !
1537
+
1538
+ renderSlideOn: html
1539
+ html h1 with: [
1540
+ html with: 'Jtalk and '.
1541
+ html span class: 'blue'; with: 'Enyo'].
1542
+ ! !
1543
+
1544
+ Presentation subclass: #FOSDEM2012Presentation
1545
+ instanceVariableNames: ''
1546
+ category: 'Presentation'!
1547
+
1548
+ !FOSDEM2012Presentation methodsFor: 'accessing'!
1549
+
1550
+ description
1551
+ ^'FOSDEM 2012, Brussels'
1552
+ !
1553
+
1554
+ author
1555
+ ^'Laurent Laffont, Johnny Thornton'
1556
+ !
1557
+
1558
+ email
1559
+ ^'laurent.laffont@gmail.com, johnnyt@xan.do'
1560
+ !
1561
+
1562
+ url
1563
+ ^'http://amber-lang.net'
1564
+ !
1565
+
1566
+ style
1567
+ ^'
1568
+ body {
1569
+ font-family: Helvetica,Arial,sans;
1570
+ }
1571
+
1572
+ #slides {
1573
+ width: 100%;
1574
+ height: 100%;
1575
+ overflow: hidden;
1576
+ position: absolute;
1577
+ top: 0;
1578
+ bottom: 0;
1579
+ left: 0;
1580
+ right: 0;
1581
+ background: #555;
1582
+ }
1583
+
1584
+ .slide {
1585
+ background: #fff;
1586
+ color: #444;
1587
+ text-align: left;
1588
+ font-size: 20px;
1589
+ line-height: 1.8em;
1590
+ height: 500px;
1591
+ width: 700px;
1592
+ padding: 60px;
1593
+ position: absolute;
1594
+ left: 50%;
1595
+ top: 50%;
1596
+ margin-left: -420px;
1597
+ margin-top: -320px;
1598
+ box-shadow: 0 0 20px #111;
1599
+ -moz-box-shadow: 0 0 20px #111;
1600
+ -webkit-box-shadow: 0 0 20px #111;
1601
+ }
1602
+
1603
+ .slide.transparent {
1604
+ background: transparent;
1605
+ box-shadow: 0 0 0 none;
1606
+ -moz-box-shadow: 0 0 0 transparent;
1607
+ -webkit-box-shadow: 0 0 0 transparent;
1608
+ color: #fff !!important;
1609
+ }
1610
+
1611
+ .slide.black {
1612
+ background: black;
1613
+ background-image: -webkit-gradient(
1614
+ linear,
1615
+ left bottom,
1616
+ left top,
1617
+ color-stop(0.38, rgb(79,79,79)),
1618
+ color-stop(0.69, rgb(33,33,33)),
1619
+ color-stop(0.86, rgb(4,4,4))
1620
+ );
1621
+ background-image: -moz-linear-gradient(
1622
+ center bottom,
1623
+ rgb(79,79,79) 38%,
1624
+ rgb(33,33,33) 69%,
1625
+ rgb(4,4,4) 86%
1626
+ );
1627
+ color: #fff !!important;
1628
+ }
1629
+
1630
+ .slide.black h1, .slide.black h2, .slide.black h3,
1631
+ .slide.transparent h1, .slide.transparent h2, .slide.transparent h3 {
1632
+ color: #fff;
1633
+ text-shadow: 0 1px 4px #aaa;
1634
+ }
1635
+
1636
+ .slide.black a, .slide.transparent a {
1637
+ color: #ccc;
1638
+ }
1639
+
1640
+ .slide.white {
1641
+ color: #333 !!important;
1642
+ }
1643
+
1644
+ .slide.white h1, .slide.white h2, .slide.white h3 {
1645
+ color: #333;
1646
+ }
1647
+
1648
+ .slide.white a {
1649
+ color: #333;
1650
+ }
1651
+
1652
+
1653
+ .slide h1, .slide h2, .slide h3 {
1654
+ color: #333;
1655
+ /* text-align: center; */
1656
+ }
1657
+
1658
+ .slide h1 {
1659
+ font-family: "Droid Sans";
1660
+ font-size: 36px;
1661
+ text-shadow: 0 1px 4px #aaa;
1662
+ margin-top: 30px;
1663
+ margin-bottom: 50px;
1664
+ }
1665
+
1666
+ .slide button {
1667
+ font-size: 18px;
1668
+ }
1669
+
1670
+ .slide a {
1671
+ color: #555;
1672
+ text-decoration: none;
1673
+ cursor: pointer;
1674
+ }
1675
+
1676
+ .slide a:hover {
1677
+ color: #fff;
1678
+ background: #555;
1679
+ }
1680
+
1681
+ .slide .right {
1682
+ text-align: right;
1683
+ }
1684
+
1685
+ .slide .section.center {
1686
+ text-align: center;
1687
+ display: table-cell;
1688
+ vertical-align: middle;
1689
+ width: 700px;
1690
+ height: 500px;
1691
+ }
1692
+
1693
+ .slide code {
1694
+ font-family: "Droid Sans Mono";
1695
+ color: #444;
1696
+ border: 1px solid #ddd;
1697
+ background: #eee;
1698
+ border-radius: 4px;
1699
+ padding: 2px;
1700
+ font-size: 16px;
1701
+ }
1702
+
1703
+ .slide .code2 {
1704
+ font-family: "Droid Sans Mono";
1705
+ line-height: 1.2em;
1706
+ color: #444;
1707
+ padding: 2px;
1708
+ font-size: 16px;
1709
+ }
1710
+
1711
+
1712
+ .slide .CodeMirror {
1713
+ width: 700px;
1714
+ height: 300px;
1715
+ text-align: left;
1716
+ }
1717
+
1718
+ .slide .CodeMirror-scroll {
1719
+ text-align: left;
1720
+ }
1721
+
1722
+ .slide .fancy {
1723
+ margin-top: 30px;
1724
+ -webkit-transform: rotate(-10deg);
1725
+ -moz-transform: rotate(-10deg);
1726
+ transform: rotate(-10deg);
1727
+ color: red;
1728
+ }
1729
+
1730
+ .slide .comment {
1731
+ opacity: 0.6;
1732
+ font-weight: normal;
1733
+ }
1734
+
1735
+ .slide .red {
1736
+ color: red;
1737
+ }
1738
+
1739
+ .slide .blue {
1740
+ color: blue;
1741
+ }
1742
+
1743
+ #meta {
1744
+ position: absolute;
1745
+ font-size: 12px;
1746
+ opacity: 0.6;
1747
+ bottom: 0;
1748
+ right: 0;
1749
+ z-index: 2;
1750
+ background: #333;
1751
+ text-align: right;
1752
+ padding: 0 10px;
1753
+ line-height: 1.8em;
1754
+ color: #eee;
1755
+ border-top-left-radius: 5px;
1756
+ }
1757
+
1758
+ #meta:hover {
1759
+ opacity: 0.8;
1760
+ }
1761
+
1762
+ #meta p {
1763
+ display: inline;
1764
+ padding: 0 5px;
1765
+ }
1766
+
1767
+ #meta a {
1768
+ //background: #ccc;
1769
+ color: #ccc;
1770
+ text-decoration: none;
1771
+ padding: 0 5px;
1772
+ }
1773
+
1774
+ .slide {
1775
+
1776
+ }
1777
+
1778
+ .slide.blue3d {
1779
+ background: #feffff;
1780
+ background: -moz-linear-gradient(top, #feffff 0%, #d2ebf9 100%);
1781
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#feffff), color-stop(100%,#d2ebf9));
1782
+ background: -webkit-linear-gradient(top, #feffff 0%,#d2ebf9 100%);
1783
+ background: -o-linear-gradient(top, #feffff 0%,#d2ebf9 100%);
1784
+ background: -ms-linear-gradient(top, #feffff 0%,#d2ebf9 100%);
1785
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#feffff", endColorstr="#d2ebf9",GradientType=0 );
1786
+ background: linear-gradient(top, #feffff 0%,#d2ebf9 100%);
1787
+ }
1788
+
1789
+
1790
+ .slide.red3d {
1791
+ background: #febbbb;
1792
+ background: -moz-linear-gradient(top, #febbbb 0%, #fe9090 71%, #ff5c5c 95%);
1793
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#febbbb), color-stop(71%,#fe9090), color-stop(95%,#ff5c5c));
1794
+ background: -webkit-linear-gradient(top, #febbbb 0%,#fe9090 71%,#ff5c5c 95%);
1795
+ background: -o-linear-gradient(top, #febbbb 0%,#fe9090 71%,#ff5c5c 95%);
1796
+ background: -ms-linear-gradient(top, #febbbb 0%,#fe9090 71%,#ff5c5c 95%);
1797
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#febbbb", endColorstr="#ff5c5c",GradientType=0 );
1798
+ background: linear-gradient(top, #febbbb 0%,#fe9090 71%,#ff5c5c 95%);
1799
+ }
1800
+
1801
+
1802
+ .slide.green3d {
1803
+ background: #cdeb8e;
1804
+ background: -moz-linear-gradient(top, #cdeb8e 0%, #a5c956 100%);
1805
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#cdeb8e), color-stop(100%,#a5c956));
1806
+ background: -webkit-linear-gradient(top, #cdeb8e 0%,#a5c956 100%);
1807
+ background: -o-linear-gradient(top, #cdeb8e 0%,#a5c956 100%);
1808
+ background: -ms-linear-gradient(top, #cdeb8e 0%,#a5c956 100%);
1809
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#cdeb8e", endColorstr="#a5c956",GradientType=0 );
1810
+ background: linear-gradient(top, #cdeb8e 0%,#a5c956 100%);
1811
+ }
1812
+
1813
+ @-webkit-keyframes rotate-horizontal {
1814
+ 0% { -webkit-transform: perspective(1000px) rotateY(-10deg);}
1815
+ 100% { -webkit-transform: perspective(1000px) rotateY(10deg);}
1816
+ }
1817
+
1818
+ .animate p{
1819
+ -webkit-animation: rotate-horizontal 2s infinite alternate ease-in-out;
1820
+ }
1821
+
1822
+ #FOSDEMAmberBackend img {
1823
+ margin: 5px;
1824
+ -webkit-animation: rotate-horizontal 2s infinite alternate ease-in-out;
1825
+ }
1826
+
1827
+ .slide#FOSDEMContributionsSlide {
1828
+ background: white url("esug2011/images/asterix.png") 30px 130px no-repeat;
1829
+ }
1830
+
1831
+ .slide#FOSDEMContributionsSlide .section {
1832
+ margin-left: 250px;
1833
+ margin-top: 200px;
1834
+ font-family: "Droid Sans";
1835
+ font-size: 26px;
1836
+ font-weight: bold;
1837
+ }
1838
+
1839
+
1840
+ .slide#ide {
1841
+ background: black url("esug2011/images/ide_star_wars.png") center center no-repeat;
1842
+ }
1843
+
1844
+
1845
+ .tweet {
1846
+ background-color: #aaa;
1847
+ color: black;
1848
+ padding: 10px;
1849
+ border-radius: 10px;
1850
+ border: 5px solid #eee;
1851
+ margin: 10px;
1852
+ }
1853
+
1854
+ .tweet img {
1855
+ vertical-align: top;
1856
+ margin-right: 10px;
1857
+ }
1858
+
1859
+ .tweet span:first-child {
1860
+ float: right;
1861
+ }
1862
+ '
1863
+ !
1864
+
1865
+ slideClasses
1866
+ ^ {
1867
+ FOSDEMIntroSlide.
1868
+ FOSDEMAmberZeroNine.
1869
+ CountersSlide.
1870
+ IDESlide.
1871
+ JtalkAndJavascriptSlide.
1872
+ FOSDEMJSPlayGroundSlide.
1873
+ FOSDEMJSToSmalltalk.
1874
+ FOSDEMBookletSlide.
1875
+ FOSDEMTwitter.
1876
+ FOSDEMCanvasSlide.
1877
+ FOSDEMAmberBackend.
1878
+ FOSDEMREPLSlide.
1879
+ FOSDEMCLISlide.
1880
+ FOSDEMContributionsSlide
1881
+ }
1882
+ ! !
1883
+
1884
+ !FOSDEM2012Presentation class methodsFor: 'testing'!
1885
+
1886
+ isConcrete
1887
+ ^true
1888
+ !
1889
+
1890
+ title
1891
+ ^'Amber'
1892
+ ! !
1893
+
1894
+ FOSDEMSlide subclass: #FOSDEMTwitter
1895
+ instanceVariableNames: 'twitterDiv'
1896
+ category: 'Presentation'!
1897
+
1898
+ !FOSDEMTwitter methodsFor: 'accessing'!
1899
+
1900
+ cssClass
1901
+ ^ 'slide black'
1902
+ ! !
1903
+
1904
+ !FOSDEMTwitter methodsFor: 'callback'!
1905
+
1906
+ loadTweets
1907
+ jQuery
1908
+ ajax: 'http://search.twitter.com/search.json?rpp=3&q=%40AmberSmalltalk'
1909
+ options: #{
1910
+ 'type' -> 'GET'.
1911
+ 'success' -> [ :json | self renderTweets: (json results)].
1912
+ 'dataType' -> 'jsonp'
1913
+ }.
1914
+ ! !
1915
+
1916
+ !FOSDEMTwitter methodsFor: 'rendering'!
1917
+
1918
+ renderSlideOn: html
1919
+ html button
1920
+ onClick: [self loadTweets];
1921
+ with: 'What about @AmberSmalltalk on Twitter ?'.
1922
+ twitterDiv := html div.
1923
+ !
1924
+
1925
+ renderTweets: tweets
1926
+ twitterDiv contents: [ :html|
1927
+ tweets do: [ :tweet|
1928
+ self renderTweet: tweet on: html] ]
1929
+ !
1930
+
1931
+ renderTweet: tweet on: html
1932
+ html div
1933
+ class: 'tweet';
1934
+ with: [
1935
+ html
1936
+ span: (tweet at: 'created_at');
1937
+ img: (tweet at: 'profile_image_url');
1938
+ span: (tweet at: 'from_user');
1939
+ div: (tweet at: 'text').
1940
+ ]
1941
+ ! !
1942
+
1943
+ FOSDEMSlide subclass: #FOSDEMCLISlide
1944
+ instanceVariableNames: ''
1945
+ category: 'Presentation'!
1946
+
1947
+ !FOSDEMCLISlide methodsFor: 'rendering'!
1948
+
1949
+ renderSlideOn: html
1950
+ html h1: 'CLI'.
1951
+ html with: 'amberc compiles .st files into node programs !!'.
1952
+ self renderCodeSnippetOn: html.
1953
+ !
1954
+
1955
+ codeSnippet
1956
+ ^
1957
+ 'cd examples/nodejs/hello
1958
+ ../../../bin/amberc -m Hello Hello.st Program
1959
+ node Program.js
1960
+
1961
+ Hello world from Amber in Node.js'
1962
+ ! !
1963
+
1964
+ FOSDEMSlide subclass: #FOSDEMContributionsSlide
1965
+ instanceVariableNames: ''
1966
+ category: 'Presentation'!
1967
+
1968
+ !FOSDEMContributionsSlide methodsFor: 'rendering'!
1969
+
1970
+ renderSlideOn: html
1971
+ html div class: 'section'; with: [
1972
+ html p with: [
1973
+ html a href: '/documentation.html'; with: 'Documentation'].
1974
+ html p with: [
1975
+ html a href: 'http://amber-lang.net'; with: 'amber-lang.net'].
1976
+ html p with: [
1977
+ html a href: 'https://github.com/NicolasPetton/amber'; with: 'github.com/NicolasPetton/amber'].
1978
+ html p with: [
1979
+ html a href: 'http://groups.google.com/group/amber-lang'; with: 'groups.google.com/group/amber-lang']]
1980
+ ! !
1981
+
1982
+ FOSDEMSlide subclass: #FOSDEMAmberZeroNine
1983
+ instanceVariableNames: ''
1984
+ category: 'Presentation'!
1985
+
1986
+ !FOSDEMAmberZeroNine methodsFor: 'not yet classified'!
1987
+
1988
+ renderSlideOn: html
1989
+ html div
1990
+ class: 'section center';
1991
+ with: [ html
1992
+ h1: 'Amber 0.9.1 is out !!';
1993
+ div: [html cite with: 'Now with over 43 forks on github and more than 230 followers the project: http://www.amber-lang.net ...is live and kicking!!'];
1994
+ div: [html cite with: '-- Nicolas & Göran'] ]
1995
+ ! !
1996
+