scarpe 0.2.2 → 0.3.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 (223) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/CHANGELOG.md +16 -2
  4. data/Gemfile.lock +7 -3
  5. data/README.md +24 -8
  6. data/Rakefile +1 -1
  7. data/examples/animate.rb +20 -0
  8. data/examples/arrow.rb +10 -0
  9. data/examples/btn_tooltip.rb +7 -0
  10. data/examples/button_style_changed.rb +7 -0
  11. data/examples/button_styles_default.rb +6 -0
  12. data/examples/gen.rb +8 -8
  13. data/examples/highlander.rb +3 -3
  14. data/examples/legacy/README.md +6 -0
  15. data/examples/legacy/not_checked/shoes-contrib/basic/shoes-notes.rb +1 -1
  16. data/examples/legacy/not_checked/simple/anim-shapes.rb +1 -1
  17. data/examples/legacy/not_checked/speedometer_app.rb +55 -0
  18. data/examples/legacy/working/simple/image-icon.rb +3 -0
  19. data/examples/legacy/{not_checked → working}/simple/image.rb +1 -1
  20. data/examples/list_box_choose.rb +17 -0
  21. data/examples/local_assets/local_file_server.rb +82 -0
  22. data/examples/local_assets/sample.gif +0 -0
  23. data/examples/local_assets/sample.mp4 +0 -0
  24. data/examples/local_fonts.rb +2 -2
  25. data/examples/local_images.rb +2 -3
  26. data/examples/para/para_text.rb +14 -0
  27. data/examples/progress.rb +31 -0
  28. data/examples/radio/radio_groups.rb +2 -2
  29. data/examples/rect.rb +4 -0
  30. data/examples/rotate_shapes.rb +17 -0
  31. data/examples/simpler-menu.rb +21 -0
  32. data/exe/scarpe +2 -1
  33. data/lacci/Gemfile +2 -0
  34. data/lacci/Gemfile.lock +8 -1
  35. data/lacci/lacci.gemspec +1 -1
  36. data/lacci/lib/lacci/scarpe_cli.rb +2 -1
  37. data/lacci/lib/lacci/scarpe_core.rb +2 -1
  38. data/lacci/lib/lacci/version.rb +1 -1
  39. data/lacci/lib/scarpe/niente/app.rb +23 -0
  40. data/lacci/lib/scarpe/niente/display_service.rb +62 -0
  41. data/lacci/lib/scarpe/niente/drawable.rb +57 -0
  42. data/lacci/lib/scarpe/niente/logger.rb +29 -0
  43. data/lacci/lib/scarpe/niente/shoes_spec.rb +87 -0
  44. data/lacci/lib/scarpe/niente.rb +20 -0
  45. data/lacci/lib/shoes/app.rb +88 -43
  46. data/lacci/lib/shoes/background.rb +2 -2
  47. data/lacci/lib/shoes/border.rb +2 -2
  48. data/lacci/lib/shoes/builtins.rb +63 -0
  49. data/lacci/lib/shoes/changelog.rb +52 -0
  50. data/lacci/lib/shoes/colors.rb +3 -1
  51. data/lacci/lib/shoes/constants.rb +19 -1
  52. data/lacci/lib/shoes/display_service.rb +39 -16
  53. data/lacci/lib/shoes/download.rb +2 -2
  54. data/lacci/lib/shoes/drawable.rb +380 -0
  55. data/lacci/lib/shoes/drawables/arc.rb +49 -0
  56. data/lacci/lib/shoes/drawables/arrow.rb +41 -0
  57. data/lacci/lib/shoes/drawables/button.rb +73 -0
  58. data/lacci/lib/shoes/{widgets → drawables}/check.rb +5 -4
  59. data/lacci/lib/shoes/{widgets → drawables}/document_root.rb +3 -3
  60. data/lacci/lib/shoes/{widgets → drawables}/edit_box.rb +6 -6
  61. data/lacci/lib/shoes/{widgets → drawables}/edit_line.rb +6 -6
  62. data/lacci/lib/shoes/{widgets → drawables}/flow.rb +6 -6
  63. data/lacci/lib/shoes/{widgets → drawables}/image.rb +6 -6
  64. data/lacci/lib/shoes/{widgets → drawables}/line.rb +7 -5
  65. data/lacci/lib/shoes/drawables/link.rb +34 -0
  66. data/lacci/lib/shoes/drawables/list_box.rb +56 -0
  67. data/lacci/lib/shoes/drawables/para.rb +118 -0
  68. data/lacci/lib/shoes/drawables/progress.rb +14 -0
  69. data/lacci/lib/shoes/drawables/radio.rb +33 -0
  70. data/lacci/lib/shoes/drawables/rect.rb +17 -0
  71. data/lacci/lib/shoes/{widgets → drawables}/shape.rb +6 -7
  72. data/lacci/lib/shoes/{widgets → drawables}/slot.rb +32 -20
  73. data/lacci/lib/shoes/{widgets → drawables}/span.rb +8 -7
  74. data/lacci/lib/shoes/{widgets → drawables}/stack.rb +6 -4
  75. data/lacci/lib/shoes/drawables/star.rb +50 -0
  76. data/lacci/lib/shoes/drawables/subscription_item.rb +93 -0
  77. data/lacci/lib/shoes/drawables/text_drawable.rb +63 -0
  78. data/lacci/lib/shoes/drawables/video.rb +16 -0
  79. data/lacci/lib/shoes/drawables/widget.rb +69 -0
  80. data/lacci/lib/shoes/drawables.rb +31 -0
  81. data/lacci/lib/shoes/errors.rb +28 -0
  82. data/lacci/lib/shoes/log.rb +2 -2
  83. data/lacci/lib/shoes/ruby_extensions.rb +15 -0
  84. data/lacci/lib/shoes/spacing.rb +2 -2
  85. data/lacci/lib/shoes-spec.rb +93 -0
  86. data/lacci/lib/shoes.rb +27 -7
  87. data/lacci/test/test_helper.rb +54 -0
  88. data/lacci/test/test_lacci.rb +12 -3
  89. data/lacci/test/test_shoes_errors.rb +49 -0
  90. data/lib/scarpe/cats_cradle.rb +81 -59
  91. data/lib/scarpe/errors.rb +77 -0
  92. data/lib/scarpe/evented_assertions.rb +50 -17
  93. data/lib/scarpe/shoes_spec.rb +181 -0
  94. data/lib/scarpe/version.rb +2 -2
  95. data/lib/scarpe/wv/app.rb +20 -20
  96. data/lib/scarpe/wv/arc.rb +4 -47
  97. data/lib/scarpe/wv/arrow.rb +9 -0
  98. data/lib/scarpe/wv/button.rb +7 -35
  99. data/lib/scarpe/wv/check.rb +3 -5
  100. data/lib/scarpe/wv/control_interface.rb +18 -20
  101. data/lib/scarpe/wv/document_root.rb +81 -4
  102. data/lib/scarpe/wv/{widget.rb → drawable.rb} +66 -43
  103. data/lib/scarpe/wv/edit_box.rb +4 -17
  104. data/lib/scarpe/wv/edit_line.rb +4 -18
  105. data/lib/scarpe/wv/flow.rb +2 -18
  106. data/lib/scarpe/wv/image.rb +8 -28
  107. data/lib/scarpe/wv/line.rb +3 -25
  108. data/lib/scarpe/wv/link.rb +3 -16
  109. data/lib/scarpe/wv/list_box.rb +6 -29
  110. data/lib/scarpe/wv/para.rb +11 -30
  111. data/lib/scarpe/wv/progress.rb +19 -0
  112. data/lib/scarpe/wv/radio.rb +9 -10
  113. data/lib/scarpe/wv/rect.rb +13 -0
  114. data/lib/scarpe/wv/shape.rb +3 -8
  115. data/lib/scarpe/wv/slot.rb +8 -25
  116. data/lib/scarpe/wv/span.rb +3 -27
  117. data/lib/scarpe/wv/stack.rb +2 -18
  118. data/lib/scarpe/wv/star.rb +3 -53
  119. data/lib/scarpe/wv/subscription_item.rb +38 -4
  120. data/lib/scarpe/wv/text_drawable.rb +32 -0
  121. data/lib/scarpe/wv/video.rb +15 -15
  122. data/lib/scarpe/wv/web_wrangler.rb +299 -329
  123. data/lib/scarpe/wv/webview_local_display.rb +48 -33
  124. data/lib/scarpe/wv/webview_relay_display.rb +12 -12
  125. data/lib/scarpe/wv/webview_relay_util.rb +7 -10
  126. data/lib/scarpe/wv/wv_display_worker.rb +2 -2
  127. data/lib/scarpe/wv.rb +45 -12
  128. data/lib/scarpe/wv_local.rb +1 -1
  129. data/lib/scarpe/wv_relay.rb +1 -1
  130. data/lib/scarpe.rb +1 -0
  131. data/logger/debug_web_wrangler.json +1 -1
  132. data/logger/scarpe_wv_test.json +1 -1
  133. data/scarpe-components/Gemfile.lock +86 -0
  134. data/scarpe-components/lib/scarpe/components/base64.rb +3 -7
  135. data/scarpe-components/lib/scarpe/components/calzini/alert.rb +49 -0
  136. data/scarpe-components/lib/scarpe/components/calzini/art_widgets.rb +203 -0
  137. data/scarpe-components/lib/scarpe/components/calzini/button.rb +39 -0
  138. data/scarpe-components/lib/scarpe/components/calzini/misc.rb +146 -0
  139. data/scarpe-components/lib/scarpe/components/calzini/para.rb +35 -0
  140. data/scarpe-components/lib/scarpe/components/calzini/slots.rb +155 -0
  141. data/scarpe-components/lib/scarpe/components/calzini/text_widgets.rb +65 -0
  142. data/scarpe-components/lib/scarpe/components/calzini.rb +149 -0
  143. data/scarpe-components/lib/scarpe/components/errors.rb +20 -0
  144. data/scarpe-components/lib/scarpe/components/file_helpers.rb +1 -0
  145. data/scarpe-components/lib/scarpe/components/html.rb +131 -0
  146. data/scarpe-components/lib/scarpe/components/minitest_export_reporter.rb +75 -0
  147. data/scarpe-components/lib/scarpe/components/minitest_import_runnable.rb +98 -0
  148. data/scarpe-components/lib/scarpe/components/minitest_result.rb +86 -0
  149. data/scarpe-components/lib/scarpe/components/modular_logger.rb +5 -5
  150. data/scarpe-components/lib/scarpe/components/print_logger.rb +9 -5
  151. data/scarpe-components/lib/scarpe/components/promises.rb +14 -14
  152. data/scarpe-components/lib/scarpe/components/segmented_file_loader.rb +36 -17
  153. data/scarpe-components/lib/scarpe/components/string_helpers.rb +10 -0
  154. data/scarpe-components/lib/scarpe/components/tiranti.rb +225 -0
  155. data/scarpe-components/lib/scarpe/components/unit_test_helpers.rb +45 -5
  156. data/scarpe-components/lib/scarpe/components/version.rb +2 -2
  157. data/scarpe-components/test/calzini/test_calzini_alert.rb +30 -0
  158. data/scarpe-components/test/calzini/test_calzini_art_drawables.rb +105 -0
  159. data/scarpe-components/test/calzini/test_calzini_button.rb +52 -0
  160. data/scarpe-components/test/calzini/test_calzini_misc.rb +115 -0
  161. data/scarpe-components/test/calzini/test_calzini_para.rb +37 -0
  162. data/scarpe-components/test/calzini/test_calzini_slots.rb +130 -0
  163. data/scarpe-components/test/calzini/test_calzini_text_drawables.rb +41 -0
  164. data/scarpe-components/test/mtr_data/exception.json +1 -0
  165. data/scarpe-components/test/mtr_data/fail_with_message.json +1 -0
  166. data/scarpe-components/test/mtr_data/skipped_no_message.json +1 -0
  167. data/scarpe-components/test/mtr_data/skipped_w_msg.json +1 -0
  168. data/scarpe-components/test/mtr_data/succeed_2_asserts.json +1 -0
  169. data/scarpe-components/test/test_dimensions.rb +26 -0
  170. data/scarpe-components/test/test_helper.rb +20 -0
  171. data/scarpe-components/test/test_html.rb +65 -0
  172. data/scarpe-components/test/test_minitest_result.rb +61 -0
  173. data/scarpe-components/test/test_promises.rb +5 -4
  174. data/scarpe-components/test/test_segmented_app_files.rb +8 -6
  175. data/scarpegen.rb +14 -14
  176. data/sig/scarpe.rbs +1 -1
  177. data/templates/basic_class_template.erb +13 -14
  178. data/templates/class_template_with_event_bind.erb +4 -4
  179. data/templates/class_template_with_shapes.erb +8 -17
  180. data/templates/example_template.erb +1 -1
  181. data/templates/module_template.erb +4 -4
  182. data/templates/webview_template.erb +3 -2
  183. metadata +113 -55
  184. data/examples/legacy/not_checked/shoes-contrib/elements/image-icon.rb +0 -3
  185. data/lacci/lib/shoes/widget.rb +0 -218
  186. data/lacci/lib/shoes/widgets/alert.rb +0 -19
  187. data/lacci/lib/shoes/widgets/arc.rb +0 -51
  188. data/lacci/lib/shoes/widgets/button.rb +0 -35
  189. data/lacci/lib/shoes/widgets/font.rb +0 -14
  190. data/lacci/lib/shoes/widgets/link.rb +0 -25
  191. data/lacci/lib/shoes/widgets/list_box.rb +0 -25
  192. data/lacci/lib/shoes/widgets/para.rb +0 -68
  193. data/lacci/lib/shoes/widgets/radio.rb +0 -35
  194. data/lacci/lib/shoes/widgets/star.rb +0 -44
  195. data/lacci/lib/shoes/widgets/subscription_item.rb +0 -60
  196. data/lacci/lib/shoes/widgets/text_widget.rb +0 -51
  197. data/lacci/lib/shoes/widgets/video.rb +0 -15
  198. data/lacci/lib/shoes/widgets.rb +0 -29
  199. data/lib/scarpe/wv/alert.rb +0 -66
  200. data/lib/scarpe/wv/background.rb +0 -27
  201. data/lib/scarpe/wv/border.rb +0 -24
  202. data/lib/scarpe/wv/control_interface_test.rb +0 -238
  203. data/lib/scarpe/wv/dimensions.rb +0 -22
  204. data/lib/scarpe/wv/font.rb +0 -36
  205. data/lib/scarpe/wv/html.rb +0 -108
  206. data/lib/scarpe/wv/spacing.rb +0 -41
  207. data/lib/scarpe/wv/text_widget.rb +0 -30
  208. /data/examples/legacy/not_checked/{expert → shoes-contrib/basic}/definr.rb +0 -0
  209. /data/examples/legacy/not_checked/{expert → shoes-contrib/basic}/funnies.rb +0 -0
  210. /data/examples/legacy/not_checked/shoes-contrib/{elements → basic}/list_box-select-class.rb +0 -0
  211. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/basic-edit-box.rb +0 -0
  212. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/basic-fps.rb +0 -0
  213. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/border-cat.rb +0 -0
  214. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/check-mate.rb +0 -0
  215. /data/examples/legacy/{not_checked/shoes-contrib/manipulation → working/simple}/clear-slot.rb +0 -0
  216. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/clock.rb +0 -0
  217. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/gradient-shoes.rb +0 -0
  218. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/list_box-shape-report.rb +0 -0
  219. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/list_box.rb +0 -0
  220. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/phat-button.rb +0 -0
  221. /data/examples/legacy/{not_checked/shoes-contrib → working}/simple/simple-calc.rb +0 -0
  222. /data/examples/legacy/{not_checked/shoes-contrib/position → working/simple}/stack-width.rb +0 -0
  223. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/width-introspec.rb +0 -0
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+ require "scarpe/components/html"
5
+
6
+ class TestHTML < Minitest::Test
7
+ def test_works_without_content
8
+ subject = ::Scarpe::Components::HTML.render(&:div)
9
+
10
+ assert_equal "<div></div>", subject
11
+ end
12
+
13
+ def test_works_for_pure_tags
14
+ subject = Scarpe::Components::HTML.render { |h| h.div { "foo" } }
15
+
16
+ assert_equal "<div>foo</div>", subject
17
+ end
18
+
19
+ def test_works_for_classes
20
+ subject = Scarpe::Components::HTML.render { |h| h.div(class: "container") { "foo" } }
21
+
22
+ assert_equal '<div class="container">foo</div>', subject
23
+ end
24
+
25
+ def test_works_for_style
26
+ subject = Scarpe::Components::HTML.render { |h| h.div(style: { display: "block", width: "100px" }) { "foo" } }
27
+
28
+ assert_equal '<div style="display:block;width:100px">foo</div>', subject
29
+ end
30
+
31
+ def test_works_for_string_style
32
+ subject = Scarpe::Components::HTML.render { |h| h.div(style: "display:block;width:100px") { "foo" } }
33
+
34
+ assert_equal '<div style="display:block;width:100px">foo</div>', subject
35
+ end
36
+
37
+ def test_no_style_if_style_empty
38
+ subject = ::Scarpe::Components::HTML.render { |h| h.div(style: {}) { "foo" } }
39
+
40
+ assert_equal "<div>foo</div>", subject
41
+ end
42
+
43
+ def test_works_with_multiple_children
44
+ subject = Scarpe::Components::HTML.render do |h|
45
+ h.ul do
46
+ h.li { "one" }
47
+ h.li { "two" }
48
+ end
49
+ end
50
+
51
+ assert_equal "<ul><li>one</li><li>two</li></ul>", subject
52
+ end
53
+
54
+ def test_works_with_void_tag
55
+ subject = Scarpe::Components::HTML.render { |h| h.input(type: "text") }
56
+
57
+ assert_equal '<input type="text" />', subject
58
+ end
59
+
60
+ def test_raises_with_void_tag_blocks
61
+ assert_raises(Shoes::Errors::InvalidAttributeValueError, "void tag input cannot have content") do
62
+ Scarpe::Components::HTML.render { |h| h.input(type: "text") { "foo" } }
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ require "scarpe/components/minitest_result"
6
+
7
+ class TestMinitestResult < Minitest::Test
8
+ def test_mtr_success
9
+ path = File.join __dir__, "mtr_data/succeed_2_asserts.json"
10
+ res = Scarpe::Components::MinitestResult.new(path)
11
+
12
+ refute res.error?
13
+ refute res.fail?
14
+ refute res.skip?
15
+ assert res.passed?, "Passing result with two assertions should count as passing!"
16
+ assert_equal 2, res.assertions
17
+ end
18
+
19
+ def test_mtr_failure
20
+ path = File.join __dir__, "mtr_data/fail_with_message.json"
21
+ res = Scarpe::Components::MinitestResult.new(path)
22
+
23
+ refute res.error?, "Fail-with-message data should not be an error!"
24
+ assert res.fail?, "Fail-with-message data should be a failure!"
25
+ refute res.skip?
26
+ refute res.passed?
27
+ assert_equal "Fail with message", res.fail_message
28
+ end
29
+
30
+ def test_mtr_error
31
+ path = File.join __dir__, "mtr_data/exception.json"
32
+ res = Scarpe::Components::MinitestResult.new(path)
33
+
34
+ assert res.error?, "Exception data should show an error!"
35
+ refute res.fail?, "Exception data should not be an assertion failure!"
36
+ refute res.skip?
37
+ refute res.passed?
38
+ assert res.error_message.include?("This is an exception"), "Error msg data should include the exception message"
39
+ end
40
+
41
+ def test_mtr_skip_no_msg
42
+ path = File.join __dir__, "mtr_data/skipped_no_message.json"
43
+ res = Scarpe::Components::MinitestResult.new(path)
44
+
45
+ refute res.error?, "Skipped data should not be an error!"
46
+ refute res.fail?, "Skipped data should not be a failure!"
47
+ assert res.skip?, "Skipped data should count as skipped"
48
+ refute res.passed?
49
+ end
50
+
51
+ def test_mtr_skip_w_msg
52
+ path = File.join __dir__, "mtr_data/skipped_w_msg.json"
53
+ res = Scarpe::Components::MinitestResult.new(path)
54
+
55
+ refute res.error?, "Skipped data should not be an error!"
56
+ refute res.fail?, "Skipped data should not be a failure!"
57
+ assert res.skip?, "Skipped data should count as skipped"
58
+ refute res.passed?
59
+ assert_equal "Just skipping", res.skip_message
60
+ end
61
+ end
@@ -6,18 +6,19 @@ require "scarpe/components/promises"
6
6
 
7
7
  class TestPromises < Minitest::Test
8
8
  Promise = Scarpe::Promise
9
+ PrintLogger = Scarpe::Components::PrintLogImpl::PrintLogger
9
10
 
10
11
  def setup
11
12
  # Save so we can restore it post-test
12
- @normal_log_config = Shoes::Log.current_log_config
13
+ @silenced = PrintLogger.silence
13
14
 
14
15
  # For these tests, don't log anything
15
- Shoes::Log.configure_logger("default" => "fatal")
16
+ PrintLogger.silence = true
16
17
  end
17
18
 
18
19
  def teardown
19
- # Restore previous log config
20
- Shoes::Log.configure_logger(@normal_log_config)
20
+ # Restore previous log state
21
+ PrintLogger.silence = @silenced
21
22
  end
22
23
 
23
24
  def empty_promise_with_checker(state: nil, parents: [])
@@ -61,13 +61,15 @@ class TestSegmentedAppFiles < Minitest::Test
61
61
  assert_equal({ app_ran: true }, SEG_TEST_DATA)
62
62
  end
63
63
 
64
+ # TODO: this test is partially updated to ShoesSpec rather
65
+ # than CatsCradle, but we could use a proper version.
64
66
  def test_default_double_segment_with_front_matter
65
67
  app = <<~SEG_TEST_FILE
66
68
  ---
67
69
  front_matter: yes
68
70
  ----- app code
69
71
  SEG_TEST_DATA[:app_ran] = true
70
- eval File.read(ENV['SCARPE_APP_TEST']) # run test code
72
+ eval File.read(ENV['SHOES_SPEC_TEST']) # run test code
71
73
  ----- test code
72
74
  SEG_TEST_DATA[:test_ran] = true
73
75
  SEG_TEST_FILE
@@ -83,7 +85,7 @@ class TestSegmentedAppFiles < Minitest::Test
83
85
  ---
84
86
  ----- app code
85
87
  SEG_TEST_DATA[:app_ran] = true
86
- eval File.read(ENV['SCARPE_APP_TEST']) # run test code
88
+ eval File.read(ENV['SHOES_SPEC_TEST']) # run test code
87
89
  ----- test code
88
90
  SEG_TEST_DATA[:test_ran] = true
89
91
  SEG_TEST_FILE
@@ -98,7 +100,7 @@ class TestSegmentedAppFiles < Minitest::Test
98
100
  app = <<~SEG_TEST_FILE
99
101
  ----- app code
100
102
  SEG_TEST_DATA[:app_ran] = true
101
- eval File.read(ENV['SCARPE_APP_TEST']) # run test code
103
+ eval File.read(ENV['SHOES_SPEC_TEST']) # run test code
102
104
  ----- test code
103
105
  SEG_TEST_DATA[:test_ran] = true
104
106
  SEG_TEST_FILE
@@ -113,7 +115,7 @@ class TestSegmentedAppFiles < Minitest::Test
113
115
  app = <<~SEG_TEST_FILE
114
116
  -----
115
117
  SEG_TEST_DATA[:app_ran] = true
116
- eval File.read(ENV['SCARPE_APP_TEST']) # run test code
118
+ eval File.read(ENV['SHOES_SPEC_TEST']) # run test code
117
119
  -----
118
120
  SEG_TEST_DATA[:test_ran] = true
119
121
  SEG_TEST_FILE
@@ -127,7 +129,7 @@ class TestSegmentedAppFiles < Minitest::Test
127
129
  def test_default_double_segment_no_front_matter_no_initial_name
128
130
  app = <<~SEG_TEST_FILE
129
131
  SEG_TEST_DATA[:app_ran] = true
130
- eval File.read(ENV['SCARPE_APP_TEST']) # run test code
132
+ eval File.read(ENV['SHOES_SPEC_TEST']) # run test code
131
133
  ----- test code
132
134
  SEG_TEST_DATA[:test_ran] = true
133
135
  SEG_TEST_FILE
@@ -144,7 +146,7 @@ class TestSegmentedAppFiles < Minitest::Test
144
146
  front_matter: yes
145
147
  ---------------- app code
146
148
  SEG_TEST_DATA[:app_ran] = true
147
- eval File.read(ENV['SCARPE_APP_TEST']) # run test code
149
+ eval File.read(ENV['SHOES_SPEC_TEST']) # run test code
148
150
  ------- test code
149
151
  SEG_TEST_DATA[:test_ran] = true
150
152
  SEG_TEST_FILE
data/scarpegen.rb CHANGED
@@ -5,7 +5,7 @@ require "erb"
5
5
  class ScarpeGenerator
6
6
  def initialize
7
7
  @filename = ""
8
- @display_properties = ""
8
+ @shoes_styles = ""
9
9
  end
10
10
 
11
11
  def generate
@@ -14,7 +14,7 @@ class ScarpeGenerator
14
14
  choice = get_choice
15
15
  if choice == "1"
16
16
  class_template_choice = get_class_template_choice
17
- get_display_properties if class_template_choice != "1"
17
+ get_shoes_styles if class_template_choice != "1"
18
18
  end
19
19
  generate_files(choice, class_template_choice)
20
20
  end
@@ -89,14 +89,14 @@ class ScarpeGenerator
89
89
  end
90
90
  end
91
91
 
92
- def get_display_properties
93
- print "\n\e[33mDo you want to enter display properties? (y/n):\e[0m "
92
+ def get_shoes_styles
93
+ print "\n\e[33mDo you want to enter Shoes styles? (y/n):\e[0m "
94
94
  response = gets.chomp.downcase
95
- @display_properties = response == "y" || response == "yes" ? get_properties_input : ":dummy"
95
+ @shoes_styles = response == "y" || response == "yes" ? get_properties_input : ":dummy"
96
96
  end
97
97
 
98
98
  def get_properties_input
99
- print "\e[33mEnter the display properties:(enter like :width,:height)\e[0m "
99
+ print "\e[33mEnter the Shoes styles:(enter like :width,:height)\e[0m "
100
100
  gets.chomp
101
101
  end
102
102
 
@@ -112,20 +112,20 @@ class ScarpeGenerator
112
112
  end
113
113
  generate_webview_file
114
114
  generate_example_file
115
- add_require_relative_to_widgets_file
115
+ add_require_relative_to_drawables_file
116
116
  puts "\n\e[1;32mYayyyy! Files generated successfully!\e[0m\n"
117
117
  end
118
118
 
119
- def add_require_relative_to_widgets_file
120
- widgets_file_path = "lib/scarpe/widgets.rb"
119
+ def add_require_relative_to_drawables_file
120
+ drawables_file_path = "lacci/lib/shoes/drawables.rb"
121
121
  filename = @filename.downcase
122
- require_line = "require_relative \"#{filename}\""
122
+ require_line = "require \"shoes/drawables/#{filename}\""
123
123
 
124
- File.open(widgets_file_path, "a") do |file|
124
+ File.open(drawables_file_path, "a") do |file|
125
125
  file.puts require_line
126
126
  end
127
127
 
128
- puts "Added require_relative to widgets.rb file"
128
+ puts "Added require_relative to drawables.rb file"
129
129
  end
130
130
 
131
131
  def generate_webview_file
@@ -169,7 +169,7 @@ class ScarpeGenerator
169
169
  class_template = File.read(class_template_file)
170
170
  class_content = ERB.new(class_template).result(binding_with_argument(class_template_choice))
171
171
 
172
- File.write("lib/scarpe/#{@filename}.rb", class_content)
172
+ File.write("lacci/lib/shoes/drawables/#{@filename}.rb", class_content)
173
173
  end
174
174
 
175
175
  def generate_module_file
@@ -183,7 +183,7 @@ class ScarpeGenerator
183
183
  capitalized_argument = @filename.capitalize
184
184
  binding.dup.tap do |b|
185
185
  b.local_variable_set(:argument, capitalized_argument)
186
- b.local_variable_set(:display_properties, @display_properties)
186
+ b.local_variable_set(:shoes_styles, @shoes_styles)
187
187
  b.local_variable_set(:class_template_choice, class_template_choice) unless class_template_choice.nil?
188
188
  end
189
189
  end
data/sig/scarpe.rbs CHANGED
@@ -1,4 +1,4 @@
1
- class Scarpe
1
+ module Scarpe
2
2
  VERSION: String
3
3
  # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
4
  end
@@ -1,19 +1,19 @@
1
1
  # class_template.erb
2
2
  # frozen_string_literal: true
3
3
 
4
- class Scarpe
5
- class <%= argument %> < Shoes::Widget
4
+ module Shoes
5
+ class <%= argument %> < Shoes::Drawable
6
6
 
7
- # Display Properties
8
- # These properties determine the visual characteristics of the widget
7
+ # Shoes styles
8
+ # These properties determine the visual characteristics of the drawable
9
9
  # Customize them according to your requirements
10
10
 
11
- # Example display properties:
12
- # :background_color - Sets the background color of the widget (<%= argument %>)
13
- # :width - Specifies the width of the widget(<%= argument %>)
14
- # :height - Specifies the height of the widget(<%= argument %>)
11
+ # Example Shoes styles:
12
+ # :background_color - Sets the background color of the drawable (<%= argument %>)
13
+ # :width - Specifies the width of the drawable(<%= argument %>)
14
+ # :height - Specifies the height of the drawable(<%= argument %>)
15
15
 
16
- display_properties <%= display_properties %>
16
+ shoes_styles <%= shoes_styles %>
17
17
 
18
18
  def initialize
19
19
  super
@@ -26,13 +26,12 @@ class Scarpe
26
26
  # # Event handling code goes here
27
27
  # end
28
28
 
29
-
30
- # This method uses the DisplayService to create a visual representation of the widget
31
- # It generates a display widget based on the specified display properties
32
- create_display_widget
29
+ # This method uses the DisplayService to create a visual representation of the drawable
30
+ # It generates a display drawable based on the specified Shoes styles
31
+ create_display_drawable
33
32
  end
34
33
 
35
- # other methods
34
+ # other methods
36
35
 
37
36
  end
38
37
  end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Scarpe
4
- class <%= argument %> < Shoes::Widget
5
- display_properties <%= display_properties %> # Write your display proporties here
3
+ module Scarpe
4
+ class <%= argument %> < Shoes::Drawable
5
+ shoes_styles <%= shoes_styles %> # Write your shoes styles here
6
6
 
7
7
  def initialize(text, width: nil, height: nil, top: nil, left: nil, &block)
8
8
  # Properties passed as positional args, not keywords, don't get auto-set
@@ -16,7 +16,7 @@ class Scarpe
16
16
  @block&.call
17
17
  end
18
18
 
19
- create_display_widget
19
+ create_display_drawable
20
20
  end
21
21
 
22
22
  # Set the click handler
@@ -1,17 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Scarpe
4
- class InvalidAttributeValueError < StandardError; end
3
+ module Scarpe
4
+ #class InvalidAttributeValueError < Scarpe::Error; end # add new errors to errors.rb
5
5
 
6
- class <%= argument %> < Shoes::Widget
7
- display_properties <%= display_properties %> # Write your display proporties here
6
+ class <%= argument %> < Shoes::Drawable
7
+ # Shoes style with verification or value mapping:
8
+ # shoes_style(:left) { |val| convert_to_integer(val, "left") }
9
+
10
+ shoes_styles <%= shoes_styles %> # Write your shoes styles here
8
11
 
9
12
  def initialize(left, top)
10
13
  @left = convert_to_integer(left, "left")
11
14
  @top = convert_to_integer(top, "top")
12
15
 
13
16
  super()
14
- create_display_widget
17
+ create_display_drawable
15
18
  end
16
19
 
17
20
  private
@@ -27,17 +30,5 @@ class Scarpe
27
30
  raise InvalidAttributeValueError, error_message
28
31
  end
29
32
  end
30
-
31
- def convert_to_float(value, attribute_name, default = 0.0)
32
- begin
33
- value = Float(value)
34
- raise InvalidAttributeValueError, "Negative num '#{value}' not allowed for attribute '#{attribute_name}'" if value < 0
35
-
36
- value
37
- rescue ArgumentError
38
- error_message = "Invalid value '#{value}' provided for attribute '#{attribute_name}'. The value should be a number."
39
- raise InvalidAttributeValueError, error_message
40
- end
41
- end
42
33
  end
43
34
  end
@@ -1,3 +1,3 @@
1
1
  Shoes.app do
2
- para "heyya ssup!"
2
+ para "heyya ssup!"
3
3
  end
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Scarpe
3
+ module Scarpe
4
4
  module <%= argument %>
5
5
  def self.included(includer)
6
- <%# add display propeties below... for this example :background_color is added as display_property %>
7
- includer.display_property(:background_color)
6
+ <%# add shoes styles below... for this example :background_color is added as shoes_style %>
7
+ includer.shoes_style(:background_color)
8
8
  end
9
9
 
10
- # Write any methods here!
10
+ # Write any methods here!
11
11
  end
12
12
  end
@@ -1,13 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Scarpe
4
- class Webview<%= argument %> < Scarpe::WebviewWidget
3
+ module Scarpe::Webview
4
+ class <%= argument %> < Drawable
5
5
 
6
6
  def initialize(properties)
7
7
  super
8
8
 
9
9
  end
10
10
 
11
+ # If the drawable is intended to be overridable, add element and style to Calzini instead
11
12
  def element
12
13
  HTML.render do |h|
13
14
  h.textarea(id: html_id, style: style)