shoes-core 4.0.0.pre6 → 4.0.0.pre7

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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/bin/shoes-picker +1 -1
  3. data/lib/shoes/app.rb +3 -3
  4. data/lib/shoes/arc.rb +6 -5
  5. data/lib/shoes/arrow.rb +31 -0
  6. data/lib/shoes/background.rb +1 -1
  7. data/lib/shoes/border.rb +1 -1
  8. data/lib/shoes/builtin_methods.rb +1 -1
  9. data/lib/shoes/color.rb +3 -3
  10. data/lib/shoes/color/dsl_helpers.rb +10 -7
  11. data/lib/shoes/color/hex_converter.rb +1 -1
  12. data/lib/shoes/common/attachable.rb +11 -0
  13. data/lib/shoes/common/background_element.rb +8 -0
  14. data/lib/shoes/common/hover.rb +7 -17
  15. data/lib/shoes/common/link_finder.rb +12 -0
  16. data/lib/shoes/common/positioning.rb +1 -1
  17. data/lib/shoes/common/state.rb +1 -1
  18. data/lib/shoes/common/style.rb +9 -4
  19. data/lib/shoes/common/translate.rb +24 -0
  20. data/lib/shoes/common/ui_element.rb +1 -0
  21. data/lib/shoes/common/visibility.rb +1 -1
  22. data/lib/shoes/configuration.rb +2 -2
  23. data/lib/shoes/core/version.rb +3 -1
  24. data/lib/shoes/dimensions.rb +6 -2
  25. data/lib/shoes/dsl.rb +34 -14
  26. data/lib/shoes/font.rb +1 -1
  27. data/lib/shoes/gradient.rb +2 -1
  28. data/lib/shoes/image.rb +2 -2
  29. data/lib/shoes/input_box.rb +2 -2
  30. data/lib/shoes/internal_app.rb +8 -8
  31. data/lib/shoes/line.rb +7 -6
  32. data/lib/shoes/link.rb +5 -6
  33. data/lib/shoes/list_box.rb +2 -2
  34. data/lib/shoes/logger.rb +2 -1
  35. data/lib/shoes/mock.rb +1 -0
  36. data/lib/shoes/mock/arrow.rb +15 -0
  37. data/lib/shoes/mock/rect.rb +2 -1
  38. data/lib/shoes/mock/slot.rb +5 -1
  39. data/lib/shoes/mock/star.rb +2 -1
  40. data/lib/shoes/oval.rb +5 -4
  41. data/lib/shoes/point.rb +2 -1
  42. data/lib/shoes/progress.rb +1 -1
  43. data/lib/shoes/rect.rb +3 -2
  44. data/lib/shoes/shape.rb +14 -9
  45. data/lib/shoes/slot.rb +54 -25
  46. data/lib/shoes/slot_contents.rb +1 -3
  47. data/lib/shoes/star.rb +4 -3
  48. data/lib/shoes/text.rb +5 -0
  49. data/lib/shoes/text_block.rb +9 -9
  50. data/lib/shoes/ui/picker.rb +5 -5
  51. data/lib/shoes/version.rb +3 -1
  52. data/lib/shoes/widget.rb +2 -2
  53. data/lib/shoes/window.rb +6 -0
  54. data/spec/shoes/app_spec.rb +16 -16
  55. data/spec/shoes/arc_spec.rb +1 -1
  56. data/spec/shoes/arrow_spec.rb +28 -0
  57. data/spec/shoes/background_spec.rb +2 -2
  58. data/spec/shoes/border_spec.rb +3 -3
  59. data/spec/shoes/builtin_methods_spec.rb +2 -2
  60. data/spec/shoes/button_spec.rb +4 -2
  61. data/spec/shoes/color_spec.rb +12 -12
  62. data/spec/shoes/common/attachable_spec.rb +32 -0
  63. data/spec/shoes/common/inspect_spec.rb +4 -4
  64. data/spec/shoes/common/remove_spec.rb +5 -5
  65. data/spec/shoes/common/rotate_spec.rb +1 -1
  66. data/spec/shoes/common/style_normalizer_spec.rb +4 -4
  67. data/spec/shoes/common/style_spec.rb +15 -11
  68. data/spec/shoes/common/translate_spec.rb +27 -0
  69. data/spec/shoes/dimension_spec.rb +111 -100
  70. data/spec/shoes/dimensions_spec.rb +344 -303
  71. data/spec/shoes/download_spec.rb +17 -17
  72. data/spec/shoes/flow_spec.rb +2 -2
  73. data/spec/shoes/framework_learning_spec.rb +3 -1
  74. data/spec/shoes/helpers/fake_absolute_element.rb +3 -2
  75. data/spec/shoes/helpers/fake_element.rb +3 -2
  76. data/spec/shoes/input_box_spec.rb +2 -2
  77. data/spec/shoes/internal_app_spec.rb +14 -14
  78. data/spec/shoes/link_spec.rb +18 -19
  79. data/spec/shoes/list_box_spec.rb +9 -8
  80. data/spec/shoes/oval_spec.rb +1 -1
  81. data/spec/shoes/point_spec.rb +3 -3
  82. data/spec/shoes/renamed_delegate_spec.rb +2 -2
  83. data/spec/shoes/shape_spec.rb +20 -20
  84. data/spec/shoes/shared_examples/common_methods.rb +2 -2
  85. data/spec/shoes/shared_examples/dsl.rb +2 -2
  86. data/spec/shoes/shared_examples/dsl/flow.rb +1 -1
  87. data/spec/shoes/shared_examples/dsl/pattern.rb +2 -2
  88. data/spec/shoes/shared_examples/dsl/rgb.rb +2 -2
  89. data/spec/shoes/shared_examples/dsl/shape.rb +11 -7
  90. data/spec/shoes/shared_examples/dsl/star.rb +44 -44
  91. data/spec/shoes/shared_examples/dsl/style.rb +1 -1
  92. data/spec/shoes/shared_examples/dsl/text_elements.rb +6 -3
  93. data/spec/shoes/shared_examples/dsl/video.rb +1 -1
  94. data/spec/shoes/shared_examples/dsl_app_context.rb +6 -5
  95. data/spec/shoes/shared_examples/hover.rb +2 -2
  96. data/spec/shoes/shared_examples/shared_element_method.rb +2 -2
  97. data/spec/shoes/shared_examples/slot.rb +32 -21
  98. data/spec/shoes/shared_examples/style.rb +1 -1
  99. data/spec/shoes/slot_spec.rb +24 -7
  100. data/spec/shoes/span_spec.rb +5 -5
  101. data/spec/shoes/spec_helper.rb +1 -1
  102. data/spec/shoes/stack_spec.rb +5 -5
  103. data/spec/shoes/text_block_dimensions_spec.rb +6 -3
  104. data/spec/shoes/text_block_spec.rb +13 -7
  105. data/spec/shoes/text_spec.rb +22 -0
  106. data/spec/shoes/ui/picker_spec.rb +3 -3
  107. data/spec/shoes/url_spec.rb +4 -4
  108. data/spec/shoes/widget_spec.rb +1 -1
  109. data/spec/shoes_spec.rb +3 -3
  110. data/spec/spec_helper.rb +8 -1
  111. metadata +17 -4
  112. data/bin/shoes +0 -1
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Shoes
2
4
  module Core
3
- VERSION = "4.0.0.pre6"
5
+ VERSION = "4.0.0.pre7"
4
6
  end
5
7
  end
@@ -191,7 +191,7 @@ class Shoes
191
191
  module DimensionsDelegations
192
192
  extend Forwardable
193
193
 
194
- UNDELEGATED_METHODS = [:to_s]
194
+ UNDELEGATED_METHODS = [:to_s].freeze
195
195
  CANDIDATE_METHODS = Dimensions.public_instance_methods(false) - UNDELEGATED_METHODS
196
196
 
197
197
  WRITER_METHODS = CANDIDATE_METHODS.select { |meth| meth.to_s.end_with?("=") }
@@ -205,7 +205,7 @@ class Shoes
205
205
  key = meth.to_s.sub("=", "").to_sym
206
206
  define_method(meth) do |value|
207
207
  @style[key] = value if @style
208
- self.dimensions.send(meth, value)
208
+ dimensions.send(meth, value)
209
209
  end
210
210
  end
211
211
 
@@ -219,5 +219,9 @@ class Shoes
219
219
  extend Forwardable
220
220
 
221
221
  def_delegators :dsl, *DimensionsDelegations::CANDIDATE_METHODS
222
+
223
+ def redraw_target
224
+ @dsl
225
+ end
222
226
  end
223
227
  end
data/lib/shoes/dsl.rb CHANGED
@@ -74,12 +74,14 @@ require 'shoes/text_block_dimensions'
74
74
 
75
75
  require 'shoes/color'
76
76
 
77
+ require 'shoes/common/attachable'
77
78
  require 'shoes/common/background_element'
78
79
  require 'shoes/common/changeable'
79
80
  require 'shoes/common/clickable'
80
81
  require 'shoes/common/fill'
81
82
  require 'shoes/common/hover'
82
83
  require 'shoes/common/initialization'
84
+ require 'shoes/common/link_finder'
83
85
  require 'shoes/common/positioning'
84
86
  require 'shoes/common/remove'
85
87
  require 'shoes/common/rotate'
@@ -87,6 +89,7 @@ require 'shoes/common/state'
87
89
  require 'shoes/common/stroke'
88
90
  require 'shoes/common/style'
89
91
  require 'shoes/common/style_normalizer'
92
+ require 'shoes/common/translate'
90
93
  require 'shoes/common/visibility'
91
94
 
92
95
  require 'shoes/common/ui_element'
@@ -100,6 +103,7 @@ require 'shoes/input_box'
100
103
  # please keep this list tidy and alphabetically sorted
101
104
  require 'shoes/animation'
102
105
  require 'shoes/arc'
106
+ require 'shoes/arrow'
103
107
  require 'shoes/background'
104
108
  require 'shoes/border'
105
109
  require 'shoes/button'
@@ -128,6 +132,7 @@ require 'shoes/star'
128
132
  require 'shoes/sound'
129
133
  require 'shoes/text_block'
130
134
  require 'shoes/timer'
135
+ require 'shoes/window'
131
136
 
132
137
  class Shoes
133
138
  # Methods for creating and manipulating Shoes elements
@@ -303,6 +308,17 @@ class Shoes
303
308
  Shoes::Sound.new @__app__, soundfile, opts, &blk
304
309
  end
305
310
 
311
+ # Creates an arrow centered at (left, top)
312
+ #
313
+ # @param [Integer] left the x-coordinate of the element center
314
+ # @param [Integer] top the y-coordinate of the element center
315
+ # @param [Integer] width width of the arrow
316
+ # @param [Hash] opts Arrow style options
317
+ # @option opts [Integer] rotate (false)
318
+ def arrow(left, top, width, styles = {}, &blk)
319
+ create Shoes::Arrow, left, top, width, styles, blk
320
+ end
321
+
306
322
  # Creates an arc at (left, top)
307
323
  #
308
324
  # @param [Integer] left the x-coordinate of the top-left corner
@@ -351,7 +367,7 @@ class Shoes
351
367
  # @option styles [Integer] height (0) the height
352
368
  # @option styles [Integer] top (0) the y-coordinate of the top-left corner
353
369
  # @option styles [Boolean] center (false) is (left, top) the center of the oval
354
- OVAL_ALLOWED_ARG_SIZES = [0, 3, 4]
370
+ OVAL_ALLOWED_ARG_SIZES = [0, 3, 4].freeze
355
371
  def oval(*opts, &blk)
356
372
  oval_style = pop_style(opts)
357
373
  oval_style = style_normalizer.normalize(oval_style)
@@ -364,7 +380,7 @@ Wrong number of arguments. Must be one of:
364
380
  - oval(left, top, width, height, [opts])
365
381
  - oval(styles)
366
382
  EOS
367
- fail ArgumentError, message unless OVAL_ALLOWED_ARG_SIZES.include? opts.size
383
+ raise ArgumentError, message unless OVAL_ALLOWED_ARG_SIZES.include? opts.size
368
384
  create Shoes::Oval, left, top, width, height, oval_style, blk
369
385
  end
370
386
 
@@ -390,7 +406,7 @@ EOS
390
406
  # @option styles [Integer] height (0) the height
391
407
  # @option styles [Integer] top (0) the y-coordinate of the top-left corner
392
408
  # @option styles [Boolean] center (false) is (left, top) the center of the rectangle?
393
- RECT_ALLOWED_ARG_SIZES = [0, 3, 4, 5]
409
+ RECT_ALLOWED_ARG_SIZES = [0, 3, 4, 5].freeze
394
410
  def rect(*args, &blk)
395
411
  opts = style_normalizer.normalize pop_style(args)
396
412
 
@@ -404,7 +420,7 @@ Wrong number of arguments. Must be one of:
404
420
  - rect(left, top, width, height, curve, [opts])
405
421
  - rect(styles)
406
422
  EOS
407
- fail ArgumentError, message unless RECT_ALLOWED_ARG_SIZES.include? args.size
423
+ raise ArgumentError, message unless RECT_ALLOWED_ARG_SIZES.include? args.size
408
424
  create Shoes::Rect, left, top, width, height, style.merge(opts), blk
409
425
  end
410
426
 
@@ -449,7 +465,7 @@ Wrong number of arguments. Must be one of:
449
465
  - star(left, top, points, outer, [styles])
450
466
  - star(left, top, points, outer, inner, [styles])
451
467
  EOS
452
- fail ArgumentError, message
468
+ raise ArgumentError, message
453
469
  end
454
470
 
455
471
  create Shoes::Star, left, top, points, outer, inner, styles, blk
@@ -469,7 +485,7 @@ EOS
469
485
  # Creates a shape at (0, 0)
470
486
  # @option styles [Integer] left (0) the x-coordinate of the top-left corner
471
487
  # @option styles [Integer] top (0) the y-coordinate of the top-left corner
472
- SHAPE_ALLOWED_ARG_SIZES = [0, 2]
488
+ SHAPE_ALLOWED_ARG_SIZES = [0, 2].freeze
473
489
  def shape(*args, &blk)
474
490
  opts = style_normalizer.normalize pop_style(args)
475
491
  opts[:left], opts[:top] = args if args.length == 2
@@ -480,13 +496,13 @@ Wrong number of arguments. Must be one of:
480
496
  - shape(left, top, [opts])
481
497
  - shape(styles)
482
498
  EOS
483
- fail ArgumentError, message unless SHAPE_ALLOWED_ARG_SIZES.include? args.length
499
+ raise ArgumentError, message unless SHAPE_ALLOWED_ARG_SIZES.include? args.length
484
500
  create Shoes::Shape, style.merge(opts), blk
485
501
  end
486
502
 
487
503
  # Define app-level setter methods
488
- PATTERN_APP_STYLES = [:fill, :stroke]
489
- OTHER_APP_STYLES = [:cap, :rotate, :strokewidth, :transform, :translate]
504
+ PATTERN_APP_STYLES = [:fill, :stroke].freeze
505
+ OTHER_APP_STYLES = [:cap, :rotate, :strokewidth, :transform].freeze
490
506
 
491
507
  PATTERN_APP_STYLES.each do |style|
492
508
  define_method style do |val|
@@ -500,6 +516,10 @@ EOS
500
516
  end
501
517
  end
502
518
 
519
+ def translate(left, top)
520
+ @__app__.style[:translate] = [left, top]
521
+ end
522
+
503
523
  def nostroke
504
524
  @__app__.style[:stroke] = nil
505
525
  end
@@ -524,7 +544,7 @@ EOS
524
544
  sub: { rise: -10, size_modifier: 0.8 },
525
545
  sup: { rise: 10, size_modifier: 0.8 },
526
546
  strong: { weight: true },
527
- }
547
+ }.freeze
528
548
 
529
549
  TEXT_STYLES.keys.each do |method|
530
550
  define_method method do |*texts|
@@ -623,10 +643,10 @@ EOS
623
643
  end
624
644
 
625
645
  def video(*_args)
626
- fail Shoes::NotImplementedError,
627
- 'Sorry video support has been cut from shoes 4!' \
628
- ' Check out github issue #113 for any changes/updates or if you' \
629
- ' want to help :)'
646
+ raise Shoes::NotImplementedError,
647
+ 'Sorry video support has been cut from shoes 4!' \
648
+ ' Check out github issue #113 for any changes/updates or if you' \
649
+ ' want to help :)'
630
650
  end
631
651
  end
632
652
  end
data/lib/shoes/font.rb CHANGED
@@ -2,7 +2,7 @@ class Shoes
2
2
  FONT_DIR = DIR + "/fonts/"
3
3
 
4
4
  module Font
5
- FONT_TYPES = "{ttf,ttc,otf,fnt,fon,bdf,pcf,snf,mmm,pfb,pfm}"
5
+ FONT_TYPES = "{ttf,ttc,otf,fnt,fon,bdf,pcf,snf,mmm,pfb,pfm}".freeze
6
6
  @loaded_fonts = {}
7
7
 
8
8
  class << self
@@ -4,7 +4,8 @@ class Shoes
4
4
  include Comparable
5
5
 
6
6
  def initialize(color1, color2, alpha = Shoes::Color::OPAQUE)
7
- @color1, @color2 = color1, color2
7
+ @color1 = color1
8
+ @color2 = color2
8
9
  @alpha = alpha
9
10
  end
10
11
 
data/lib/shoes/image.rb CHANGED
@@ -9,7 +9,7 @@ class Shoes
9
9
 
10
10
  style_with :art_styles, :common_styles, :dimensions, :file_path
11
11
 
12
- STYLES = { fill: Shoes::COLORS[:black] }
12
+ STYLES = { fill: Shoes::COLORS[:black] }.freeze
13
13
 
14
14
  def before_initialize(styles, file_path_or_data)
15
15
  styles[:file_path] = normalized_source(file_path_or_data)
@@ -42,7 +42,7 @@ class Shoes
42
42
 
43
43
  def absolute_file_path(path)
44
44
  path = File.join(Dir.pwd, path) unless Pathname(path).absolute?
45
- fail FileNotFoundError, "#{path} not found." unless File.exist?(path)
45
+ raise FileNotFoundError, "#{path} not found." unless File.exist?(path)
46
46
  path
47
47
  end
48
48
  end
@@ -38,12 +38,12 @@ class Shoes
38
38
 
39
39
  class EditBox < InputBox
40
40
  style_with :change, :common_styles, :dimensions, :text, :state
41
- STYLES = { width: 200, height: 108, text: '' }
41
+ STYLES = { width: 200, height: 108, text: '' }.freeze
42
42
  end
43
43
 
44
44
  class EditLine < InputBox
45
45
  style_with :change, :common_styles, :dimensions, :text, :secret, :state
46
- STYLES = { width: 200, height: 28, text: '' }
46
+ STYLES = { width: 200, height: 28, text: '' }.freeze
47
47
 
48
48
  def secret?
49
49
  secret
@@ -14,12 +14,12 @@ class Shoes
14
14
  extend Forwardable
15
15
 
16
16
  DEFAULT_OPTIONS = {
17
- width: 600,
18
- height: 500,
19
- title: "Shoes 4",
20
- resizable: true,
21
- border: true
22
- }.freeze
17
+ width: 600,
18
+ height: 500,
19
+ title: "Shoes 4",
20
+ resizable: true,
21
+ border: true
22
+ }.freeze
23
23
 
24
24
  def initialize(app, opts, &blk)
25
25
  @app = app
@@ -41,7 +41,7 @@ class Shoes
41
41
  end
42
42
 
43
43
  def ensure_backend_loaded
44
- if !defined?(Shoes.configuration.backend::App)
44
+ unless defined?(Shoes.configuration.backend::App)
45
45
  backend_const = Shoes.load_backend(Shoes.configuration.backend_name)
46
46
  backend_const.initialize_backend
47
47
  end
@@ -100,7 +100,7 @@ class Shoes
100
100
 
101
101
  def_delegators :gui, *delegated_to_gui
102
102
 
103
- alias_method :start_as_fullscreen?, :start_as_fullscreen
103
+ alias start_as_fullscreen? start_as_fullscreen
104
104
 
105
105
  # Necessary for click/mouse positioning checks
106
106
  def hidden?
data/lib/shoes/line.rb CHANGED
@@ -3,15 +3,16 @@ require 'matrix'
3
3
  class Shoes
4
4
  class Line
5
5
  include Common::UIElement
6
- include Common::Stroke
7
- include Common::Style
8
6
  include Common::Clickable
9
7
  include Common::Hover
8
+ include Common::Stroke
9
+ include Common::Style
10
+ include Common::Translate
10
11
 
11
12
  attr_reader :point_a, :point_b
12
13
 
13
14
  style_with :angle, :art_styles, :dimensions, :x2, :y2
14
- STYLES = { angle: 0, fill: Shoes::COLORS[:black] }
15
+ STYLES = { angle: 0, fill: Shoes::COLORS[:black] }.freeze
15
16
 
16
17
  def create_dimensions(point_a, point_b)
17
18
  @point_a = point_a
@@ -37,7 +38,7 @@ class Shoes
37
38
 
38
39
  if left_c_dot_left_right.between?(0, left_right_dot_left_right)
39
40
  left_c_dot_left_c = left_c.inner_product(left_c)
40
- left_right_dot_left_right * left_c_dot_left_c <= boldness ** 2 * left_right_dot_left_right + left_c_dot_left_right ** 2
41
+ left_right_dot_left_right * left_c_dot_left_c <= boldness**2 * left_right_dot_left_right + left_c_dot_left_right**2
41
42
  else
42
43
  false
43
44
  end
@@ -64,8 +65,8 @@ class Shoes
64
65
  set_point_b(:y, val)
65
66
  end
66
67
 
67
- alias_method :x2=, :right=
68
- alias_method :y2=, :bottom=
68
+ alias x2= right=
69
+ alias y2= bottom=
69
70
 
70
71
  def move(x, y, x2 = nil, y2 = nil)
71
72
  @point_a.x = x
data/lib/shoes/link.rb CHANGED
@@ -7,7 +7,7 @@ class Shoes
7
7
 
8
8
  attr_reader :app, :gui, :blk
9
9
  style_with :common_styles, :text_block_styles
10
- STYLES = { underline: true, stroke: ::Shoes::COLORS[:blue], fill: nil }
10
+ STYLES = { underline: true, stroke: ::Shoes::COLORS[:blue], fill: nil }.freeze
11
11
 
12
12
  def initialize(my_app, texts, styles = {}, blk = nil)
13
13
  @app = my_app
@@ -18,11 +18,6 @@ class Shoes
18
18
  super texts, @style
19
19
  end
20
20
 
21
- # Force hovering evaluation up in parent where we have actual dimensions
22
- def eval_in_parent?
23
- true
24
- end
25
-
26
21
  # Doesn't use Common::Clickable because of URL flavor option clicks
27
22
  def setup_click(blk)
28
23
  if blk.nil?
@@ -62,6 +57,10 @@ class Shoes
62
57
  text_block_guard && @text_block.visible?
63
58
  end
64
59
 
60
+ def links
61
+ [self]
62
+ end
63
+
65
64
  private
66
65
 
67
66
  def text_block_guard
@@ -31,7 +31,7 @@ class Shoes
31
31
  include Common::State
32
32
 
33
33
  style_with :change, :choose, :common_styles, :dimensions, :items, :state, :text
34
- STYLES = { width: 200, height: 20, items: [""] }
34
+ STYLES = { width: 200, height: 20, items: [""] }.freeze
35
35
 
36
36
  def handle_block(blk)
37
37
  change(&blk) if blk
@@ -64,6 +64,6 @@ class Shoes
64
64
  end
65
65
  end
66
66
 
67
- alias_method :choose=, :choose
67
+ alias choose= choose
68
68
  end
69
69
  end
data/lib/shoes/logger.rb CHANGED
@@ -47,7 +47,8 @@ class Shoes
47
47
  Shoes::LOG.clear
48
48
  end
49
49
  end
50
- @log, @hash = stack, nil
50
+ @log = stack
51
+ @hash = nil
51
52
  update
52
53
 
53
54
  every(0.2) do
data/lib/shoes/mock.rb CHANGED
@@ -6,6 +6,7 @@ require 'shoes/mock/packager'
6
6
  require 'shoes/mock/animation'
7
7
  require 'shoes/mock/app'
8
8
  require 'shoes/mock/arc'
9
+ require 'shoes/mock/arrow'
9
10
  require 'shoes/mock/background'
10
11
  require 'shoes/mock/border'
11
12
  require 'shoes/mock/button'
@@ -0,0 +1,15 @@
1
+ class Shoes
2
+ module Mock
3
+ class Arrow
4
+ include Shoes::Mock::CommonMethods
5
+ include Shoes::Mock::Clickable
6
+
7
+ def initialize(dsl, app, _opts = {})
8
+ @dsl = dsl
9
+ @app = app
10
+ end
11
+
12
+ attr_reader :dsl, :app
13
+ end
14
+ end
15
+ end
@@ -5,7 +5,8 @@ class Shoes
5
5
  include Shoes::Mock::Clickable
6
6
 
7
7
  def initialize(dsl, app, _opts = {})
8
- @dsl, @app = dsl, app
8
+ @dsl = dsl
9
+ @app = app
9
10
  end
10
11
 
11
12
  attr_reader :dsl, :app
@@ -5,7 +5,11 @@ class Shoes
5
5
  include Shoes::Mock::Clickable
6
6
 
7
7
  def initialize(dsl, parent)
8
- @dsl, @parent = dsl, parent
8
+ @dsl = dsl
9
+ @parent = parent
10
+ end
11
+
12
+ def remove
9
13
  end
10
14
 
11
15
  attr_reader :dsl
@@ -5,7 +5,8 @@ class Shoes
5
5
  include Shoes::Mock::Clickable
6
6
 
7
7
  def initialize(dsl, app)
8
- @dsl, @app = dsl, app
8
+ @dsl = dsl
9
+ @app = app
9
10
  end
10
11
 
11
12
  attr_reader :dsl, :app