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.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/CHANGELOG.md +16 -2
- data/Gemfile.lock +7 -3
- data/README.md +24 -8
- data/Rakefile +1 -1
- data/examples/animate.rb +20 -0
- data/examples/arrow.rb +10 -0
- data/examples/btn_tooltip.rb +7 -0
- data/examples/button_style_changed.rb +7 -0
- data/examples/button_styles_default.rb +6 -0
- data/examples/gen.rb +8 -8
- data/examples/highlander.rb +3 -3
- data/examples/legacy/README.md +6 -0
- data/examples/legacy/not_checked/shoes-contrib/basic/shoes-notes.rb +1 -1
- data/examples/legacy/not_checked/simple/anim-shapes.rb +1 -1
- data/examples/legacy/not_checked/speedometer_app.rb +55 -0
- data/examples/legacy/working/simple/image-icon.rb +3 -0
- data/examples/legacy/{not_checked → working}/simple/image.rb +1 -1
- data/examples/list_box_choose.rb +17 -0
- data/examples/local_assets/local_file_server.rb +82 -0
- data/examples/local_assets/sample.gif +0 -0
- data/examples/local_assets/sample.mp4 +0 -0
- data/examples/local_fonts.rb +2 -2
- data/examples/local_images.rb +2 -3
- data/examples/para/para_text.rb +14 -0
- data/examples/progress.rb +31 -0
- data/examples/radio/radio_groups.rb +2 -2
- data/examples/rect.rb +4 -0
- data/examples/rotate_shapes.rb +17 -0
- data/examples/simpler-menu.rb +21 -0
- data/exe/scarpe +2 -1
- data/lacci/Gemfile +2 -0
- data/lacci/Gemfile.lock +8 -1
- data/lacci/lacci.gemspec +1 -1
- data/lacci/lib/lacci/scarpe_cli.rb +2 -1
- data/lacci/lib/lacci/scarpe_core.rb +2 -1
- data/lacci/lib/lacci/version.rb +1 -1
- data/lacci/lib/scarpe/niente/app.rb +23 -0
- data/lacci/lib/scarpe/niente/display_service.rb +62 -0
- data/lacci/lib/scarpe/niente/drawable.rb +57 -0
- data/lacci/lib/scarpe/niente/logger.rb +29 -0
- data/lacci/lib/scarpe/niente/shoes_spec.rb +87 -0
- data/lacci/lib/scarpe/niente.rb +20 -0
- data/lacci/lib/shoes/app.rb +88 -43
- data/lacci/lib/shoes/background.rb +2 -2
- data/lacci/lib/shoes/border.rb +2 -2
- data/lacci/lib/shoes/builtins.rb +63 -0
- data/lacci/lib/shoes/changelog.rb +52 -0
- data/lacci/lib/shoes/colors.rb +3 -1
- data/lacci/lib/shoes/constants.rb +19 -1
- data/lacci/lib/shoes/display_service.rb +39 -16
- data/lacci/lib/shoes/download.rb +2 -2
- data/lacci/lib/shoes/drawable.rb +380 -0
- data/lacci/lib/shoes/drawables/arc.rb +49 -0
- data/lacci/lib/shoes/drawables/arrow.rb +41 -0
- data/lacci/lib/shoes/drawables/button.rb +73 -0
- data/lacci/lib/shoes/{widgets → drawables}/check.rb +5 -4
- data/lacci/lib/shoes/{widgets → drawables}/document_root.rb +3 -3
- data/lacci/lib/shoes/{widgets → drawables}/edit_box.rb +6 -6
- data/lacci/lib/shoes/{widgets → drawables}/edit_line.rb +6 -6
- data/lacci/lib/shoes/{widgets → drawables}/flow.rb +6 -6
- data/lacci/lib/shoes/{widgets → drawables}/image.rb +6 -6
- data/lacci/lib/shoes/{widgets → drawables}/line.rb +7 -5
- data/lacci/lib/shoes/drawables/link.rb +34 -0
- data/lacci/lib/shoes/drawables/list_box.rb +56 -0
- data/lacci/lib/shoes/drawables/para.rb +118 -0
- data/lacci/lib/shoes/drawables/progress.rb +14 -0
- data/lacci/lib/shoes/drawables/radio.rb +33 -0
- data/lacci/lib/shoes/drawables/rect.rb +17 -0
- data/lacci/lib/shoes/{widgets → drawables}/shape.rb +6 -7
- data/lacci/lib/shoes/{widgets → drawables}/slot.rb +32 -20
- data/lacci/lib/shoes/{widgets → drawables}/span.rb +8 -7
- data/lacci/lib/shoes/{widgets → drawables}/stack.rb +6 -4
- data/lacci/lib/shoes/drawables/star.rb +50 -0
- data/lacci/lib/shoes/drawables/subscription_item.rb +93 -0
- data/lacci/lib/shoes/drawables/text_drawable.rb +63 -0
- data/lacci/lib/shoes/drawables/video.rb +16 -0
- data/lacci/lib/shoes/drawables/widget.rb +69 -0
- data/lacci/lib/shoes/drawables.rb +31 -0
- data/lacci/lib/shoes/errors.rb +28 -0
- data/lacci/lib/shoes/log.rb +2 -2
- data/lacci/lib/shoes/ruby_extensions.rb +15 -0
- data/lacci/lib/shoes/spacing.rb +2 -2
- data/lacci/lib/shoes-spec.rb +93 -0
- data/lacci/lib/shoes.rb +27 -7
- data/lacci/test/test_helper.rb +54 -0
- data/lacci/test/test_lacci.rb +12 -3
- data/lacci/test/test_shoes_errors.rb +49 -0
- data/lib/scarpe/cats_cradle.rb +81 -59
- data/lib/scarpe/errors.rb +77 -0
- data/lib/scarpe/evented_assertions.rb +50 -17
- data/lib/scarpe/shoes_spec.rb +181 -0
- data/lib/scarpe/version.rb +2 -2
- data/lib/scarpe/wv/app.rb +20 -20
- data/lib/scarpe/wv/arc.rb +4 -47
- data/lib/scarpe/wv/arrow.rb +9 -0
- data/lib/scarpe/wv/button.rb +7 -35
- data/lib/scarpe/wv/check.rb +3 -5
- data/lib/scarpe/wv/control_interface.rb +18 -20
- data/lib/scarpe/wv/document_root.rb +81 -4
- data/lib/scarpe/wv/{widget.rb → drawable.rb} +66 -43
- data/lib/scarpe/wv/edit_box.rb +4 -17
- data/lib/scarpe/wv/edit_line.rb +4 -18
- data/lib/scarpe/wv/flow.rb +2 -18
- data/lib/scarpe/wv/image.rb +8 -28
- data/lib/scarpe/wv/line.rb +3 -25
- data/lib/scarpe/wv/link.rb +3 -16
- data/lib/scarpe/wv/list_box.rb +6 -29
- data/lib/scarpe/wv/para.rb +11 -30
- data/lib/scarpe/wv/progress.rb +19 -0
- data/lib/scarpe/wv/radio.rb +9 -10
- data/lib/scarpe/wv/rect.rb +13 -0
- data/lib/scarpe/wv/shape.rb +3 -8
- data/lib/scarpe/wv/slot.rb +8 -25
- data/lib/scarpe/wv/span.rb +3 -27
- data/lib/scarpe/wv/stack.rb +2 -18
- data/lib/scarpe/wv/star.rb +3 -53
- data/lib/scarpe/wv/subscription_item.rb +38 -4
- data/lib/scarpe/wv/text_drawable.rb +32 -0
- data/lib/scarpe/wv/video.rb +15 -15
- data/lib/scarpe/wv/web_wrangler.rb +299 -329
- data/lib/scarpe/wv/webview_local_display.rb +48 -33
- data/lib/scarpe/wv/webview_relay_display.rb +12 -12
- data/lib/scarpe/wv/webview_relay_util.rb +7 -10
- data/lib/scarpe/wv/wv_display_worker.rb +2 -2
- data/lib/scarpe/wv.rb +45 -12
- data/lib/scarpe/wv_local.rb +1 -1
- data/lib/scarpe/wv_relay.rb +1 -1
- data/lib/scarpe.rb +1 -0
- data/logger/debug_web_wrangler.json +1 -1
- data/logger/scarpe_wv_test.json +1 -1
- data/scarpe-components/Gemfile.lock +86 -0
- data/scarpe-components/lib/scarpe/components/base64.rb +3 -7
- data/scarpe-components/lib/scarpe/components/calzini/alert.rb +49 -0
- data/scarpe-components/lib/scarpe/components/calzini/art_widgets.rb +203 -0
- data/scarpe-components/lib/scarpe/components/calzini/button.rb +39 -0
- data/scarpe-components/lib/scarpe/components/calzini/misc.rb +146 -0
- data/scarpe-components/lib/scarpe/components/calzini/para.rb +35 -0
- data/scarpe-components/lib/scarpe/components/calzini/slots.rb +155 -0
- data/scarpe-components/lib/scarpe/components/calzini/text_widgets.rb +65 -0
- data/scarpe-components/lib/scarpe/components/calzini.rb +149 -0
- data/scarpe-components/lib/scarpe/components/errors.rb +20 -0
- data/scarpe-components/lib/scarpe/components/file_helpers.rb +1 -0
- data/scarpe-components/lib/scarpe/components/html.rb +131 -0
- data/scarpe-components/lib/scarpe/components/minitest_export_reporter.rb +75 -0
- data/scarpe-components/lib/scarpe/components/minitest_import_runnable.rb +98 -0
- data/scarpe-components/lib/scarpe/components/minitest_result.rb +86 -0
- data/scarpe-components/lib/scarpe/components/modular_logger.rb +5 -5
- data/scarpe-components/lib/scarpe/components/print_logger.rb +9 -5
- data/scarpe-components/lib/scarpe/components/promises.rb +14 -14
- data/scarpe-components/lib/scarpe/components/segmented_file_loader.rb +36 -17
- data/scarpe-components/lib/scarpe/components/string_helpers.rb +10 -0
- data/scarpe-components/lib/scarpe/components/tiranti.rb +225 -0
- data/scarpe-components/lib/scarpe/components/unit_test_helpers.rb +45 -5
- data/scarpe-components/lib/scarpe/components/version.rb +2 -2
- data/scarpe-components/test/calzini/test_calzini_alert.rb +30 -0
- data/scarpe-components/test/calzini/test_calzini_art_drawables.rb +105 -0
- data/scarpe-components/test/calzini/test_calzini_button.rb +52 -0
- data/scarpe-components/test/calzini/test_calzini_misc.rb +115 -0
- data/scarpe-components/test/calzini/test_calzini_para.rb +37 -0
- data/scarpe-components/test/calzini/test_calzini_slots.rb +130 -0
- data/scarpe-components/test/calzini/test_calzini_text_drawables.rb +41 -0
- data/scarpe-components/test/mtr_data/exception.json +1 -0
- data/scarpe-components/test/mtr_data/fail_with_message.json +1 -0
- data/scarpe-components/test/mtr_data/skipped_no_message.json +1 -0
- data/scarpe-components/test/mtr_data/skipped_w_msg.json +1 -0
- data/scarpe-components/test/mtr_data/succeed_2_asserts.json +1 -0
- data/scarpe-components/test/test_dimensions.rb +26 -0
- data/scarpe-components/test/test_helper.rb +20 -0
- data/scarpe-components/test/test_html.rb +65 -0
- data/scarpe-components/test/test_minitest_result.rb +61 -0
- data/scarpe-components/test/test_promises.rb +5 -4
- data/scarpe-components/test/test_segmented_app_files.rb +8 -6
- data/scarpegen.rb +14 -14
- data/sig/scarpe.rbs +1 -1
- data/templates/basic_class_template.erb +13 -14
- data/templates/class_template_with_event_bind.erb +4 -4
- data/templates/class_template_with_shapes.erb +8 -17
- data/templates/example_template.erb +1 -1
- data/templates/module_template.erb +4 -4
- data/templates/webview_template.erb +3 -2
- metadata +113 -55
- data/examples/legacy/not_checked/shoes-contrib/elements/image-icon.rb +0 -3
- data/lacci/lib/shoes/widget.rb +0 -218
- data/lacci/lib/shoes/widgets/alert.rb +0 -19
- data/lacci/lib/shoes/widgets/arc.rb +0 -51
- data/lacci/lib/shoes/widgets/button.rb +0 -35
- data/lacci/lib/shoes/widgets/font.rb +0 -14
- data/lacci/lib/shoes/widgets/link.rb +0 -25
- data/lacci/lib/shoes/widgets/list_box.rb +0 -25
- data/lacci/lib/shoes/widgets/para.rb +0 -68
- data/lacci/lib/shoes/widgets/radio.rb +0 -35
- data/lacci/lib/shoes/widgets/star.rb +0 -44
- data/lacci/lib/shoes/widgets/subscription_item.rb +0 -60
- data/lacci/lib/shoes/widgets/text_widget.rb +0 -51
- data/lacci/lib/shoes/widgets/video.rb +0 -15
- data/lacci/lib/shoes/widgets.rb +0 -29
- data/lib/scarpe/wv/alert.rb +0 -66
- data/lib/scarpe/wv/background.rb +0 -27
- data/lib/scarpe/wv/border.rb +0 -24
- data/lib/scarpe/wv/control_interface_test.rb +0 -238
- data/lib/scarpe/wv/dimensions.rb +0 -22
- data/lib/scarpe/wv/font.rb +0 -36
- data/lib/scarpe/wv/html.rb +0 -108
- data/lib/scarpe/wv/spacing.rb +0 -41
- data/lib/scarpe/wv/text_widget.rb +0 -30
- /data/examples/legacy/not_checked/{expert → shoes-contrib/basic}/definr.rb +0 -0
- /data/examples/legacy/not_checked/{expert → shoes-contrib/basic}/funnies.rb +0 -0
- /data/examples/legacy/not_checked/shoes-contrib/{elements → basic}/list_box-select-class.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/basic-edit-box.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/basic-fps.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/border-cat.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/check-mate.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/manipulation → working/simple}/clear-slot.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/clock.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/gradient-shoes.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/list_box-shape-report.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/list_box.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/phat-button.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib → working}/simple/simple-calc.rb +0 -0
- /data/examples/legacy/{not_checked/shoes-contrib/position → working/simple}/stack-width.rb +0 -0
- /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
|
-
@
|
|
13
|
+
@silenced = PrintLogger.silence
|
|
13
14
|
|
|
14
15
|
# For these tests, don't log anything
|
|
15
|
-
|
|
16
|
+
PrintLogger.silence = true
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
def teardown
|
|
19
|
-
# Restore previous log
|
|
20
|
-
|
|
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['
|
|
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['
|
|
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['
|
|
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['
|
|
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['
|
|
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['
|
|
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
|
-
@
|
|
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
|
-
|
|
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
|
|
93
|
-
print "\n\e[33mDo you want to enter
|
|
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
|
-
@
|
|
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
|
|
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
|
-
|
|
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
|
|
120
|
-
|
|
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 = "
|
|
122
|
+
require_line = "require \"shoes/drawables/#{filename}\""
|
|
123
123
|
|
|
124
|
-
File.open(
|
|
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
|
|
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/
|
|
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(:
|
|
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,19 +1,19 @@
|
|
|
1
1
|
# class_template.erb
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
class <%= argument %> < Shoes::
|
|
4
|
+
module Shoes
|
|
5
|
+
class <%= argument %> < Shoes::Drawable
|
|
6
6
|
|
|
7
|
-
#
|
|
8
|
-
# These properties determine the visual characteristics of the
|
|
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
|
|
12
|
-
# :background_color - Sets the background color of the
|
|
13
|
-
# :width - Specifies the width of the
|
|
14
|
-
# :height - Specifies the height of the
|
|
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
|
-
|
|
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
|
-
|
|
31
|
-
|
|
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
|
-
|
|
34
|
+
# other methods
|
|
36
35
|
|
|
37
36
|
end
|
|
38
37
|
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
class <%= argument %> < Shoes::
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4
|
-
class InvalidAttributeValueError <
|
|
3
|
+
module Scarpe
|
|
4
|
+
#class InvalidAttributeValueError < Scarpe::Error; end # add new errors to errors.rb
|
|
5
5
|
|
|
6
|
-
class <%= argument %> < Shoes::
|
|
7
|
-
|
|
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
|
-
|
|
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,12 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
module Scarpe
|
|
4
4
|
module <%= argument %>
|
|
5
5
|
def self.included(includer)
|
|
6
|
-
<%# add
|
|
7
|
-
includer.
|
|
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
|
-
|
|
4
|
-
class
|
|
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)
|