scarpe 0.2.2 → 0.4.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 (378) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -1
  3. data/.yardopts +1 -0
  4. data/CHANGELOG.md +52 -6
  5. data/Gemfile +2 -1
  6. data/Gemfile.lock +20 -6
  7. data/LICENSE.txt +7 -1
  8. data/README.md +100 -21
  9. data/Rakefile +68 -1
  10. data/examples/Edit_box_Styles.rb +8 -0
  11. data/examples/Kerning.rb +7 -0
  12. data/examples/animate.rb +20 -0
  13. data/examples/arrow.rb +10 -0
  14. data/examples/border.rb +11 -0
  15. data/examples/btn_tooltip.rb +7 -0
  16. data/examples/button_style_changed.rb +7 -0
  17. data/examples/button_styles_default.rb +6 -0
  18. data/examples/check.rb +2 -0
  19. data/examples/download_and_show_image.rb +3 -0
  20. data/examples/flags/finland.rb +15 -0
  21. data/examples/flags/italy.rb +11 -0
  22. data/examples/flags/mauritius.rb +14 -0
  23. data/examples/font_family.rb +17 -0
  24. data/examples/font_shorthand.rb +9 -0
  25. data/examples/gen.rb +12 -8
  26. data/examples/highlander.rb +3 -3
  27. data/examples/legacy/README.md +6 -0
  28. data/examples/legacy/not_checked/shoes-contrib/basic/shoes-notes.rb +1 -1
  29. data/examples/legacy/not_checked/shoes-manual/append.rb +10 -0
  30. data/examples/legacy/not_checked/shoes-manual/background_change.rb +12 -0
  31. data/examples/legacy/not_checked/shoes-manual/background_pattern.rb +5 -0
  32. data/examples/legacy/not_checked/shoes-manual/basic_app.rb +8 -0
  33. data/examples/legacy/not_checked/shoes-manual/border.rb +9 -0
  34. data/examples/legacy/not_checked/shoes-manual/builtins/FONTS.rb +5 -0
  35. data/examples/legacy/not_checked/shoes-manual/builtins/ask.rb +2 -0
  36. data/examples/legacy/not_checked/shoes-manual/builtins/ask_color.rb +5 -0
  37. data/examples/legacy/not_checked/shoes-manual/builtins/ask_open_file.rb +5 -0
  38. data/examples/legacy/not_checked/shoes-manual/builtins/ask_save_folder.rb +2 -0
  39. data/examples/legacy/not_checked/shoes-manual/builtins/confirm.rb +4 -0
  40. data/examples/legacy/not_checked/shoes-manual/builtins/debug.rb +2 -0
  41. data/examples/legacy/not_checked/shoes-manual/builtins/info.rb +3 -0
  42. data/examples/legacy/not_checked/shoes-manual/button.rb +9 -0
  43. data/examples/legacy/not_checked/shoes-manual/clear.rb +7 -0
  44. data/examples/legacy/not_checked/shoes-manual/custom_header.rb +13 -0
  45. data/examples/legacy/not_checked/shoes-manual/displace.rb +14 -0
  46. data/examples/legacy/not_checked/shoes-manual/edit_box.rb +8 -0
  47. data/examples/legacy/not_checked/shoes-manual/fill_pattern.rb +5 -0
  48. data/examples/legacy/not_checked/shoes-manual/fonts.rb +7 -0
  49. data/examples/legacy/not_checked/shoes-manual/gutter.rb +6 -0
  50. data/examples/legacy/not_checked/shoes-manual/image_web.rb +4 -0
  51. data/examples/legacy/not_checked/shoes-manual/keypress.rb +7 -0
  52. data/examples/legacy/not_checked/shoes-manual/list_box.rb +10 -0
  53. data/examples/legacy/not_checked/shoes-manual/motion.rb +10 -0
  54. data/examples/legacy/not_checked/shoes-manual/mouse.rb +8 -0
  55. data/examples/legacy/not_checked/shoes-manual/move.rb +14 -0
  56. data/examples/legacy/not_checked/shoes-manual/nested_ovals.rb +8 -0
  57. data/examples/legacy/not_checked/shoes-manual/oval.rb +7 -0
  58. data/examples/legacy/not_checked/shoes-manual/ovals.rb +6 -0
  59. data/examples/legacy/not_checked/shoes-manual/ovals_image.rb +8 -0
  60. data/examples/legacy/not_checked/shoes-manual/prepend.rb +7 -0
  61. data/examples/legacy/not_checked/shoes-manual/progress_bar.rb +10 -0
  62. data/examples/legacy/not_checked/shoes-manual/radio.rb +18 -0
  63. data/examples/legacy/not_checked/shoes-manual/radio_alternative_1.rb +7 -0
  64. data/examples/legacy/not_checked/shoes-manual/radio_alternative_2.rb +9 -0
  65. data/examples/legacy/not_checked/shoes-manual/rotate_rectangle.rb +6 -0
  66. data/examples/legacy/not_checked/shoes-manual/shape.rb +11 -0
  67. data/examples/legacy/not_checked/shoes-manual/static/avatar.png +0 -0
  68. data/examples/legacy/not_checked/shoes-manual/stroke.rb +5 -0
  69. data/examples/legacy/not_checked/shoes-manual/style.rb +3 -0
  70. data/examples/legacy/not_checked/shoes-manual/style_alternative_1.rb +4 -0
  71. data/examples/legacy/not_checked/shoes-manual/style_alternative_2.rb +5 -0
  72. data/examples/legacy/not_checked/shoes-manual/style_length.rb +5 -0
  73. data/examples/legacy/not_checked/shoes-manual/timer.rb +6 -0
  74. data/examples/legacy/not_checked/shoes-manual/trigger_window.rb +8 -0
  75. data/examples/legacy/not_checked/shoes-manual/window_owner.rb +8 -0
  76. data/examples/legacy/not_checked/simple/anim-shapes.rb +1 -1
  77. data/examples/legacy/not_checked/speedometer_app.rb +55 -0
  78. data/examples/legacy/working/shoes_manual/alert_button.rb +2 -0
  79. data/examples/legacy/working/shoes_manual/animate.rb +7 -0
  80. data/examples/legacy/working/shoes_manual/background_para.rb +4 -0
  81. data/examples/legacy/working/shoes_manual/button_alternative.rb +7 -0
  82. data/examples/legacy/working/shoes_manual/checkbox.rb +17 -0
  83. data/examples/legacy/working/shoes_manual/download.rb +12 -0
  84. data/examples/legacy/working/shoes_manual/edit_box.rb +6 -0
  85. data/examples/legacy/working/shoes_manual/editline.rb +7 -0
  86. data/examples/legacy/working/shoes_manual/fixed_height.rb +8 -0
  87. data/examples/legacy/working/shoes_manual/fixed_width.rb +12 -0
  88. data/examples/legacy/working/shoes_manual/image.rb +5 -0
  89. data/examples/legacy/working/shoes_manual/instance_variable_check.rb +10 -0
  90. data/examples/legacy/working/shoes_manual/message.rb +18 -0
  91. data/examples/legacy/working/shoes_manual/rectangle.rb +6 -0
  92. data/examples/legacy/working/shoes_manual/save_download.rb +12 -0
  93. data/examples/legacy/working/shoes_manual/self_check.rb +10 -0
  94. data/examples/legacy/working/shoes_manual/stack.rb +7 -0
  95. data/examples/legacy/working/shoes_manual/style_info.rb +8 -0
  96. data/examples/legacy/working/shoes_manual/utf8_support.rb +8 -0
  97. data/examples/legacy/working/shoes_manual/width.rb +4 -0
  98. data/examples/legacy/working/simple/image-icon.rb +3 -0
  99. data/examples/legacy/{not_checked → working}/simple/image.rb +1 -1
  100. data/examples/list_box_choose.rb +17 -0
  101. data/examples/local_assets/local_file_server.rb +82 -0
  102. data/examples/local_assets/multi_image.rb +5 -0
  103. data/examples/local_assets/sample.gif +0 -0
  104. data/examples/local_assets/sample.mp4 +0 -0
  105. data/examples/local_assets/small.png +0 -0
  106. data/examples/local_fonts.rb +5 -2
  107. data/examples/local_images.rb +2 -3
  108. data/examples/margin.rb +13 -0
  109. data/examples/margin_check.rb +27 -0
  110. data/examples/oval-with-kwargs.rb +3 -0
  111. data/examples/oval.rb +26 -0
  112. data/examples/para/para_text.rb +14 -0
  113. data/examples/para_font_styles.rb +17 -0
  114. data/examples/para_font_variant.rb +6 -0
  115. data/examples/para_fontweight.rb +13 -0
  116. data/examples/parse_xl_funnies.rb +3 -0
  117. data/examples/progress.rb +31 -0
  118. data/examples/radio/radio_groups.rb +2 -2
  119. data/examples/rect.rb +4 -0
  120. data/examples/rotate_shapes.rb +17 -0
  121. data/examples/scarpe_ext.rb +3 -0
  122. data/examples/shapes/star.rb +1 -3
  123. data/examples/simpler-menu.rb +21 -0
  124. data/examples/spacing.rb +1 -1
  125. data/examples/span.rb +4 -2
  126. data/exe/scarpe +2 -1
  127. data/lacci/Gemfile +2 -0
  128. data/lacci/Gemfile.lock +8 -1
  129. data/lacci/lacci.gemspec +2 -2
  130. data/lacci/lib/lacci/scarpe_cli.rb +2 -2
  131. data/lacci/lib/lacci/scarpe_core.rb +2 -1
  132. data/lacci/lib/lacci/version.rb +1 -1
  133. data/lacci/lib/scarpe/niente/app.rb +23 -0
  134. data/lacci/lib/scarpe/niente/display_service.rb +66 -0
  135. data/lacci/lib/scarpe/niente/drawable.rb +59 -0
  136. data/lacci/lib/scarpe/niente/shoes_spec.rb +93 -0
  137. data/lacci/lib/scarpe/niente.rb +32 -0
  138. data/lacci/lib/shoes/app.rb +111 -72
  139. data/lacci/lib/shoes/background.rb +2 -2
  140. data/lacci/lib/shoes/border.rb +2 -2
  141. data/lacci/lib/shoes/builtins.rb +63 -0
  142. data/lacci/lib/shoes/changelog.rb +52 -0
  143. data/lacci/lib/shoes/colors.rb +3 -1
  144. data/lacci/lib/shoes/constants.rb +41 -2
  145. data/lacci/lib/shoes/display_service.rb +80 -18
  146. data/lacci/lib/shoes/download.rb +2 -2
  147. data/lacci/lib/shoes/drawable.rb +654 -0
  148. data/lacci/lib/shoes/drawables/arc.rb +27 -0
  149. data/lacci/lib/shoes/drawables/arrow.rb +21 -0
  150. data/lacci/lib/shoes/drawables/border.rb +28 -0
  151. data/lacci/lib/shoes/drawables/button.rb +57 -0
  152. data/lacci/lib/shoes/drawables/check.rb +33 -0
  153. data/lacci/lib/shoes/drawables/document_root.rb +20 -0
  154. data/lacci/lib/shoes/{widgets → drawables}/edit_box.rb +9 -8
  155. data/lacci/lib/shoes/{widgets → drawables}/edit_line.rb +8 -7
  156. data/lacci/lib/shoes/drawables/flow.rb +20 -0
  157. data/lacci/lib/shoes/drawables/font_helper.rb +62 -0
  158. data/lacci/lib/shoes/{widgets → drawables}/image.rb +7 -7
  159. data/lacci/lib/shoes/drawables/line.rb +17 -0
  160. data/lacci/lib/shoes/drawables/link.rb +31 -0
  161. data/lacci/lib/shoes/drawables/list_box.rb +59 -0
  162. data/lacci/lib/shoes/drawables/oval.rb +48 -0
  163. data/lacci/lib/shoes/drawables/para.rb +206 -0
  164. data/lacci/lib/shoes/drawables/progress.rb +15 -0
  165. data/lacci/lib/shoes/drawables/radio.rb +35 -0
  166. data/lacci/lib/shoes/drawables/rect.rb +18 -0
  167. data/lacci/lib/shoes/{widgets → drawables}/shape.rb +8 -8
  168. data/lacci/lib/shoes/drawables/slot.rb +178 -0
  169. data/lacci/lib/shoes/drawables/stack.rb +21 -0
  170. data/lacci/lib/shoes/drawables/star.rb +28 -0
  171. data/lacci/lib/shoes/drawables/subscription_item.rb +93 -0
  172. data/lacci/lib/shoes/drawables/text_drawable.rb +122 -0
  173. data/lacci/lib/shoes/drawables/video.rb +17 -0
  174. data/lacci/lib/shoes/drawables/widget.rb +74 -0
  175. data/lacci/lib/shoes/drawables.rb +32 -0
  176. data/lacci/lib/shoes/errors.rb +38 -0
  177. data/lacci/lib/shoes/log.rb +2 -2
  178. data/lacci/lib/shoes/margin_helper.rb +79 -0
  179. data/lacci/lib/shoes/ruby_extensions.rb +15 -0
  180. data/lacci/lib/shoes-spec.rb +93 -0
  181. data/lacci/lib/shoes.rb +31 -10
  182. data/lacci/test/.gitignore +1 -0
  183. data/lacci/test/test_draw_context.rb +167 -0
  184. data/lacci/test/test_font_helper.rb +57 -0
  185. data/lacci/test/test_helper.rb +81 -0
  186. data/lacci/test/test_lacci.rb +99 -3
  187. data/lacci/test/test_margin_helper.rb +82 -0
  188. data/lacci/test/test_niente_test_infra.rb +26 -0
  189. data/lacci/test/test_oval.rb +82 -0
  190. data/lacci/test/test_parenting.rb +140 -0
  191. data/lacci/test/test_shoes_errors.rb +49 -0
  192. data/lacci/test/test_text_drawables.rb +23 -0
  193. data/lib/scarpe/assets.rb +18 -0
  194. data/lib/scarpe/cats_cradle.rb +84 -103
  195. data/lib/scarpe/errors.rb +77 -0
  196. data/lib/scarpe/shoes_spec.rb +160 -0
  197. data/lib/scarpe/version.rb +2 -2
  198. data/lib/scarpe/wv/app.rb +21 -20
  199. data/lib/scarpe/wv/arc.rb +4 -51
  200. data/lib/scarpe/wv/arrow.rb +9 -0
  201. data/lib/scarpe/wv/border.rb +9 -18
  202. data/lib/scarpe/wv/button.rb +7 -35
  203. data/lib/scarpe/wv/check.rb +3 -5
  204. data/lib/scarpe/wv/control_interface.rb +20 -30
  205. data/lib/scarpe/wv/document_root.rb +81 -4
  206. data/lib/scarpe/wv/{widget.rb → drawable.rb} +71 -82
  207. data/lib/scarpe/wv/edit_box.rb +8 -18
  208. data/lib/scarpe/wv/edit_line.rb +9 -20
  209. data/lib/scarpe/wv/flow.rb +2 -18
  210. data/lib/scarpe/wv/image.rb +7 -30
  211. data/lib/scarpe/wv/line.rb +3 -25
  212. data/lib/scarpe/wv/link.rb +6 -17
  213. data/lib/scarpe/wv/list_box.rb +6 -29
  214. data/lib/scarpe/wv/oval.rb +13 -0
  215. data/lib/scarpe/wv/para.rb +12 -30
  216. data/lib/scarpe/wv/progress.rb +19 -0
  217. data/lib/scarpe/wv/radio.rb +9 -10
  218. data/lib/scarpe/wv/rect.rb +13 -0
  219. data/lib/scarpe/wv/scarpe_extensions.rb +8 -0
  220. data/lib/scarpe/wv/shape.rb +13 -13
  221. data/lib/scarpe/wv/slot.rb +8 -25
  222. data/lib/scarpe/wv/stack.rb +2 -18
  223. data/lib/scarpe/wv/star.rb +3 -53
  224. data/lib/scarpe/wv/subscription_item.rb +38 -4
  225. data/lib/scarpe/wv/text_drawable.rb +90 -0
  226. data/lib/scarpe/wv/video.rb +15 -15
  227. data/lib/scarpe/wv/web_wrangler.rb +320 -328
  228. data/lib/scarpe/wv/webview_local_display.rb +52 -33
  229. data/lib/scarpe/wv/webview_relay_display.rb +12 -12
  230. data/lib/scarpe/wv/webview_relay_util.rb +7 -10
  231. data/lib/scarpe/wv/wv_display_worker.rb +2 -2
  232. data/lib/scarpe/wv.rb +52 -12
  233. data/lib/scarpe/wv_local.rb +1 -1
  234. data/lib/scarpe/wv_relay.rb +1 -1
  235. data/lib/scarpe.rb +1 -0
  236. data/logger/debug_web_wrangler.json +1 -1
  237. data/logger/scarpe_wv_test.json +1 -1
  238. data/scarpe-components/Gemfile +4 -1
  239. data/scarpe-components/Gemfile.lock +85 -0
  240. data/scarpe-components/README.md +2 -2
  241. data/scarpe-components/assets/bootstrap-themes/bootstrap-cerulean.css +12229 -0
  242. data/scarpe-components/assets/bootstrap-themes/bootstrap-cosmo.css +11810 -0
  243. data/scarpe-components/assets/bootstrap-themes/bootstrap-cyborg.css +12210 -0
  244. data/scarpe-components/assets/bootstrap-themes/bootstrap-darkly.css +12153 -0
  245. data/scarpe-components/assets/bootstrap-themes/bootstrap-flatly.css +12126 -0
  246. data/scarpe-components/assets/bootstrap-themes/bootstrap-icons.min.css +5 -0
  247. data/scarpe-components/assets/bootstrap-themes/bootstrap-journal.css +12099 -0
  248. data/scarpe-components/assets/bootstrap-themes/bootstrap-litera.css +12211 -0
  249. data/scarpe-components/assets/bootstrap-themes/bootstrap-lumen.css +12369 -0
  250. data/scarpe-components/assets/bootstrap-themes/bootstrap-lux.css +11928 -0
  251. data/scarpe-components/assets/bootstrap-themes/bootstrap-materia.css +13184 -0
  252. data/scarpe-components/assets/bootstrap-themes/bootstrap-minty.css +12177 -0
  253. data/scarpe-components/assets/bootstrap-themes/bootstrap-morph.css +12750 -0
  254. data/scarpe-components/assets/bootstrap-themes/bootstrap-pulse.css +11890 -0
  255. data/scarpe-components/assets/bootstrap-themes/bootstrap-quartz.css +12622 -0
  256. data/scarpe-components/assets/bootstrap-themes/bootstrap-sandstone.css +12201 -0
  257. data/scarpe-components/assets/bootstrap-themes/bootstrap-simplex.css +12186 -0
  258. data/scarpe-components/assets/bootstrap-themes/bootstrap-sketchy.css +12451 -0
  259. data/scarpe-components/assets/bootstrap-themes/bootstrap-slate.css +12492 -0
  260. data/scarpe-components/assets/bootstrap-themes/bootstrap-solar.css +12149 -0
  261. data/scarpe-components/assets/bootstrap-themes/bootstrap-spacelab.css +12266 -0
  262. data/scarpe-components/assets/bootstrap-themes/bootstrap-superhero.css +12216 -0
  263. data/scarpe-components/assets/bootstrap-themes/bootstrap-united.css +12077 -0
  264. data/scarpe-components/assets/bootstrap-themes/bootstrap-vapor.css +12549 -0
  265. data/scarpe-components/assets/bootstrap-themes/bootstrap-yeti.css +12325 -0
  266. data/scarpe-components/assets/bootstrap-themes/bootstrap-zephyr.css +12283 -0
  267. data/scarpe-components/assets/bootstrap-themes/bootstrap.bundle.min.js +7 -0
  268. data/scarpe-components/lib/scarpe/components/asset_server.rb +219 -0
  269. data/scarpe-components/lib/scarpe/components/base64.rb +23 -5
  270. data/scarpe-components/lib/scarpe/components/calzini/alert.rb +49 -0
  271. data/scarpe-components/lib/scarpe/components/calzini/art_drawables.rb +227 -0
  272. data/scarpe-components/lib/scarpe/components/calzini/border.rb +38 -0
  273. data/scarpe-components/lib/scarpe/components/calzini/button.rb +37 -0
  274. data/scarpe-components/lib/scarpe/components/calzini/misc.rb +136 -0
  275. data/scarpe-components/lib/scarpe/components/calzini/para.rb +237 -0
  276. data/scarpe-components/lib/scarpe/components/calzini/slots.rb +109 -0
  277. data/scarpe-components/lib/scarpe/components/calzini.rb +236 -0
  278. data/scarpe-components/lib/scarpe/components/errors.rb +24 -0
  279. data/scarpe-components/lib/scarpe/components/file_helpers.rb +1 -0
  280. data/scarpe-components/lib/scarpe/components/html.rb +134 -0
  281. data/scarpe-components/lib/scarpe/components/minitest_export_reporter.rb +83 -0
  282. data/scarpe-components/lib/scarpe/components/minitest_import_runnable.rb +98 -0
  283. data/scarpe-components/lib/scarpe/components/minitest_result.rb +127 -0
  284. data/scarpe-components/lib/scarpe/components/modular_logger.rb +5 -5
  285. data/scarpe-components/lib/scarpe/components/print_logger.rb +22 -3
  286. data/scarpe-components/lib/scarpe/components/process_helpers.rb +37 -0
  287. data/scarpe-components/lib/scarpe/components/promises.rb +14 -14
  288. data/scarpe-components/lib/scarpe/components/segmented_file_loader.rb +36 -17
  289. data/scarpe-components/lib/scarpe/components/string_helpers.rb +10 -0
  290. data/scarpe-components/lib/scarpe/components/tiranti.rb +167 -0
  291. data/scarpe-components/lib/scarpe/components/unit_test_helpers.rb +48 -6
  292. data/scarpe-components/lib/scarpe/components/version.rb +2 -2
  293. data/scarpe-components/test/assets/big-image.png +0 -0
  294. data/scarpe-components/test/assets/big-stylesheet.css +497 -0
  295. data/scarpe-components/test/assets/little-image.png +0 -0
  296. data/scarpe-components/test/assets/little-stylesheet.css +1 -0
  297. data/scarpe-components/test/calzini/test_calzini_alert.rb +30 -0
  298. data/scarpe-components/test/calzini/test_calzini_art_drawables.rb +105 -0
  299. data/scarpe-components/test/calzini/test_calzini_button.rb +54 -0
  300. data/scarpe-components/test/calzini/test_calzini_misc.rb +115 -0
  301. data/scarpe-components/test/calzini/test_calzini_para.rb +34 -0
  302. data/scarpe-components/test/calzini/test_calzini_slots.rb +85 -0
  303. data/scarpe-components/test/calzini/test_calzini_text_drawables.rb +106 -0
  304. data/scarpe-components/test/calzini/test_various.rb +133 -0
  305. data/scarpe-components/test/mtr_data/exception.json +1 -0
  306. data/scarpe-components/test/mtr_data/fail_with_message.json +1 -0
  307. data/scarpe-components/test/mtr_data/skipped_no_message.json +1 -0
  308. data/scarpe-components/test/mtr_data/skipped_w_msg.json +1 -0
  309. data/scarpe-components/test/mtr_data/succeed_2_asserts.json +1 -0
  310. data/scarpe-components/test/test_asset_server.rb +72 -0
  311. data/scarpe-components/test/test_components.rb +31 -2
  312. data/scarpe-components/test/test_dimensions.rb +26 -0
  313. data/scarpe-components/test/test_helper.rb +20 -1
  314. data/scarpe-components/test/test_html.rb +65 -0
  315. data/scarpe-components/test/test_minitest_result.rb +68 -0
  316. data/scarpe-components/test/test_promises.rb +5 -4
  317. data/scarpe-components/test/test_segmented_app_files.rb +10 -6
  318. data/scarpegen.rb +14 -14
  319. data/sig/scarpe.rbs +1 -1
  320. data/tasks/check_html_fixtures.rb +140 -0
  321. data/tasks/regenerate_html_fixtures.rb +104 -0
  322. data/templates/basic_class_template.erb +13 -14
  323. data/templates/class_template_with_event_bind.erb +4 -4
  324. data/templates/class_template_with_shapes.erb +8 -28
  325. data/templates/example_template.erb +1 -1
  326. data/templates/module_template.erb +4 -4
  327. data/templates/webview_template.erb +3 -2
  328. metadata +286 -80
  329. data/examples/legacy/not_checked/shoes-contrib/elements/image-icon.rb +0 -3
  330. data/lacci/lib/shoes/spacing.rb +0 -9
  331. data/lacci/lib/shoes/widget.rb +0 -218
  332. data/lacci/lib/shoes/widgets/alert.rb +0 -19
  333. data/lacci/lib/shoes/widgets/arc.rb +0 -51
  334. data/lacci/lib/shoes/widgets/button.rb +0 -35
  335. data/lacci/lib/shoes/widgets/check.rb +0 -28
  336. data/lacci/lib/shoes/widgets/document_root.rb +0 -20
  337. data/lacci/lib/shoes/widgets/flow.rb +0 -22
  338. data/lacci/lib/shoes/widgets/font.rb +0 -14
  339. data/lacci/lib/shoes/widgets/line.rb +0 -18
  340. data/lacci/lib/shoes/widgets/link.rb +0 -25
  341. data/lacci/lib/shoes/widgets/list_box.rb +0 -25
  342. data/lacci/lib/shoes/widgets/para.rb +0 -68
  343. data/lacci/lib/shoes/widgets/radio.rb +0 -35
  344. data/lacci/lib/shoes/widgets/slot.rb +0 -75
  345. data/lacci/lib/shoes/widgets/span.rb +0 -26
  346. data/lacci/lib/shoes/widgets/stack.rb +0 -24
  347. data/lacci/lib/shoes/widgets/star.rb +0 -44
  348. data/lacci/lib/shoes/widgets/subscription_item.rb +0 -60
  349. data/lacci/lib/shoes/widgets/text_widget.rb +0 -51
  350. data/lacci/lib/shoes/widgets/video.rb +0 -15
  351. data/lacci/lib/shoes/widgets.rb +0 -29
  352. data/lib/scarpe/evented_assertions.rb +0 -88
  353. data/lib/scarpe/wv/alert.rb +0 -66
  354. data/lib/scarpe/wv/background.rb +0 -27
  355. data/lib/scarpe/wv/control_interface_test.rb +0 -238
  356. data/lib/scarpe/wv/dimensions.rb +0 -22
  357. data/lib/scarpe/wv/font.rb +0 -36
  358. data/lib/scarpe/wv/html.rb +0 -108
  359. data/lib/scarpe/wv/spacing.rb +0 -41
  360. data/lib/scarpe/wv/span.rb +0 -68
  361. data/lib/scarpe/wv/text_widget.rb +0 -30
  362. /data/examples/legacy/not_checked/{expert → shoes-contrib/basic}/definr.rb +0 -0
  363. /data/examples/legacy/not_checked/{expert → shoes-contrib/basic}/funnies.rb +0 -0
  364. /data/examples/legacy/not_checked/shoes-contrib/{elements → basic}/list_box-select-class.rb +0 -0
  365. /data/examples/legacy/{not_checked → working}/shoes3-tests/editline/editline.rb +0 -0
  366. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/basic-edit-box.rb +0 -0
  367. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/basic-fps.rb +0 -0
  368. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/border-cat.rb +0 -0
  369. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/check-mate.rb +0 -0
  370. /data/examples/legacy/{not_checked/shoes-contrib/manipulation → working/simple}/clear-slot.rb +0 -0
  371. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/clock.rb +0 -0
  372. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/gradient-shoes.rb +0 -0
  373. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/list_box-shape-report.rb +0 -0
  374. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/list_box.rb +0 -0
  375. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/phat-button.rb +0 -0
  376. /data/examples/legacy/{not_checked/shoes-contrib → working}/simple/simple-calc.rb +0 -0
  377. /data/examples/legacy/{not_checked/shoes-contrib/position → working/simple}/stack-width.rb +0 -0
  378. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/width-introspec.rb +0 -0
@@ -2,8 +2,104 @@
2
2
 
3
3
  require_relative "test_helper"
4
4
 
5
- class TestLacci < Minitest::Test
6
- def test_truth
7
- assert_equal true, true
5
+ class TestLacci < NienteTest
6
+ def test_simple_button_click
7
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
8
+ Shoes.app do
9
+ @b = button "OK" do
10
+ @b.text = "Yup"
11
+ end
12
+ end
13
+ SHOES_APP
14
+ button().trigger_click
15
+ assert_equal "Yup", button().text
16
+ SHOES_SPEC
17
+ end
18
+
19
+ def test_positional_default_values
20
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
21
+ Shoes.app do
22
+ star 15, 35
23
+ end
24
+ SHOES_APP
25
+ s = star()
26
+ assert_equal 10, s.points
27
+ assert_equal 50, s.inner
28
+ SHOES_SPEC
29
+ end
30
+
31
+ def test_positional_args
32
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
33
+ Shoes.app do
34
+ star 10, 25, 8 # Leave outer and inner as default
35
+ end
36
+ SHOES_APP
37
+ s = star()
38
+ assert_equal 10, s.left
39
+ assert_equal 25, s.top
40
+ assert_equal 8, s.points
41
+ assert_equal 50, s.inner
42
+ SHOES_SPEC
43
+ end
44
+
45
+ def test_keyword_args
46
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
47
+ Shoes.app do
48
+ star 5, 6, points: 8, inner: 30
49
+ end
50
+ SHOES_APP
51
+ s = star()
52
+ assert_equal 5, s.left
53
+ assert_equal 6, s.top
54
+ assert_equal 8, s.points
55
+ assert_equal 100, s.outer
56
+ assert_equal 30, s.inner
57
+ SHOES_SPEC
58
+ end
59
+
60
+ def test_too_many_positional_args
61
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
62
+ Shoes.app do
63
+ @s = stack {}
64
+ end
65
+ SHOES_APP
66
+ s = stack("@s")
67
+ assert_raises Shoes::Errors::BadArgumentListError do
68
+ s.star 5, 6, 7, 8, 9, 10, 11
69
+ end
70
+ SHOES_SPEC
71
+ end
72
+
73
+ def test_too_few_positional_args
74
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
75
+ Shoes.app do
76
+ @s = stack {}
77
+ end
78
+ SHOES_APP
79
+ s = stack("@s")
80
+ assert_raises Shoes::Errors::BadArgumentListError do
81
+ s.star 5
82
+ end
83
+ SHOES_SPEC
84
+ end
85
+
86
+ def test_unsupported_feature
87
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC, expect_process_fail: true)
88
+ Shoes.app(features: :html) do
89
+ para "Not supported by Niente, though."
90
+ end
91
+ SHOES_APP
92
+ assert true
93
+ SHOES_SPEC
94
+ end
95
+
96
+ def test_unknown_feature
97
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
98
+ Shoes.app(features: :squid) do
99
+ para "No such feature, though."
100
+ end
101
+ SHOES_APP
102
+ assert true
103
+ SHOES_SPEC
8
104
  end
9
105
  end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ load "lacci/lib/shoes/margin_helper.rb"
4
+
5
+
6
+ class TestMarginHelper < Minitest::Test
7
+ include MarginHelper
8
+
9
+ def test_one_Number_margin
10
+
11
+ kwargs = {:margin => 20}
12
+
13
+ assert_equal({:margin => nil, :margin_left => 20, :margin_top => 20, :margin_right => 20, :margin_bottom => 20},margin_parse(kwargs))
14
+
15
+ end
16
+
17
+ def test_Array_four_margin
18
+
19
+ kwargs = {:margin => [20,20,30,40]}
20
+
21
+ assert_equal({:margin => nil, :margin_left => 20, :margin_top => 20, :margin_right => 30, :margin_bottom => 40},margin_parse(kwargs))
22
+
23
+ end
24
+
25
+ def test_Array_one_margin
26
+
27
+ kwargs = {:margin => [20]}
28
+
29
+ assert_equal({:margin => nil, :margin_left => 20, :margin_top => 20, :margin_right => 20, :margin_bottom => 20},margin_parse(kwargs))
30
+
31
+ end
32
+
33
+
34
+ def test_String_four_margin
35
+
36
+ kwargs = {:margin => "20 30 40 50"}
37
+
38
+ assert_equal({:margin => nil, :margin_left => "20", :margin_top => "30", :margin_right => "40", :margin_bottom => "50"},margin_parse(kwargs))
39
+
40
+ end
41
+
42
+ def test_String_one_margin
43
+
44
+ kwargs = {:margin => "20"}
45
+
46
+ assert_equal({:margin => nil, :margin_left => "20", :margin_top => "20", :margin_right => "20", :margin_bottom => "20"},margin_parse(kwargs))
47
+
48
+ end
49
+
50
+ def test_Hash_four_margin
51
+
52
+ kwargs = {:margin => {left:20,top:20,right:30,bottom:30}}
53
+
54
+ assert_equal({:margin => nil, :margin_left => 20, :margin_top => 20, :margin_right => 30, :margin_bottom => 30},margin_parse(kwargs))
55
+
56
+ end
57
+
58
+ def test_Hash_three_margin
59
+
60
+ kwargs = {:margin => {top:20,right:30,bottom:30}}
61
+
62
+ assert_equal({:margin => nil, :margin_top => 20, :margin_right => 30, :margin_bottom => 30},margin_parse(kwargs))
63
+
64
+ end
65
+
66
+ def test_Hash_two_margin
67
+
68
+ kwargs = {:margin => {left:20,top:20}}
69
+
70
+ assert_equal({:margin => nil, :margin_left => 20, :margin_top => 20},margin_parse(kwargs))
71
+
72
+ end
73
+
74
+ def test_Hash_one_margin
75
+
76
+ kwargs = {:margin => {bottom:30}}
77
+
78
+ assert_equal({:margin => nil, :margin_bottom => 30},margin_parse(kwargs))
79
+
80
+ end
81
+
82
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ class TestNienteTestInfra < NienteTest
6
+ def test_app_fail_in_test
7
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC, expect_process_fail: true)
8
+ Shoes.app do
9
+ @b = button "OK"
10
+ raise "ERROR!"
11
+ end
12
+ SHOES_APP
13
+ assert_equal true, true
14
+ SHOES_SPEC
15
+ end
16
+
17
+ def test_app_fail_in_spec
18
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC, expect_minitest_exception: true)
19
+ Shoes.app do
20
+ @b = button "OK"
21
+ end
22
+ SHOES_APP
23
+ raise "ERROR!"
24
+ SHOES_SPEC
25
+ end
26
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ class TestLacciOval < NienteTest
6
+ # For an oval, the args go left, top, radius, height
7
+ def test_simple_oval_values
8
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
9
+ Shoes.app do
10
+ oval 5, 10, 25 # circle with radius 25 with its upper-left point at 5, 10
11
+ end
12
+ SHOES_APP
13
+ ov = oval()
14
+ assert_equal 5, ov.left
15
+ assert_equal 10, ov.top
16
+ assert_equal 25, ov.radius
17
+ assert_equal 50, ov.width
18
+ assert_equal 50, ov.height
19
+ SHOES_SPEC
20
+ end
21
+
22
+ def test_oval_with_height
23
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
24
+ Shoes.app do
25
+ oval 5, 10, 25, 35 # oval with radius 25, 50 wide, 35 tall
26
+ end
27
+ SHOES_APP
28
+ ov = oval()
29
+ assert_equal 5, ov.left
30
+ assert_equal 10, ov.top
31
+ assert_equal 25, ov.radius
32
+ assert_equal 50, ov.width
33
+ assert_equal 35, ov.height
34
+ SHOES_SPEC
35
+ end
36
+
37
+ def test_simple_oval_keyword_values
38
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
39
+ Shoes.app do
40
+ oval left: 5, top: 10, radius: 25
41
+ end
42
+ SHOES_APP
43
+ ov = oval()
44
+ assert_equal 5, ov.left
45
+ assert_equal 10, ov.top
46
+ assert_equal 25, ov.radius
47
+ assert_equal 50, ov.height
48
+ assert_equal 50, ov.width
49
+ SHOES_SPEC
50
+ end
51
+
52
+ def test_oval_keywords_with_height_but_no_radius
53
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
54
+ Shoes.app do
55
+ oval left: 5, top: 10, height: 25
56
+ end
57
+ SHOES_APP
58
+ ov = oval()
59
+ assert_equal 5, ov.left
60
+ assert_equal 10, ov.top
61
+ assert_equal 12, ov.radius
62
+ assert_equal 25, ov.height
63
+ assert_equal 25, ov.width
64
+ SHOES_SPEC
65
+ end
66
+
67
+ def test_oval_strokewidth
68
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
69
+ Shoes.app do
70
+ strokewidth 3
71
+ oval 5, 10, 25
72
+ end
73
+ SHOES_APP
74
+ ov = oval()
75
+ assert_equal 5, ov.left
76
+ assert_equal 10, ov.top
77
+ assert_equal 25, ov.radius
78
+ assert_equal 3, ov.draw_context["strokewidth"]
79
+ # assert_equal 3, ov.strokewidth # This should work but doesn't yet, see issue #476
80
+ SHOES_SPEC
81
+ end
82
+ end
@@ -0,0 +1,140 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ class TestParenting < NienteTest
6
+ def test_simple_button
7
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
8
+ Shoes.app do
9
+ button "OK"
10
+ end
11
+ SHOES_APP
12
+ # Test that Lacci has set parents properly
13
+ doc_root = button().parent
14
+ assert_equal Shoes::DocumentRoot, doc_root.class
15
+ assert_equal [button().obj], doc_root.contents
16
+
17
+ # Test that Niente has set parents properly
18
+ assert_equal "DocumentRoot", button().display.parent.shoes_type
19
+ SHOES_SPEC
20
+ end
21
+
22
+ def test_button_in_stack
23
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
24
+ Shoes.app do
25
+ stack do
26
+ button "OK"
27
+ end
28
+ end
29
+ SHOES_APP
30
+ # Test that Lacci has set parents properly
31
+ assert_equal Shoes::DocumentRoot, stack().parent.class
32
+ assert_equal Shoes::Stack, button().parent.class
33
+ assert_equal [button().obj], stack().contents
34
+
35
+ # Test that Niente has set parents properly
36
+ assert_equal "DocumentRoot", stack().display.parent.shoes_type
37
+ assert_equal "Stack", button().display.parent.shoes_type
38
+ assert_equal [button().display], stack().display.children
39
+ SHOES_SPEC
40
+ end
41
+
42
+ # We had a bug with this. It wasn't setting @children properly.
43
+ def test_clear_with_no_contents
44
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
45
+ Shoes.app do
46
+ @s = stack do
47
+ end
48
+ button "Clear" do
49
+ @s.clear do
50
+ para "cleared"
51
+ end
52
+ end
53
+ end
54
+ SHOES_APP
55
+ button().trigger_click
56
+ assert_equal "cleared", para.text
57
+ SHOES_SPEC
58
+ end
59
+
60
+ def test_stack_clear
61
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
62
+ Shoes.app do
63
+ @s = stack do
64
+ @p = para "Here"
65
+ end
66
+ button "Clear" do
67
+ @s.clear
68
+ end
69
+ end
70
+ SHOES_APP
71
+ button.trigger_click
72
+ assert_equal [], stack.contents
73
+ SHOES_SPEC
74
+ end
75
+
76
+ def test_drawable_remove
77
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
78
+ Shoes.app do
79
+ @s = stack do
80
+ @p = para "Here"
81
+ end
82
+ button "Clear" do
83
+ @p.remove
84
+ end
85
+ end
86
+ SHOES_APP
87
+ p = para # grab it while it's still there
88
+ button.trigger_click
89
+ assert_equal [], stack.contents
90
+ assert_nil p.parent
91
+ SHOES_SPEC
92
+ end
93
+
94
+ # I don't think Shoes does this. We have to use Lacci-specific methods.
95
+ # It's still good to have a test for it.
96
+ def test_drawable_reparent
97
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
98
+ Shoes.app do
99
+ @s1 = stack do
100
+ @p = para "Move me"
101
+ end
102
+
103
+ @s2 = stack do
104
+ end
105
+
106
+ button "Move It!" do
107
+ @p.set_parent(@s2)
108
+ end
109
+ end
110
+ SHOES_APP
111
+ button.trigger_click
112
+
113
+ # Check parents in Lacci
114
+ assert_equal [], stack("@s1").contents
115
+ assert_equal stack("@s2").obj, para.parent
116
+ assert_equal [para.obj], stack("@s2").contents
117
+
118
+ # Check parents in Niente
119
+ assert_equal [], stack("@s1").display.children
120
+ assert_equal stack("@s2").display, para.display.parent
121
+ assert_equal [para.display], stack("@s2").display.children
122
+ SHOES_SPEC
123
+ end
124
+
125
+ def test_add_to_non_current_slot
126
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
127
+ Shoes.app do
128
+ @s = stack do
129
+ end
130
+ button "Add a Button" do
131
+ @ok_button = @s.button "OK"
132
+ end
133
+ end
134
+ SHOES_APP
135
+ button.trigger_click
136
+ assert_equal [button("@ok_button").obj], stack.contents
137
+ assert_equal stack.obj, button("@ok_button").parent
138
+ SHOES_SPEC
139
+ end
140
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ class TestShoesErrors < NienteTest
6
+ def test_drawable_attr_error
7
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
8
+ Shoes.app do
9
+ button "OK" do
10
+ star 10, 25, "sammy"
11
+ end
12
+ end
13
+ SHOES_APP
14
+ assert_raises Shoes::Errors::InvalidAttributeValueError do
15
+ button().trigger_click
16
+ end
17
+ SHOES_SPEC
18
+ end
19
+
20
+ def test_too_many_instances_error
21
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
22
+ $ruby_main = self
23
+ Shoes.app do
24
+ end
25
+ SHOES_APP
26
+ assert_raises Shoes::Errors::TooManyInstancesError do
27
+ $ruby_main.instance_eval do
28
+ Shoes.app {}
29
+ end
30
+ end
31
+ SHOES_SPEC
32
+ end
33
+
34
+ def test_drawables_found_errors
35
+ run_test_niente_code(<<~SHOES_APP, app_test_code: <<~SHOES_SPEC)
36
+ Shoes.app do
37
+ button "OK"
38
+ button "Not OK"
39
+ end
40
+ SHOES_APP
41
+ assert_raises Shoes::Errors::MultipleDrawablesFoundError do
42
+ button()
43
+ end
44
+ assert_raises Shoes::Errors::NoDrawablesFoundError do
45
+ edit_line()
46
+ end
47
+ SHOES_SPEC
48
+ end
49
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ class TestTextDrawables < NienteTest
6
+ def test_simple_button
7
+ run_test_niente_code(<<~'SHOES_APP', app_test_code: <<~'SHOES_SPEC')
8
+ Shoes.app do
9
+ para "These are ", em("emphatically"), " ", strong("strongly"), " text drawables!"
10
+ end
11
+ SHOES_APP
12
+ assert_equal "These are emphatically strongly text drawables!", para.text
13
+
14
+ # Test that Lacci has set parents properly
15
+ assert_equal Shoes::DocumentRoot, para.parent.class
16
+ assert_equal [Shoes::Para], para.parent.contents.map(&:class)
17
+
18
+ # Test that Niente has set parents properly
19
+ assert_equal "DocumentRoot", para().display.parent.shoes_type
20
+ assert_equal ["Para"], document_root.display.children.map(&:shoes_type), "Doc root should have only para as a child!"
21
+ SHOES_SPEC
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "scarpe/components/asset_server"
4
+
5
+ module Scarpe::Webview
6
+ def self.asset_server
7
+ return @asset_server if @asset_server
8
+
9
+ @asset_server = Scarpe::Components::AssetServer.new app_dir: Shoes::App.instance.dir
10
+
11
+ # at_exit doesn't work reliably under webview. Give this a try.
12
+ ::Scarpe::Webview::DisplayService.instance.control_interface.on_event(:shutdown) do
13
+ @asset_server&.kill_server
14
+ end
15
+
16
+ @asset_server
17
+ end
18
+ end