shoes 4.0.0.pre1 → 4.0.0.pre2

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 (361) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +84 -32
  3. data/Gemfile +22 -1
  4. data/README.md +28 -13
  5. data/Rakefile +7 -210
  6. data/bin/ruby-shoes +2 -2
  7. data/ext/install/shoes.bat +4 -1
  8. data/lib/shoes.rb +1 -121
  9. data/lib/shoes/{cli.rb → ui/cli.rb} +7 -1
  10. data/lib/shoes/{help.rb → ui/help.rb} +2 -2
  11. data/lib/shoes/{manual.rb → ui/manual.rb} +1 -1
  12. data/lib/shoes/version.rb +1 -1
  13. data/manifests/common.rb +34 -0
  14. data/manifests/shoes.rb +44 -0
  15. data/samples/Gemfile +3 -0
  16. data/samples/Gemfile.lock +35 -0
  17. data/samples/README +16 -5
  18. data/samples/boom.rb +239 -0
  19. data/samples/clicky.rb +24 -0
  20. data/samples/flow.rb +63 -0
  21. data/samples/gray.rb +11 -0
  22. data/samples/nks_booklist.rb +24 -0
  23. data/samples/nks_breadsticks.rb +7 -0
  24. data/samples/nks_dancing_circle.rb +13 -0
  25. data/samples/nks_dictionary.rb +23 -0
  26. data/samples/nks_edit_box.rb +4 -0
  27. data/samples/nks_edit_line.rb +6 -0
  28. data/samples/nks_notes.rb +16 -0
  29. data/samples/nks_self.rb +6 -0
  30. data/samples/nks_text_sizes.rb +10 -0
  31. data/samples/nks_trurl.rb +5 -0
  32. data/samples/packaging/package_me.rb +6 -0
  33. data/samples/present.rb +27 -0
  34. data/samples/progress.rb +10 -0
  35. data/samples/sample31.rb +1 -1
  36. data/samples/simple-calc.rb +1 -1
  37. data/samples/simple-tictactoe.rb +238 -0
  38. data/samples/simple-visibility.rb +11 -0
  39. data/samples/simple-widget.rb +9 -0
  40. data/samples/swt-raw.rb +20 -0
  41. data/samples/troll.rb +22 -0
  42. data/shoes.gemspec +10 -22
  43. data/snapshots/sample56.png +0 -0
  44. data/static/manual-en.txt +16 -7
  45. data/tasks/changelog.rb +92 -0
  46. data/tasks/gem.rb +38 -0
  47. data/tasks/rspec.rb +106 -0
  48. data/tasks/sample.rb +66 -0
  49. data/tasks/yard.rb +13 -0
  50. metadata +55 -488
  51. data/.gitignore +0 -53
  52. data/.rspec +0 -3
  53. data/.ruby-gemset +0 -1
  54. data/.ruby-version +0 -1
  55. data/.travis.yml +0 -31
  56. data/bin/shoes +0 -59
  57. data/bin/shoes.bat +0 -6
  58. data/fonts/Coolvetica.ttf +0 -0
  59. data/fonts/Lacuna.ttf +0 -0
  60. data/lib/ext/highlighter.rb +0 -2
  61. data/lib/ext/highlighter/common.rb +0 -197
  62. data/lib/ext/highlighter/lang/ruby.rb +0 -316
  63. data/lib/ext/highlighter/markup.rb +0 -222
  64. data/lib/rubygems_plugin.rb +0 -19
  65. data/lib/shoes/animation.rb +0 -55
  66. data/lib/shoes/app.rb +0 -320
  67. data/lib/shoes/arc.rb +0 -35
  68. data/lib/shoes/background.rb +0 -30
  69. data/lib/shoes/border.rb +0 -33
  70. data/lib/shoes/builtin_methods.rb +0 -73
  71. data/lib/shoes/button.rb +0 -32
  72. data/lib/shoes/check_button.rb +0 -43
  73. data/lib/shoes/color.rb +0 -375
  74. data/lib/shoes/common/background_element.rb +0 -9
  75. data/lib/shoes/common/changeable.rb +0 -34
  76. data/lib/shoes/common/clickable.rb +0 -17
  77. data/lib/shoes/common/common_methods.rb +0 -70
  78. data/lib/shoes/common/fill.rb +0 -21
  79. data/lib/shoes/common/registration.rb +0 -33
  80. data/lib/shoes/common/state.rb +0 -18
  81. data/lib/shoes/common/stroke.rb +0 -28
  82. data/lib/shoes/common/style.rb +0 -34
  83. data/lib/shoes/common/style_normalizer.rb +0 -16
  84. data/lib/shoes/configuration.rb +0 -96
  85. data/lib/shoes/dialog.rb +0 -27
  86. data/lib/shoes/dimension.rb +0 -237
  87. data/lib/shoes/dimensions.rb +0 -194
  88. data/lib/shoes/download.rb +0 -117
  89. data/lib/shoes/dsl.rb +0 -478
  90. data/lib/shoes/font.rb +0 -49
  91. data/lib/shoes/gradient.rb +0 -18
  92. data/lib/shoes/image.rb +0 -33
  93. data/lib/shoes/image_pattern.rb +0 -10
  94. data/lib/shoes/input_box.rb +0 -68
  95. data/lib/shoes/key_event.rb +0 -17
  96. data/lib/shoes/line.rb +0 -38
  97. data/lib/shoes/link.rb +0 -49
  98. data/lib/shoes/link_hover.rb +0 -5
  99. data/lib/shoes/list_box.rb +0 -44
  100. data/lib/shoes/logger.rb +0 -66
  101. data/lib/shoes/logger/ruby.rb +0 -18
  102. data/lib/shoes/mock.rb +0 -30
  103. data/lib/shoes/mock/animation.rb +0 -8
  104. data/lib/shoes/mock/app.rb +0 -44
  105. data/lib/shoes/mock/arc.rb +0 -8
  106. data/lib/shoes/mock/background.rb +0 -10
  107. data/lib/shoes/mock/border.rb +0 -7
  108. data/lib/shoes/mock/button.rb +0 -10
  109. data/lib/shoes/mock/check.rb +0 -24
  110. data/lib/shoes/mock/common_methods.rb +0 -11
  111. data/lib/shoes/mock/dialog.rb +0 -13
  112. data/lib/shoes/mock/download.rb +0 -18
  113. data/lib/shoes/mock/font.rb +0 -17
  114. data/lib/shoes/mock/image.rb +0 -12
  115. data/lib/shoes/mock/image_pattern.rb +0 -9
  116. data/lib/shoes/mock/input_box.rb +0 -23
  117. data/lib/shoes/mock/keypress.rb +0 -8
  118. data/lib/shoes/mock/keyrelease.rb +0 -8
  119. data/lib/shoes/mock/line.rb +0 -14
  120. data/lib/shoes/mock/link.rb +0 -11
  121. data/lib/shoes/mock/list_box.rb +0 -16
  122. data/lib/shoes/mock/oval.rb +0 -11
  123. data/lib/shoes/mock/progress.rb +0 -10
  124. data/lib/shoes/mock/radio.rb +0 -26
  125. data/lib/shoes/mock/rect.rb +0 -13
  126. data/lib/shoes/mock/shape.rb +0 -19
  127. data/lib/shoes/mock/slot.rb +0 -14
  128. data/lib/shoes/mock/sound.rb +0 -8
  129. data/lib/shoes/mock/star.rb +0 -13
  130. data/lib/shoes/mock/text_block.rb +0 -29
  131. data/lib/shoes/mock/timer.rb +0 -8
  132. data/lib/shoes/oval.rb +0 -28
  133. data/lib/shoes/point.rb +0 -43
  134. data/lib/shoes/progress.rb +0 -26
  135. data/lib/shoes/radio.rb +0 -15
  136. data/lib/shoes/rect.rb +0 -28
  137. data/lib/shoes/renamed_delegate.rb +0 -15
  138. data/lib/shoes/shape.rb +0 -175
  139. data/lib/shoes/slot.rb +0 -232
  140. data/lib/shoes/slot_contents.rb +0 -56
  141. data/lib/shoes/sound.rb +0 -16
  142. data/lib/shoes/span.rb +0 -16
  143. data/lib/shoes/star.rb +0 -49
  144. data/lib/shoes/swt.rb +0 -114
  145. data/lib/shoes/swt/animation.rb +0 -46
  146. data/lib/shoes/swt/app.rb +0 -300
  147. data/lib/shoes/swt/arc.rb +0 -70
  148. data/lib/shoes/swt/background.rb +0 -31
  149. data/lib/shoes/swt/border.rb +0 -37
  150. data/lib/shoes/swt/button.rb +0 -18
  151. data/lib/shoes/swt/check.rb +0 -14
  152. data/lib/shoes/swt/check_button.rb +0 -19
  153. data/lib/shoes/swt/color.rb +0 -45
  154. data/lib/shoes/swt/common/child.rb +0 -16
  155. data/lib/shoes/swt/common/clear.rb +0 -24
  156. data/lib/shoes/swt/common/clickable.rb +0 -62
  157. data/lib/shoes/swt/common/container.rb +0 -28
  158. data/lib/shoes/swt/common/fill.rb +0 -37
  159. data/lib/shoes/swt/common/painter.rb +0 -83
  160. data/lib/shoes/swt/common/painter_updates_position.rb +0 -12
  161. data/lib/shoes/swt/common/resource.rb +0 -14
  162. data/lib/shoes/swt/common/selection_listener.rb +0 -14
  163. data/lib/shoes/swt/common/stroke.rb +0 -41
  164. data/lib/shoes/swt/common/toggle.rb +0 -13
  165. data/lib/shoes/swt/common/update_position.rb +0 -15
  166. data/lib/shoes/swt/dialog.rb +0 -89
  167. data/lib/shoes/swt/disposed_protection.rb +0 -23
  168. data/lib/shoes/swt/download.rb +0 -24
  169. data/lib/shoes/swt/fitted_text_layout.rb +0 -94
  170. data/lib/shoes/swt/fitted_text_layout_collection.rb +0 -108
  171. data/lib/shoes/swt/font.rb +0 -32
  172. data/lib/shoes/swt/gradient.rb +0 -77
  173. data/lib/shoes/swt/image.rb +0 -130
  174. data/lib/shoes/swt/image_pattern.rb +0 -19
  175. data/lib/shoes/swt/input_box.rb +0 -73
  176. data/lib/shoes/swt/key_listener.rb +0 -145
  177. data/lib/shoes/swt/line.rb +0 -57
  178. data/lib/shoes/swt/link.rb +0 -37
  179. data/lib/shoes/swt/link_segment.rb +0 -108
  180. data/lib/shoes/swt/list_box.rb +0 -49
  181. data/lib/shoes/swt/mouse_move_listener.rb +0 -61
  182. data/lib/shoes/swt/oval.rb +0 -53
  183. data/lib/shoes/swt/progress.rb +0 -35
  184. data/lib/shoes/swt/radio.rb +0 -29
  185. data/lib/shoes/swt/radio_group.rb +0 -54
  186. data/lib/shoes/swt/rect.rb +0 -31
  187. data/lib/shoes/swt/rect_painter.rb +0 -23
  188. data/lib/shoes/swt/redrawing_aspect.rb +0 -122
  189. data/lib/shoes/swt/shape.rb +0 -101
  190. data/lib/shoes/swt/shoes_layout.rb +0 -43
  191. data/lib/shoes/swt/slot.rb +0 -25
  192. data/lib/shoes/swt/sound.rb +0 -119
  193. data/lib/shoes/swt/star.rb +0 -51
  194. data/lib/shoes/swt/swt_button.rb +0 -49
  195. data/lib/shoes/swt/text_block.rb +0 -133
  196. data/lib/shoes/swt/text_block_cursor_painter.rb +0 -112
  197. data/lib/shoes/swt/text_block_fitter.rb +0 -180
  198. data/lib/shoes/swt/text_block_painter.rb +0 -49
  199. data/lib/shoes/swt/text_font_factory.rb +0 -27
  200. data/lib/shoes/swt/text_style_factory.rb +0 -88
  201. data/lib/shoes/swt/timer.rb +0 -19
  202. data/lib/shoes/swt/tooling/leak_hunter.rb +0 -84
  203. data/lib/shoes/text.rb +0 -14
  204. data/lib/shoes/text_block.rb +0 -162
  205. data/lib/shoes/timer.rb +0 -10
  206. data/lib/shoes/url.rb +0 -47
  207. data/lib/shoes/widget.rb +0 -73
  208. data/lib/support/jl1.0.1.jar +0 -0
  209. data/lib/support/jogg-0.0.7.jar +0 -0
  210. data/lib/support/jorbis-0.0.15.jar +0 -0
  211. data/lib/support/log4j-1.2.16.jar +0 -0
  212. data/lib/support/mp3spi1.9.5.jar +0 -0
  213. data/lib/support/tritonus_share.jar +0 -0
  214. data/lib/support/vorbisspi1.0.3.jar +0 -0
  215. data/samples/good-clock-adjusted.rb +0 -49
  216. data/spec/async_helper.rb +0 -21
  217. data/spec/code_coverage.rb +0 -11
  218. data/spec/shoes/animation_spec.rb +0 -65
  219. data/spec/shoes/app_spec.rb +0 -411
  220. data/spec/shoes/arc_spec.rb +0 -53
  221. data/spec/shoes/background_spec.rb +0 -48
  222. data/spec/shoes/border_spec.rb +0 -43
  223. data/spec/shoes/builtin_methods_spec.rb +0 -84
  224. data/spec/shoes/button_spec.rb +0 -41
  225. data/spec/shoes/check_spec.rb +0 -31
  226. data/spec/shoes/cli_spec.rb +0 -16
  227. data/spec/shoes/color_spec.rb +0 -396
  228. data/spec/shoes/common/style_normalizer_spec.rb +0 -28
  229. data/spec/shoes/common/style_spec.rb +0 -58
  230. data/spec/shoes/configuration_spec.rb +0 -37
  231. data/spec/shoes/constants_spec.rb +0 -38
  232. data/spec/shoes/dialog_spec.rb +0 -163
  233. data/spec/shoes/dimension_spec.rb +0 -381
  234. data/spec/shoes/dimensions_spec.rb +0 -831
  235. data/spec/shoes/download_spec.rb +0 -133
  236. data/spec/shoes/flow_spec.rb +0 -92
  237. data/spec/shoes/font_spec.rb +0 -38
  238. data/spec/shoes/framework_learning_spec.rb +0 -30
  239. data/spec/shoes/helpers/fake_element.rb +0 -11
  240. data/spec/shoes/helpers/sample17_helper.rb +0 -66
  241. data/spec/shoes/image_spec.rb +0 -45
  242. data/spec/shoes/images/shoe.jpg +0 -0
  243. data/spec/shoes/input_box_spec.rb +0 -44
  244. data/spec/shoes/integration_spec.rb +0 -20
  245. data/spec/shoes/keypress_spec.rb +0 -11
  246. data/spec/shoes/keyrelease_spec.rb +0 -12
  247. data/spec/shoes/line_spec.rb +0 -47
  248. data/spec/shoes/link_spec.rb +0 -89
  249. data/spec/shoes/list_box_spec.rb +0 -63
  250. data/spec/shoes/logger/ruby_spec.rb +0 -9
  251. data/spec/shoes/logger_spec.rb +0 -45
  252. data/spec/shoes/oval_spec.rb +0 -20
  253. data/spec/shoes/point_spec.rb +0 -51
  254. data/spec/shoes/progress_spec.rb +0 -40
  255. data/spec/shoes/radio_spec.rb +0 -28
  256. data/spec/shoes/rect_spec.rb +0 -38
  257. data/spec/shoes/renamed_delegate_spec.rb +0 -70
  258. data/spec/shoes/shape_spec.rb +0 -54
  259. data/spec/shoes/shared_examples/button.rb +0 -6
  260. data/spec/shoes/shared_examples/changeable.rb +0 -26
  261. data/spec/shoes/shared_examples/clickable.rb +0 -5
  262. data/spec/shoes/shared_examples/common_methods.rb +0 -42
  263. data/spec/shoes/shared_examples/dimensions.rb +0 -32
  264. data/spec/shoes/shared_examples/dsl.rb +0 -42
  265. data/spec/shoes/shared_examples/dsl/animate.rb +0 -29
  266. data/spec/shoes/shared_examples/dsl/arc.rb +0 -45
  267. data/spec/shoes/shared_examples/dsl/background.rb +0 -26
  268. data/spec/shoes/shared_examples/dsl/border.rb +0 -10
  269. data/spec/shoes/shared_examples/dsl/cap.rb +0 -6
  270. data/spec/shoes/shared_examples/dsl/check.rb +0 -11
  271. data/spec/shoes/shared_examples/dsl/edit_box.rb +0 -8
  272. data/spec/shoes/shared_examples/dsl/edit_line.rb +0 -8
  273. data/spec/shoes/shared_examples/dsl/editable_element.rb +0 -29
  274. data/spec/shoes/shared_examples/dsl/fill.rb +0 -27
  275. data/spec/shoes/shared_examples/dsl/flow.rb +0 -15
  276. data/spec/shoes/shared_examples/dsl/gradient.rb +0 -52
  277. data/spec/shoes/shared_examples/dsl/image.rb +0 -21
  278. data/spec/shoes/shared_examples/dsl/line.rb +0 -9
  279. data/spec/shoes/shared_examples/dsl/nofill.rb +0 -6
  280. data/spec/shoes/shared_examples/dsl/nostroke.rb +0 -6
  281. data/spec/shoes/shared_examples/dsl/oval.rb +0 -60
  282. data/spec/shoes/shared_examples/dsl/pattern.rb +0 -34
  283. data/spec/shoes/shared_examples/dsl/progress.rb +0 -7
  284. data/spec/shoes/shared_examples/dsl/rect.rb +0 -92
  285. data/spec/shoes/shared_examples/dsl/rgb.rb +0 -26
  286. data/spec/shoes/shared_examples/dsl/shape.rb +0 -21
  287. data/spec/shoes/shared_examples/dsl/star.rb +0 -48
  288. data/spec/shoes/shared_examples/dsl/stroke.rb +0 -30
  289. data/spec/shoes/shared_examples/dsl/strokewidth.rb +0 -19
  290. data/spec/shoes/shared_examples/dsl/style.rb +0 -32
  291. data/spec/shoes/shared_examples/dsl/text_elements.rb +0 -81
  292. data/spec/shoes/shared_examples/dsl_app_context.rb +0 -8
  293. data/spec/shoes/shared_examples/hover_leave.rb +0 -11
  294. data/spec/shoes/shared_examples/parent.rb +0 -6
  295. data/spec/shoes/shared_examples/shared_element_method.rb +0 -52
  296. data/spec/shoes/shared_examples/slot.rb +0 -272
  297. data/spec/shoes/shared_examples/state.rb +0 -19
  298. data/spec/shoes/shared_examples/style.rb +0 -24
  299. data/spec/shoes/slot_spec.rb +0 -60
  300. data/spec/shoes/sound_spec.rb +0 -15
  301. data/spec/shoes/span_spec.rb +0 -94
  302. data/spec/shoes/spec_helper.rb +0 -1
  303. data/spec/shoes/stack_spec.rb +0 -53
  304. data/spec/shoes/star_spec.rb +0 -30
  305. data/spec/shoes/text_block_spec.rb +0 -242
  306. data/spec/shoes/url_spec.rb +0 -66
  307. data/spec/shoes/widget_spec.rb +0 -34
  308. data/spec/shoes_spec.rb +0 -44
  309. data/spec/spec_helper.rb +0 -16
  310. data/spec/swt_shoes/animation_spec.rb +0 -86
  311. data/spec/swt_shoes/app_spec.rb +0 -75
  312. data/spec/swt_shoes/arc_spec.rb +0 -101
  313. data/spec/swt_shoes/background_spec.rb +0 -56
  314. data/spec/swt_shoes/border_spec.rb +0 -51
  315. data/spec/swt_shoes/button_spec.rb +0 -101
  316. data/spec/swt_shoes/check_spec.rb +0 -28
  317. data/spec/swt_shoes/color_spec.rb +0 -67
  318. data/spec/swt_shoes/common/painter_spec.rb +0 -29
  319. data/spec/swt_shoes/configuration_spec.rb +0 -12
  320. data/spec/swt_shoes/dialog_spec.rb +0 -106
  321. data/spec/swt_shoes/disposed_protection_spec.rb +0 -49
  322. data/spec/swt_shoes/fitted_text_layout_collection_spec.rb +0 -174
  323. data/spec/swt_shoes/fitted_text_layout_spec.rb +0 -130
  324. data/spec/swt_shoes/flow_spec.rb +0 -26
  325. data/spec/swt_shoes/font_spec.rb +0 -33
  326. data/spec/swt_shoes/gradient_spec.rb +0 -20
  327. data/spec/swt_shoes/image_pattern_spec.rb +0 -19
  328. data/spec/swt_shoes/image_spec.rb +0 -100
  329. data/spec/swt_shoes/input_box_spec.rb +0 -110
  330. data/spec/swt_shoes/integration_spec.rb +0 -18
  331. data/spec/swt_shoes/key_listener_spec.rb +0 -320
  332. data/spec/swt_shoes/line_spec.rb +0 -43
  333. data/spec/swt_shoes/link_segment_spec.rb +0 -103
  334. data/spec/swt_shoes/link_spec.rb +0 -59
  335. data/spec/swt_shoes/list_box_spec.rb +0 -51
  336. data/spec/swt_shoes/minimal.png +0 -0
  337. data/spec/swt_shoes/mouse_move_listener_spec.rb +0 -129
  338. data/spec/swt_shoes/oval_spec.rb +0 -51
  339. data/spec/swt_shoes/progress_spec.rb +0 -44
  340. data/spec/swt_shoes/radio_group_spec.rb +0 -73
  341. data/spec/swt_shoes/radio_spec.rb +0 -56
  342. data/spec/swt_shoes/rect_painter_spec.rb +0 -45
  343. data/spec/swt_shoes/rect_spec.rb +0 -19
  344. data/spec/swt_shoes/shape_spec.rb +0 -81
  345. data/spec/swt_shoes/shared_examples/button.rb +0 -24
  346. data/spec/swt_shoes/shared_examples/clearable.rb +0 -32
  347. data/spec/swt_shoes/shared_examples/clickable.rb +0 -60
  348. data/spec/swt_shoes/shared_examples/movable.rb +0 -36
  349. data/spec/swt_shoes/shared_examples/paintable_spec.rb +0 -7
  350. data/spec/swt_shoes/shared_examples/painter.rb +0 -83
  351. data/spec/swt_shoes/shared_examples/pattern.rb +0 -32
  352. data/spec/swt_shoes/shared_examples/swt_app_context.rb +0 -17
  353. data/spec/swt_shoes/shared_examples/togglable.rb +0 -15
  354. data/spec/swt_shoes/shell_control_listener_spec.rb +0 -23
  355. data/spec/swt_shoes/sound.rb +0 -10
  356. data/spec/swt_shoes/spec_helper.rb +0 -31
  357. data/spec/swt_shoes/star_spec.rb +0 -47
  358. data/spec/swt_shoes/text_block_cursor_painter_spec.rb +0 -202
  359. data/spec/swt_shoes/text_block_fitter_spec.rb +0 -181
  360. data/spec/swt_shoes/text_block_painter_spec.rb +0 -221
  361. data/spec/swt_shoes/text_block_spec.rb +0 -183
@@ -1,222 +0,0 @@
1
- # syntax highlighting
2
-
3
- require_relative 'common'
4
-
5
- module HH::Markup
6
-
7
- TOKENIZER = HH::Syntax.load "ruby"
8
- COLORS = {
9
- :comment => {:stroke => "#887"},
10
- :keyword => {:stroke => "#111"},
11
- :method => {:stroke => "#C09", :weight => "bold"},
12
- # :class => {:stroke => "#0c4", :weight => "bold"},
13
- # :module => {:stroke => "#050"},
14
- # :punct => {:stroke => "#668", :weight => "bold"},
15
- :symbol => {:stroke => "#C30"},
16
- :string => {:stroke => "#C90"},
17
- :number => {:stroke => "#396" },
18
- :regex => {:stroke => "#000", :fill => "#FFC" },
19
- # :char => {:stroke => "#f07"},
20
- :attribute => {:stroke => "#369" },
21
- # :global => {:stroke => "#7FB" },
22
- :expr => {:stroke => "#722" },
23
- # :escape => {:stroke => "#277" }
24
- :ident => {:stroke => "#994c99"},
25
- :constant => {:stroke => "#630", :weight => "bold"},
26
- :class => {:stroke => "#630", :weight => "bold"},
27
- :matching => {:stroke => "#ff0", :weight => "bold"},
28
- }
29
-
30
-
31
- def highlight str, pos=nil, colors=COLORS
32
- tokens = []
33
- TOKENIZER.tokenize(str) do |t|
34
- if t.group == :punct
35
- # split punctuation into single characters tokens
36
- # TODO: to it in the parser
37
- tokens += t.split('').map{|s| HH::Syntax::Token.new(s, :punct)}
38
- else
39
- # add token as is
40
- tokens << t
41
- end
42
- end
43
-
44
- res = []
45
- tokens.each do |token|
46
- res <<
47
- if colors[token.group]
48
- #span(token, colors[token.group])
49
- tmp = fg(token, colors[token.group][:stroke])
50
- colors[token.group][:fill] ? bg(tmp, colors[token.group][:fill]) : tmp
51
- elsif colors[:any]
52
- #span(token, colors[:any])
53
- tmp = fg(token, colors[:any][:stroke])
54
- colors[:any][:fill] ? bg(tmp, colors[:any][:fill]) : tmp
55
- else
56
- token
57
- end
58
- end
59
-
60
- if pos.nil? or pos < 0
61
- return res
62
- end
63
-
64
- token_index, matching_index = matching_token(tokens, pos)
65
-
66
- if token_index
67
- #res[token_index] = span(tokens[token_index], colors[:matching])
68
- tmp = fg(tokens[token_index], colors[:matching][:stroke])
69
- res[token_index] = colors[:matching][:fill] ? bg(tmp, colors[:matching][:fill]) : tmp
70
- if matching_index
71
- #res[matching_index] = span(tokens[matching_index], colors[:matching])
72
- tmp = fg(tokens[matching_index], colors[:matching][:stroke])
73
- res[matching_index] = colors[:matching][:fill] ? bg(tmp, colors[:matching][:fill]) : tmp
74
- end
75
- end
76
-
77
- res
78
- end
79
-
80
- private
81
- def matching_token(tokens, pos)
82
- curr_pos = 0
83
- token_index = nil
84
- tokens.each_with_index do |t, i|
85
- curr_pos += t.size
86
- if token_index.nil? and curr_pos >= pos
87
- token_index = i
88
- break
89
- end
90
- end
91
- if token_index.nil? then return nil end
92
-
93
- match = matching_token_at_index(tokens, token_index);
94
- if match.nil? and curr_pos == pos and token_index < tokens.size-1
95
- # try the token before the cursor, instead of the one after
96
- token_index += 1
97
- match = matching_token_at_index(tokens, token_index)
98
- end
99
-
100
- if match
101
- [token_index, match]
102
- else
103
- nil
104
- end
105
- end
106
-
107
-
108
- def matching_token_at_index(tokens, index)
109
- starts, ends, direction = matching_tokens(tokens, index)
110
- if starts.nil?
111
- return nil
112
- end
113
-
114
- stack_level = 1
115
- index += direction
116
- while index >= 0 and index < tokens.size
117
- # TODO separate space in the tokenizer
118
- t = tokens[index].gsub(/\s/, '')
119
- if ends.include?(t) and not as_modifier?(tokens, index)
120
- stack_level -= 1
121
- return index if stack_level == 0
122
- elsif starts.include?(t) and not as_modifier?(tokens, index)
123
- stack_level += 1
124
- end
125
- index += direction
126
- end
127
- # no matching token found
128
- return nil
129
- end
130
-
131
- # returns an array of tokens matching and the direction
132
- def matching_tokens(tokens, index)
133
- # TODO separate space in the tokenizer
134
- token = tokens[index].gsub(/\s/, '')
135
- starts = [token]
136
- if OPEN_BRACKETS[token]
137
- direction = 1
138
- ends = [OPEN_BRACKETS[token]]
139
- elsif CLOSE_BRACKETS[token]
140
- direction = -1
141
- ends = [CLOSE_BRACKETS[token]]
142
- elsif OPEN_BLOCK.include?(token)
143
- if as_modifier?(tokens, index)
144
- return nil
145
- end
146
- direction = 1
147
- ends = ['end']
148
- starts = OPEN_BLOCK
149
- elsif token == 'end'
150
- direction = -1
151
- ends = OPEN_BLOCK
152
- else
153
- return nil
154
- end
155
-
156
- [starts, ends, direction]
157
- end
158
-
159
- def as_modifier?(tokens, index)
160
-
161
- if not MODIFIERS.include? tokens[index].gsub(/\s/, '')
162
- return false
163
- end
164
-
165
- index -= 1
166
- # find last index before the token that is no space
167
- index -= 1 while index >= 0 and tokens[index] =~ /\A[ \t]*\z/
168
-
169
- if index < 0
170
- # first character of the string
171
- false
172
- elsif tokens[index] =~ /\n[ \t]*\Z/
173
- # first token of the line
174
- false
175
- elsif tokens[index].group == :punct
176
- # preceded by a punctuation token on the same line
177
- i = tokens[index].rindex(/\S/)
178
- punc = tokens[index][i, 1]
179
- # true if the preceeding statement was terminating
180
- not NON_TERMINATING.include?(punc)
181
- else
182
- # preceded by a non punctuation token on the same line
183
- true
184
- end
185
- end
186
-
187
-
188
- OPEN_BRACKETS = {
189
- '{' => '}',
190
- '(' => ')',
191
- '[' => ']',
192
- }
193
-
194
- #close_bracket = {}
195
- #OPEN_BRACKETS.each{|open, close| opens_bracket[close] = open}
196
- #CLOSE_BRACKETS = opens_bracket
197
- # the following is more readable :)
198
- CLOSE_BRACKETS = {
199
- '}' => '{',
200
- ')' => '(',
201
- ']' => '[',
202
- }
203
-
204
- BRACKETS = CLOSE_BRACKETS.keys + OPEN_BRACKETS.keys
205
-
206
- OPEN_BLOCK = [
207
- 'def',
208
- 'class',
209
- 'module',
210
- 'do',
211
- 'if',
212
- 'unless',
213
- 'while',
214
- 'until',
215
- 'begin',
216
- 'for'
217
- ]
218
-
219
- MODIFIERS = %w[if unless while until]
220
-
221
- NON_TERMINATING = %w{+ - * / , . = ~ < > ( [}
222
- end
@@ -1,19 +0,0 @@
1
- require 'rubygems'
2
- require 'fileutils'
3
-
4
- # See ext/install/Rakefile for why this cleanup is our responsibility.
5
- # Decide if user uninstalled executables based on our actual Ruby script.
6
- Gem.post_uninstall do |gem|
7
- uninstalling_shoes = gem.spec.name == "shoes"
8
- missing_executable = !File.exists?(File.join(Gem.bindir, "ruby-shoes")) &&
9
- !File.exists?(File.join(Gem.bindir, "ruby-shoes.bat"))
10
-
11
- if uninstalling_shoes && missing_executable
12
- puts "Removing shoes"
13
- if Gem.win_platform?
14
- FileUtils.rm(File.join(Gem.bindir, "shoes.bat"))
15
- else
16
- FileUtils.rm(File.join(Gem.bindir, "shoes"))
17
- end
18
- end
19
- end
@@ -1,55 +0,0 @@
1
- class Shoes
2
- class Animation
3
-
4
- # Creates a new Animation.
5
- #
6
- # @overload initialize(opts, &blk)
7
- # @param [Hash] opts An options hash
8
- # @param [Proc] blk A block of code to be executed for each
9
- # animation frame
10
- # @option opts [Integer] :framerate (24) The framerate (frames per second)
11
- # @option opts [Shoes::App] :app The current Shoes app
12
- def initialize(app, opts, blk)
13
- @style = opts
14
- @framerate = @style[:framerate] || 10
15
- @app = app
16
- @blk = blk
17
- @current_frame = 0
18
- @stopped = false
19
- @gui = Shoes.configuration.backend_for(self, @app.gui)
20
- end
21
-
22
- attr_reader :current_frame, :framerate, :blk
23
-
24
- def start
25
- @stopped = false
26
- end
27
-
28
- def stop
29
- @stopped = true
30
- end
31
-
32
- def stopped?
33
- @stopped
34
- end
35
-
36
- def toggle
37
- @stopped = !@stopped
38
- end
39
-
40
- def remove
41
- @removed = true
42
- end
43
-
44
- def removed?
45
- @removed
46
- end
47
-
48
- # Increments the current frame by 1
49
- #
50
- # @return [Integer] The new current frame
51
- def increment_frame
52
- @current_frame += 1
53
- end
54
- end
55
- end
@@ -1,320 +0,0 @@
1
- class Shoes
2
- shoes_icon = File.expand_path("../../../static/shoes-icon.png", __FILE__)
3
- if shoes_icon.include? '.jar!'
4
- SHOES_ICON = File.join(Dir.tmpdir, 'shoes-icon.png').freeze
5
- open SHOES_ICON, 'wb' do |fw|
6
- open shoes_icon, 'rb' do |fr|
7
- fw.write fr.read
8
- end
9
- end
10
- else
11
- SHOES_ICON = shoes_icon.freeze
12
- end
13
-
14
- # Instantiates a new Shoes app.
15
- #
16
- # @param opts [Hash] A hash of options used instantiate the Shoes::App object with.
17
- # @param blk [Proc] The block containing the DSL instructions for the actual app.
18
- #
19
- # @example
20
- # Shoes.app(title: "Chunky") do
21
- # para "Bacon is awesome!"
22
- # end
23
- #
24
- # @return A new instance of Shoes::App
25
- #
26
- # @see Shoes::App#initialize
27
-
28
- def self.app(opts={}, &blk)
29
- Shoes::App.new(opts, &blk)
30
- end
31
-
32
-
33
- # This is the user-facing App object. It is `self` inside of a Shoes.app
34
- # block, and is the context in which a Shoes app is evaled. It delegates most
35
- # of its functionality to an InternalApp object, which interacts with other
36
- # Shoes objects. There should be no unnecessary instance variables or methods
37
- # in this class, so users are free to use whatever names they choose for
38
- # their own code.
39
- class App
40
- include DSL
41
- include BuiltinMethods
42
-
43
- # Instantiates a new Shoes app.
44
- #
45
- # @param opts [Hash] The options to initialize the app with.
46
- # @param blk [Proc] The block containing the DSL instructions to be executed within the app.
47
- #
48
- # @option opts [String] :title ("Shoes 4") The title of the window
49
- # @option opts [Boolean] :resizable (true) Whether the window is resizable
50
- # @option opts [Boolean] :fullscreen (false) Whether the app should start in fullscreen
51
- # @option opts [Fixnum] :width (600) The width of the app window
52
- # @option opts [Fixnum] :height (500) The height of the app window
53
- #
54
- # @see Dimension#initialize
55
-
56
- def initialize(opts={}, &blk)
57
- @__app__ = Shoes::InternalApp.new(self, opts, &blk)
58
- @__app__.setup_gui
59
- Shoes.register self
60
- @__app__.open_gui
61
- end
62
-
63
- # Shoes 3 exposes the app object like this, so we keep it for
64
- # compatibility
65
- def app
66
- self
67
- end
68
-
69
- def window(options={}, &block)
70
- options.merge! owner: self
71
- self.class.new(options, &block)
72
- end
73
-
74
- def close
75
- quit
76
- end
77
-
78
- def quit
79
- Shoes.unregister self
80
- @__app__.quit
81
- end
82
-
83
- def to_s
84
- 'Shoes App: ' + @__app__.app_title
85
- end
86
-
87
- %w(
88
- width height owner started? location left top absolute_left
89
- absolute_top rotate click release clear fullscreen fullscreen=
90
- contents
91
- ).each do |method|
92
- define_method method do |*args, &block|
93
- @__app__.public_send method, *args, &block
94
- end
95
- end
96
-
97
- alias_method :fullscreen?, :fullscreen
98
-
99
- # inspect normally recursively inspects the values of all instance
100
- # variables... as the app has a reference to EVERYTHING this turns
101
- # out to be quite a lot/so much that the app runs out of memory #504
102
- def inspect
103
- "#<#{self.class}:0x#{hash.to_s(16)} @__app__=So much stuff literally breaks the memory limit. Look at it selectively.>"
104
- end
105
-
106
- DELEGATE_BLACKLIST = [:parent]
107
-
108
- # class definitions are evaluated top to bottom, want to have all of them
109
- # so define at bottom
110
- DELEGATE_METHODS = ((Shoes::App.public_instance_methods(false) +
111
- Shoes::DSL.public_instance_methods) - DELEGATE_BLACKLIST).freeze
112
- end
113
-
114
-
115
- # This is the representation of the app that is used internally by Shoes
116
- # objects. It is *NOT* the app object that a user interacts with in a
117
- # Shoes.app block. The user facing App object is...the App object.
118
- #
119
- # The InternalApp object is responsible for maintaining the state of the App
120
- # and providing the bulk of the functionality, leaving the App a relatively
121
- # blank slate for users to bend to their will.
122
- class InternalApp
123
- include Common::Style
124
- include Common::Clickable
125
- include DimensionsDelegations
126
-
127
- DEFAULT_OPTIONS = { :width => 600,
128
- :height => 500,
129
- :title => "Shoes 4",
130
- :resizable => true,
131
- :background => Shoes::COLORS.fetch(:shoes_background) }.freeze
132
-
133
- def initialize(app, opts, &blk)
134
- @app = app
135
- @blk = blk
136
- set_attributes_from_options(opts)
137
- set_initial_attributes
138
- end
139
-
140
- def setup_gui
141
- @gui = Shoes.configuration.backend::App.new self
142
-
143
- execution_blk = create_execution_block(blk)
144
- eval_block execution_blk
145
-
146
- add_console
147
- end
148
-
149
- attr_reader :gui, :top_slot, :contents, :app, :dimensions,
150
- :mouse_motion, :owner, :element_styles, :resize_callbacks
151
- attr_accessor :elements, :current_slot, :opts, :blk, :mouse_button,
152
- :mouse_pos, :mouse_hover_controls, :resizable, :app_title,
153
- :width, :height, :start_as_fullscreen, :location
154
-
155
- def clear(&blk)
156
- top_slot.clear &blk
157
- end
158
-
159
- def width
160
- started? ? gui.width : @dimensions.width
161
- end
162
-
163
- def height
164
- started? ? gui.height : @dimensions.height
165
- end
166
-
167
- def font(path = Shoes::DEFAULT_TEXTBLOCK_FONT)
168
- app.font path
169
- end
170
-
171
- def started?
172
- gui && gui.started?
173
- end
174
-
175
- def rotate angle=nil
176
- @rotate = angle || @rotate || 0
177
- end
178
-
179
- def add_child(child)
180
- if top_slot
181
- top_slot.add_child child
182
- else
183
- contents << child
184
- end
185
- end
186
-
187
- def default_styles
188
- {
189
- :stroke => Shoes::COLORS[:black],
190
- :strokewidth => 1
191
- }
192
- end
193
-
194
- def in_bounds?(x, y)
195
- true
196
- end
197
-
198
- def fullscreen=(state)
199
- gui.fullscreen = state
200
- end
201
-
202
- def fullscreen
203
- gui.fullscreen
204
- end
205
-
206
- alias_method :start_as_fullscreen?, :start_as_fullscreen
207
-
208
- def add_mouse_hover_control(element)
209
- unless mouse_hover_controls.include? element
210
- mouse_hover_controls << element
211
- end
212
- end
213
-
214
- def open_gui
215
- gui.open
216
- end
217
-
218
- def quit
219
- @gui.quit
220
- end
221
-
222
- def scroll_top
223
- gui.scroll_top
224
- end
225
-
226
- def scroll_top=(n)
227
- gui.scroll_top = n
228
- end
229
-
230
- def clipboard
231
- gui.clipboard
232
- end
233
-
234
- def clipboard=(str)
235
- gui.clipboard = str
236
- end
237
-
238
- def download(url, opts, &block)
239
- app.download url, opts, &block
240
- end
241
-
242
- def textcursor(line_height)
243
- app.line(0, 0, 0, line_height, hidden: true, strokewidth: 1, stroke: ::Shoes::COLORS[:black])
244
- end
245
-
246
- def execute_block(blk)
247
- app.instance_eval &blk
248
- end
249
-
250
- def gutter
251
- gui.gutter
252
- end
253
-
254
- def add_resize_callback(blk)
255
- @resize_callbacks << blk
256
- end
257
-
258
- private
259
- def eval_block(execution_blk)
260
- # creating it first, then appending is important because that way
261
- # top_slot already exists and methods may be called on it
262
- @top_slot = Flow.new self, self, width: width, height: height
263
- @top_slot.append &execution_blk
264
- end
265
-
266
- def create_execution_block(blk)
267
- if blk
268
- execution_blk = Proc.new do
269
- execute_block blk
270
- end
271
- elsif Shoes::URL.urls.keys.any? { |page| page.match '/' }
272
- execution_blk = Proc.new do
273
- app.visit '/'
274
- end
275
- else
276
- execution_blk = nil
277
- end
278
- execution_blk
279
- end
280
-
281
- def set_initial_attributes
282
- @style = default_styles
283
- @element_styles = {}
284
- @contents = []
285
- @mouse_motion = []
286
- @mouse_button = 0
287
- @mouse_pos = [0, 0]
288
- @mouse_hover_controls = []
289
- @resize_callbacks = []
290
- @rotate = 0
291
- end
292
-
293
- def set_attributes_from_options(opts)
294
- opts = DEFAULT_OPTIONS.merge(opts)
295
-
296
- @app_title = opts[:title]
297
- @resizable = opts[:resizable]
298
- @start_as_fullscreen = opts[:fullscreen]
299
- @opts = opts
300
- @owner = opts[:owner]
301
- @dimensions = AbsoluteDimensions.new opts
302
- self.absolute_left = 0
303
- self.absolute_top = 0
304
- end
305
-
306
- def add_console
307
- console = Proc.new do
308
- keypress do |key|
309
- ::Shoes::Logger.setup if key == :"alt_/"
310
- end
311
- end
312
- @app.instance_eval &console
313
- end
314
-
315
- def inspect
316
- "#<#{self.class}:0x#{hash.to_s(16)} @app_title=#{@app_title} @dimensions=#{@dimensions.inspect} and a lot of stuff that's too much too handle... and leads to OutOfMemoryErrors>"
317
- end
318
-
319
- end
320
- end