scarpe 0.2.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Scarpe
4
- # This is the simplest type of Webview DisplayService. It creates Webview widgets
5
- # corresponding to Shoes widgets, manages the Webview and its DOM tree, and
3
+ module Scarpe
4
+ # This is the simplest type of Webview DisplayService. It creates Webview drawables
5
+ # corresponding to Shoes drawables, manages the Webview and its DOM tree, and
6
6
  # generally keeps the Shoes/Webview connection working.
7
7
  #
8
8
  # This is an in-process Webview-based display service, with all the limitations that
@@ -10,7 +10,7 @@ class Scarpe
10
10
  # process, too many or too large evals can crash the process, etc.
11
11
  # Frequently it's better to use a RelayDisplayService to a second
12
12
  # process containing one of these.
13
- class WebviewDisplayService < Shoes::DisplayService
13
+ class Webview::DisplayService < Shoes::DisplayService
14
14
  include Shoes::Log
15
15
 
16
16
  class << self
@@ -20,67 +20,86 @@ class Scarpe
20
20
  # The ControlInterface is used to handle internal events in Webview Scarpe
21
21
  attr_reader :control_interface
22
22
 
23
- # The DocumentRoot is the top widget of the Webview-side widget tree
23
+ # The DocumentRoot is the top drawable of the Webview-side drawable tree
24
24
  attr_reader :doc_root
25
25
 
26
- # app is the Scarpe::WebviewApp
26
+ # app is the Scarpe::Webview::App
27
27
  attr_reader :app
28
28
 
29
29
  # wrangler is the Scarpe::WebWrangler
30
30
  attr_reader :wrangler
31
31
 
32
- # This is called before any of the various WebviewWidgets are created, to be
32
+ # This is called before any of the various Webview::Drawables are created, to be
33
33
  # able to create them and look them up.
34
34
  def initialize
35
- if WebviewDisplayService.instance
36
- raise "ERROR! This is meant to be a singleton!"
35
+ if Webview::DisplayService.instance
36
+ raise Shoes::Errors::SingletonError, "ERROR! This is meant to be a singleton!"
37
37
  end
38
38
 
39
- WebviewDisplayService.instance = self
39
+ Webview::DisplayService.instance = self
40
40
 
41
41
  super()
42
- log_init("WV::WebviewDisplayService")
42
+ log_init("Webview::DisplayService")
43
43
 
44
- @display_widget_for = {}
44
+ @display_drawable_for = {}
45
45
  end
46
46
 
47
- # Create a Webview display widget for a specific Shoes widget, and pair it with
48
- # the linkable ID for this Shoes widget.
47
+ # Create a Webview display drawable for a specific Shoes drawable, and pair it with
48
+ # the linkable ID for this Shoes drawable.
49
49
  #
50
- # @param widget_class_name [String] The class name of the Shoes widget, e.g. Shoes::Button
51
- # @param widget_id [String] the linkable ID for widget events
52
- # @param properties [Hash] a JSON-serialisable Hash with the widget's display properties
53
- # @return [WebviewWidget] the newly-created Webview widget
54
- def create_display_widget_for(widget_class_name, widget_id, properties)
55
- if widget_class_name == "App"
50
+ # @param drawable_class_name [String] The class name of the Shoes drawable, e.g. Shoes::Button
51
+ # @param drawable_id [String] the linkable ID for drawable events
52
+ # @param properties [Hash] a JSON-serialisable Hash with the drawable's Shoes styles
53
+ # @param is_widget [Boolean] whether the class is a user-defined Shoes::Widget subclass
54
+ # @return [Webview::Drawable] the newly-created Webview drawable
55
+ def create_display_drawable_for(drawable_class_name, drawable_id, properties, parent_id:, is_widget:)
56
+ existing = query_display_drawable_for(drawable_id, nil_ok: true)
57
+ if existing
58
+ @log.warn("There is already a Scarpe drawable for #{drawable_id.inspect}! Returning #{existing.class.name} rather than creating a #{drawable_class_name}.")
59
+ return existing
60
+ end
61
+
62
+ if drawable_class_name == "App"
56
63
  unless @doc_root
57
- raise "WebviewDocumentRoot is supposed to be created before WebviewApp!"
64
+ raise Scarpe::MissingDocRootError, "Webview::DocumentRoot is supposed to be created before Webview::App!"
58
65
  end
59
66
 
60
- display_app = Scarpe::WebviewApp.new(properties)
67
+ display_app = Scarpe::Webview::App.new(properties)
61
68
  display_app.document_root = @doc_root
62
69
  @control_interface = display_app.control_interface
63
70
  @control_interface.doc_root = @doc_root
64
71
  @app = @control_interface.app
65
72
  @wrangler = @control_interface.wrangler
66
73
 
67
- set_widget_pairing(widget_id, display_app)
74
+ set_drawable_pairing(drawable_id, display_app)
68
75
 
69
76
  return display_app
70
77
  end
71
78
 
72
- # Create a corresponding display widget
73
- display_class = Scarpe::WebviewWidget.display_class_for(widget_class_name)
74
- display_widget = display_class.new(properties)
75
- set_widget_pairing(widget_id, display_widget)
79
+ # Create a corresponding display drawable
80
+
81
+ if is_widget
82
+ display_class = Scarpe::Webview::Flow
83
+ else
84
+ display_class = Scarpe::Webview::Drawable.display_class_for(drawable_class_name)
85
+ unless display_class < Scarpe::Webview::Drawable
86
+ raise Scarpe::BadDisplayClassType, "Wrong display class type #{display_class.inspect} for class name #{drawable_class_name.inspect}!"
87
+ end
88
+ end
89
+ display_drawable = display_class.new(properties)
90
+ set_drawable_pairing(drawable_id, display_drawable)
76
91
 
77
- if widget_class_name == "DocumentRoot"
78
- # WebviewDocumentRoot is created before WebviewApp. Mostly doc_root is just like any other widget,
79
- # but we'll want a reference to it when we create WebviewApp.
80
- @doc_root = display_widget
92
+ if drawable_class_name == "DocumentRoot"
93
+ # DocumentRoot is created before App. Mostly doc_root is just like any other drawable,
94
+ # but we'll want a reference to it when we create App.
95
+ @doc_root = display_drawable
81
96
  end
82
97
 
83
- display_widget
98
+ # Nil parent is fine for DocumentRoot and any TextDrawable, so we have to specify it.
99
+ display_parent = Scarpe::Webview::DisplayService.instance.query_display_drawable_for(parent_id, nil_ok: true)
100
+ display_drawable.set_parent(display_parent)
101
+
102
+ display_drawable
84
103
  end
85
104
 
86
105
  # Destroy the display service and the app. Quit the process (eventually.)
@@ -88,7 +107,7 @@ class Scarpe
88
107
  # @return [void]
89
108
  def destroy
90
109
  @app.destroy
91
- WebviewDisplayService.instance = nil
110
+ Webview::DisplayService.instance = nil
92
111
  end
93
112
  end
94
113
  end
@@ -5,16 +5,16 @@ require "rbconfig"
5
5
 
6
6
  require_relative "webview_relay_util"
7
7
 
8
- class Scarpe
8
+ module Scarpe
9
9
  # This display service creates a child process and sends events
10
- # back and forth, but creates no widgets of its own. The child
11
- # process will spawn a worker with its own WebviewDisplayService
10
+ # back and forth, but creates no drawables of its own. The child
11
+ # process will spawn a worker with its own Webview::DisplayService
12
12
  # where the real Webview exists. By splitting the Webview
13
- # process from the Shoes widgets, it can be easier to return
13
+ # process from the Shoes drawables, it can be easier to return
14
14
  # control to Webview's event handler promptly. Also, the Ruby
15
15
  # process could run background threads if it wanted, and
16
16
  # otherwise behave like a process ***not*** containing Webview.
17
- class WVRelayDisplayService < Shoes::DisplayService
17
+ class Webview::RelayDisplayService < Shoes::DisplayService
18
18
  include Shoes::Log
19
19
  include WVRelayUtil # Needs Shoes::Log
20
20
 
@@ -23,7 +23,7 @@ class Scarpe
23
23
  # Create a Webview Relay Display Service
24
24
  def initialize
25
25
  super()
26
- log_init("WV::RelayDisplayService")
26
+ log_init("Webview::RelayDisplayService")
27
27
 
28
28
  @event_subs = []
29
29
  @shutdown = false
@@ -46,7 +46,7 @@ class Scarpe
46
46
  if event_name == "run"
47
47
  run_event_loop
48
48
  end
49
- rescue AppShutdownError
49
+ rescue Scarpe::AppShutdownError
50
50
  @shutdown = true
51
51
  @log.info("Attempting to shut down...")
52
52
  self.destroy
@@ -59,16 +59,16 @@ class Scarpe
59
59
  respond_to_datagram while ready_to_read?
60
60
  sleep 0.1
61
61
  end
62
- rescue AppShutdownError
62
+ rescue Scarpe::AppShutdownError
63
63
  @shutdown = true
64
64
  @log.info("Attempting to shut down...")
65
65
  self.destroy
66
66
  end
67
67
 
68
- # This method sends a message to the worker process to create a widget. No actual
69
- # widget is created or registered with the display service.
70
- def create_display_widget_for(widget_class_name, widget_id, properties)
71
- send_datagram({ type: :create, class_name: widget_class_name, id: widget_id, properties: })
68
+ # This method sends a message to the worker process to create a drawable. No actual
69
+ # drawable is created or registered with the display service.
70
+ def create_display_drawable_for(drawable_class_name, drawable_id, properties)
71
+ send_datagram({ type: :create, class_name: drawable_class_name, id: drawable_id, properties: })
72
72
  # Don't need to return anything. It wouldn't be used anyway.
73
73
  end
74
74
 
@@ -2,10 +2,7 @@
2
2
 
3
3
  require "socket"
4
4
 
5
- class Scarpe
6
- # An error occurred which would normally be handled by shutting down the app
7
- class AppShutdownError < Scarpe::Error; end
8
-
5
+ module Scarpe
9
6
  # WVRelayUtil defines the datagram format for the sockets that connect a parent
10
7
  # Shoes application with a child display server.
11
8
  #
@@ -24,7 +21,7 @@ class Scarpe
24
21
  return if r.nil?
25
22
 
26
23
  unless e.empty?
27
- raise "#{@i_am}: Got error on connection(s) from IO.select! Dying!"
24
+ raise Scarpe::ConnectionError, "#{@i_am}: Got error on connection(s) from IO.select! Dying!"
28
25
  end
29
26
 
30
27
  !r.empty?
@@ -43,7 +40,7 @@ class Scarpe
43
40
  until written == to_write
44
41
  count = @to.write(dgram_str.byteslice(written..-1))
45
42
  if count.nil? || count == 0
46
- raise "Something was wrong in send_datagram! Write returned #{count.inspect}!"
43
+ raise Scarpe::DatagramSendError, "Something was wrong in send_datagram! Write returned #{count.inspect}!"
47
44
  end
48
45
 
49
46
  written += count
@@ -73,7 +70,7 @@ class Scarpe
73
70
  new_bytes = @from.read(10)
74
71
  if new_bytes.nil?
75
72
  # This is perfectly normal, if the connection closed
76
- raise AppShutdownError, "Got an unexpected EOF reading datagram! " +
73
+ raise Scarpe::AppShutdownError, "Got an unexpected EOF reading datagram! " +
77
74
  "Did the #{@i_am == :child ? "parent" : "child"} process die?"
78
75
  end
79
76
  @readbuf << new_bytes
@@ -90,7 +87,7 @@ class Scarpe
90
87
  @readbuf << new_bytes
91
88
  end
92
89
  rescue
93
- raise AppShutdownError, "Got exception #{$!.class} when receiving datagram... #{$!.inspect}"
90
+ raise Scarpe::AppShutdownError, "Got exception #{$!.class} when receiving datagram... #{$!.inspect}"
94
91
  end
95
92
 
96
93
  # Read a datagram from the internal buffer and then dispatch it to the
@@ -109,9 +106,9 @@ class Scarpe
109
106
  **kwargs_hash,
110
107
  )
111
108
  elsif m_data["type"] == "create"
112
- raise "Parent process should never receive :create datagram!" if @i_am == :parent
109
+ raise Scarpe::InvalidOperationError, "Parent process should never receive :create datagram!" if @i_am == :parent
113
110
 
114
- @wv_display.create_display_widget_for(m_data["class_name"], m_data["id"], m_data["properties"])
111
+ @wv_display.create_display_drawable_for(m_data["class_name"], m_data["id"], m_data["properties"])
115
112
  elsif m_data["type"] == "destroy"
116
113
  if @i_am == :parent
117
114
  @shutdown = true
@@ -38,11 +38,11 @@ class Scarpe::Webview::ContainedService < Shoes::Linkable
38
38
  # @param to [Socket] a writable socket on which to send output to the Shoes process
39
39
  def initialize(from, to)
40
40
  super()
41
- log_init("WV::DisplayWorker")
41
+ log_init("Webview::DisplayWorker")
42
42
 
43
43
  @i_am = :child
44
44
  @event_subs = []
45
- @wv_display = Scarpe::WebviewDisplayService.new
45
+ @wv_display = Scarpe::Webview::DisplayService.new
46
46
 
47
47
  @from = from
48
48
  @to = to
data/lib/scarpe/wv.rb CHANGED
@@ -8,11 +8,26 @@ require "securerandom"
8
8
  require "json"
9
9
 
10
10
  require "bloops"
11
+ require "scarpe/components/html" # HTML renderer
11
12
  require "scarpe/components/modular_logger"
12
13
  require "scarpe/components/promises"
14
+ require "scarpe/components/string_helpers"
13
15
 
14
16
  # Module to contain the various Scarpe Webview classes
15
- module Scarpe::Webview; end
17
+ module Scarpe::Webview
18
+ HTML = Scarpe::Components::HTML
19
+ end
20
+
21
+ # Set up Scarpe-Webview's HTML renderer
22
+ ren = ENV["SCARPE_HTML_RENDERER"] || "calzini"
23
+ # This should *not* be require_relative so that other gems can implement HTML renderers.
24
+ require "scarpe/components/#{ren}"
25
+ class Scarpe::Webview::Drawable < Shoes::Linkable
26
+ # By default it's Scarpe::Components::Calzini
27
+ comp = Scarpe::Components::StringHelpers.camelize(ENV["SCARPE_HTML_RENDERER"] || "calzini")
28
+ mod = Scarpe::Components.const_get(comp)
29
+ include mod
30
+ end
16
31
 
17
32
  # Set up hierarchical logging using the SCARPE_LOG_CONFIG var for configuration
18
33
  log_config = if ENV["SCARPE_LOG_CONFIG"]
@@ -28,22 +43,42 @@ require "scarpe/components/segmented_file_loader"
28
43
  loader = Scarpe::Components::SegmentedFileLoader.new
29
44
  Shoes.add_file_loader loader
30
45
 
46
+ # Fun trivia: listing the full set of available fonts is a fingerprinting attack, so it's not
47
+ # available from JS. These are all commonly available web fonts, though.
48
+ Shoes::FONTS.push(
49
+ "Helvetica",
50
+ "Arial",
51
+ "Arial Black",
52
+ "Verdana",
53
+ "Tahoma",
54
+ "Trebuchet MS",
55
+ "Impact",
56
+ "Gill Sans",
57
+ "Times New Roman",
58
+ "Georgia",
59
+ "Palatino",
60
+ "Baskerville",
61
+ "Courier",
62
+ "Lucida",
63
+ "Monaco",
64
+ )
65
+
66
+ Shoes::FEATURES.push(:html)
67
+ Shoes::EXTENSIONS.push(:scarpe)
68
+
69
+ require_relative "shoes_spec"
70
+ Shoes::Spec.instance = Scarpe::Test
71
+
31
72
  require_relative "wv/web_wrangler"
32
73
  require_relative "wv/control_interface"
33
74
 
34
- require_relative "wv/widget"
35
-
36
- require_relative "wv/dimensions"
37
- require_relative "wv/html"
75
+ require_relative "wv/drawable"
38
76
 
39
- require_relative "wv/spacing"
40
77
  require_relative "wv/star"
78
+ require_relative "wv/oval"
41
79
  require_relative "wv/radio"
42
- require_relative "wv/background"
43
- require_relative "wv/border"
44
80
 
45
81
  require_relative "wv/arc"
46
- require_relative "wv/font"
47
82
 
48
83
  require_relative "wv/app"
49
84
  require_relative "wv/para"
@@ -57,12 +92,17 @@ require_relative "wv/image"
57
92
  require_relative "wv/edit_box"
58
93
  require_relative "wv/edit_line"
59
94
  require_relative "wv/list_box"
60
- require_relative "wv/alert"
61
- require_relative "wv/span"
62
95
  require_relative "wv/shape"
63
96
 
64
- require_relative "wv/text_widget"
97
+ require_relative "wv/text_drawable"
65
98
  require_relative "wv/link"
66
99
  require_relative "wv/line"
100
+ require_relative "wv/rect"
67
101
  require_relative "wv/video"
68
102
  require_relative "wv/check"
103
+ require_relative "wv/progress"
104
+ require_relative "wv/arrow"
105
+
106
+ require_relative "wv/scarpe_extensions"
107
+ require_relative "assets"
108
+ require_relative "wv/border"
@@ -3,4 +3,4 @@
3
3
  require_relative "wv"
4
4
  require_relative "wv/webview_local_display"
5
5
 
6
- Shoes::DisplayService.set_display_service_class(Scarpe::WebviewDisplayService)
6
+ Shoes::DisplayService.set_display_service_class(Scarpe::Webview::DisplayService)
@@ -3,4 +3,4 @@
3
3
  require_relative "wv"
4
4
  require_relative "wv/webview_relay_display"
5
5
 
6
- Shoes::DisplayService.set_display_service_class(Scarpe::WVRelayDisplayService)
6
+ Shoes::DisplayService.set_display_service_class(Scarpe::Webview::RelayDisplayService)
data/lib/scarpe.rb CHANGED
@@ -10,4 +10,5 @@ require "lacci/scarpe_core"
10
10
 
11
11
  d_s = ENV["SCARPE_DISPLAY_SERVICE"] || "wv_local"
12
12
  # This is require, not require_relative, to allow gems to supply a new display service
13
+ require "scarpe/errors"
13
14
  require "scarpe/#{d_s}"
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "default": "warn",
3
- "WV::WebWrangler": ["debug", "logger/web_wrangler.log"]
3
+ "Webview::WebWrangler": ["debug", "logger/web_wrangler.log"]
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "default": ["debug", "logger/test_failure.log"],
3
- "WebviewAPI": ["debug", "logger/test_failure_wv_api.log"]
3
+ "Webview::API": ["debug", "logger/test_failure_wv_api.log"]
4
4
  }
@@ -8,11 +8,14 @@ gem "lacci", path: "../lacci"
8
8
 
9
9
  gem "rake", "~> 13.0"
10
10
 
11
- gem "nokogiri"
11
+ #gem "nokogiri"
12
12
 
13
13
  group :test do
14
14
  gem "minitest", "~> 5.0"
15
15
  gem "minitest-reporters"
16
+
17
+ # Dependencies for specific components being tested
18
+ gem "webrick"
16
19
  end
17
20
 
18
21
  group :development do
@@ -0,0 +1,85 @@
1
+ PATH
2
+ remote: ../lacci
3
+ specs:
4
+ lacci (0.3.0)
5
+ scarpe-components
6
+
7
+ PATH
8
+ remote: .
9
+ specs:
10
+ scarpe-components (0.3.0)
11
+
12
+ GEM
13
+ remote: https://rubygems.org/
14
+ specs:
15
+ ansi (1.5.0)
16
+ ast (2.4.2)
17
+ base64 (0.1.1)
18
+ builder (3.2.4)
19
+ debug (1.8.0)
20
+ irb (>= 1.5.0)
21
+ reline (>= 0.3.1)
22
+ io-console (0.6.0)
23
+ irb (1.8.0)
24
+ rdoc (~> 6.5)
25
+ reline (>= 0.3.6)
26
+ json (2.6.3)
27
+ language_server-protocol (3.17.0.3)
28
+ minitest (5.19.0)
29
+ minitest-reporters (1.6.1)
30
+ ansi
31
+ builder
32
+ minitest (>= 5.0)
33
+ ruby-progressbar
34
+ parallel (1.23.0)
35
+ parser (3.2.2.3)
36
+ ast (~> 2.4.1)
37
+ racc
38
+ psych (5.1.0)
39
+ stringio
40
+ racc (1.7.1)
41
+ rainbow (3.1.1)
42
+ rake (13.0.6)
43
+ rdoc (6.5.0)
44
+ psych (>= 4.0.0)
45
+ regexp_parser (2.8.1)
46
+ reline (0.3.8)
47
+ io-console (~> 0.5)
48
+ rexml (3.2.6)
49
+ rubocop (1.56.2)
50
+ base64 (~> 0.1.1)
51
+ json (~> 2.3)
52
+ language_server-protocol (>= 3.17.0)
53
+ parallel (~> 1.10)
54
+ parser (>= 3.2.2.3)
55
+ rainbow (>= 2.2.2, < 4.0)
56
+ regexp_parser (>= 1.8, < 3.0)
57
+ rexml (>= 3.2.5, < 4.0)
58
+ rubocop-ast (>= 1.28.1, < 2.0)
59
+ ruby-progressbar (~> 1.7)
60
+ unicode-display_width (>= 2.4.0, < 3.0)
61
+ rubocop-ast (1.29.0)
62
+ parser (>= 3.2.1.0)
63
+ rubocop-shopify (2.14.0)
64
+ rubocop (~> 1.51)
65
+ ruby-progressbar (1.13.0)
66
+ stringio (3.0.8)
67
+ unicode-display_width (2.4.2)
68
+ webrick (1.8.1)
69
+
70
+ PLATFORMS
71
+ x86_64-darwin-22
72
+
73
+ DEPENDENCIES
74
+ debug
75
+ lacci!
76
+ minitest (~> 5.0)
77
+ minitest-reporters
78
+ rake (~> 13.0)
79
+ rubocop (~> 1.21)
80
+ rubocop-shopify
81
+ scarpe-components!
82
+ webrick
83
+
84
+ BUNDLED WITH
85
+ 2.4.14
@@ -2,9 +2,9 @@
2
2
 
3
3
  Scarpe is several things. We package up the Shoes API with as few implementation details as possible (called Lacci.) We have a Webview-based display library, in both local and over-a-socket (relay) versions. We have a Wasm display library (Scarpe-Wasm) in a separate gem.
4
4
 
5
- And we have various default implementations of different reusable components. Scarpe's hierarchical logger isn't particularly specific to your display library or underlying GUI library, but we'd like it to be usable by multiple display libs. CatsCradle is only useful if you're trying to fix up an impedance mismatch between Ruby and an evented under-layer, but it's not really specific to Webview. Scarpe's default downloader, using Ruby's built-in HTTP libraries, is good in many cases but you might want to replace it (e.g. with Typhoeus for better parallel downloads or Hystrix for robustness to bad network connections) in some cases.
5
+ And we have various default implementations of different reusable components. Calzini is a Shoes-to-HTML renderer shared between Scarpe-Webview and Scarpe-Wasm. Scarpe's hierarchical logger isn't particularly specific to your display library or underlying GUI library and we'd like it to be usable by multiple display libs. Scarpe's default downloader, using Ruby's built-in HTTP libraries, is good in many cases but you might want to replace it (e.g. with Typhoeus for better parallel downloads or Hystrix for robustness to bad network connections) in some cases.
6
6
 
7
- Part of our solution is the Scarpe-Components gem, which lives in the same repository as Scarpe (for now?). These components can live there. Any specific display library can pick and choose what it wants or needs and handle its dependencies as it sees fit.
7
+ Part of our solution is the Scarpe-Components gem, which lives in the same repository as Scarpe and Lacci for now. These components can live there. Any specific display library can pick and choose what it wants or needs and handle its dependencies as it sees fit.
8
8
 
9
9
  ## Dependency Hell
10
10