lacci 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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +8 -1
  4. data/lib/lacci/scarpe_cli.rb +2 -2
  5. data/lib/lacci/scarpe_core.rb +2 -1
  6. data/lib/lacci/version.rb +1 -1
  7. data/lib/scarpe/niente/app.rb +23 -0
  8. data/lib/scarpe/niente/display_service.rb +66 -0
  9. data/lib/scarpe/niente/drawable.rb +59 -0
  10. data/lib/scarpe/niente/shoes_spec.rb +93 -0
  11. data/lib/scarpe/niente.rb +32 -0
  12. data/lib/shoes/app.rb +111 -72
  13. data/lib/shoes/background.rb +2 -2
  14. data/lib/shoes/border.rb +2 -2
  15. data/lib/shoes/builtins.rb +63 -0
  16. data/lib/shoes/changelog.rb +52 -0
  17. data/lib/shoes/colors.rb +3 -1
  18. data/lib/shoes/constants.rb +41 -2
  19. data/lib/shoes/display_service.rb +80 -18
  20. data/lib/shoes/download.rb +2 -2
  21. data/lib/shoes/drawable.rb +654 -0
  22. data/lib/shoes/drawables/arc.rb +27 -0
  23. data/lib/shoes/drawables/arrow.rb +21 -0
  24. data/lib/shoes/drawables/border.rb +28 -0
  25. data/lib/shoes/drawables/button.rb +57 -0
  26. data/lib/shoes/drawables/check.rb +33 -0
  27. data/lib/shoes/drawables/document_root.rb +20 -0
  28. data/lib/shoes/{widgets → drawables}/edit_box.rb +9 -8
  29. data/lib/shoes/{widgets → drawables}/edit_line.rb +8 -7
  30. data/lib/shoes/drawables/flow.rb +20 -0
  31. data/lib/shoes/drawables/font_helper.rb +62 -0
  32. data/lib/shoes/{widgets → drawables}/image.rb +7 -7
  33. data/lib/shoes/drawables/line.rb +17 -0
  34. data/lib/shoes/drawables/link.rb +31 -0
  35. data/lib/shoes/drawables/list_box.rb +59 -0
  36. data/lib/shoes/drawables/oval.rb +48 -0
  37. data/lib/shoes/drawables/para.rb +206 -0
  38. data/lib/shoes/drawables/progress.rb +15 -0
  39. data/lib/shoes/drawables/radio.rb +35 -0
  40. data/lib/shoes/drawables/rect.rb +18 -0
  41. data/lib/shoes/{widgets → drawables}/shape.rb +8 -8
  42. data/lib/shoes/drawables/slot.rb +178 -0
  43. data/lib/shoes/drawables/stack.rb +21 -0
  44. data/lib/shoes/drawables/star.rb +28 -0
  45. data/lib/shoes/drawables/subscription_item.rb +93 -0
  46. data/lib/shoes/drawables/text_drawable.rb +122 -0
  47. data/lib/shoes/drawables/video.rb +17 -0
  48. data/lib/shoes/drawables/widget.rb +74 -0
  49. data/lib/shoes/drawables.rb +32 -0
  50. data/lib/shoes/errors.rb +38 -0
  51. data/lib/shoes/log.rb +2 -2
  52. data/lib/shoes/margin_helper.rb +79 -0
  53. data/lib/shoes/ruby_extensions.rb +15 -0
  54. data/lib/shoes-spec.rb +93 -0
  55. data/lib/shoes.rb +31 -10
  56. metadata +58 -31
  57. data/lib/shoes/spacing.rb +0 -9
  58. data/lib/shoes/widget.rb +0 -218
  59. data/lib/shoes/widgets/alert.rb +0 -19
  60. data/lib/shoes/widgets/arc.rb +0 -51
  61. data/lib/shoes/widgets/button.rb +0 -35
  62. data/lib/shoes/widgets/check.rb +0 -28
  63. data/lib/shoes/widgets/document_root.rb +0 -20
  64. data/lib/shoes/widgets/flow.rb +0 -22
  65. data/lib/shoes/widgets/font.rb +0 -14
  66. data/lib/shoes/widgets/line.rb +0 -18
  67. data/lib/shoes/widgets/link.rb +0 -25
  68. data/lib/shoes/widgets/list_box.rb +0 -25
  69. data/lib/shoes/widgets/para.rb +0 -68
  70. data/lib/shoes/widgets/radio.rb +0 -35
  71. data/lib/shoes/widgets/slot.rb +0 -75
  72. data/lib/shoes/widgets/span.rb +0 -26
  73. data/lib/shoes/widgets/stack.rb +0 -24
  74. data/lib/shoes/widgets/star.rb +0 -44
  75. data/lib/shoes/widgets/subscription_item.rb +0 -60
  76. data/lib/shoes/widgets/text_widget.rb +0 -51
  77. data/lib/shoes/widgets/video.rb +0 -15
  78. data/lib/shoes/widgets.rb +0 -29
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes; end
4
+ module Shoes::Errors
5
+ class InvalidAttributeValueError < Shoes::Error; end
6
+
7
+ class TooManyInstancesError < Shoes::Error; end
8
+
9
+ class NoSuchListItemError < Shoes::Error; end
10
+
11
+ class DuplicateCreateDrawableError < Shoes::Error; end
12
+
13
+ class MultipleDrawablesFoundError < Shoes::Error; end
14
+
15
+ class NoDrawablesFoundError < Shoes::Error; end
16
+
17
+ class NoSuchStyleError < Shoes::Error; end
18
+
19
+ class NoSuchLinkableIdError < Shoes::Error; end
20
+
21
+ class BadLinkableIdError < Shoes::Error; end
22
+
23
+ class UnregisteredShoesEventError < Shoes::Error; end
24
+
25
+ class BadArgumentListError < Shoes::Error; end
26
+
27
+ class SingletonError < Shoes::Error; end
28
+
29
+ class MultipleShoesSpecRunsError < Shoes::Error; end
30
+
31
+ class UnsupportedFeatureError < Shoes::Error; end
32
+
33
+ class BadFilenameError < Shoes::Error; end
34
+
35
+ class UnknownEventsForClassError < Shoes::Error; end
36
+
37
+ class DoubleRegisteredShoesEventError < Shoes::Error; end
38
+ end
data/lib/shoes/log.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  # If used alone, this will fail because the @instance is nil. It needs
9
9
  # an implementation to be plugged in.
10
10
 
11
- module Shoes
11
+ class Shoes
12
12
  LOG_LEVELS = [:debug, :info, :warn, :error, :fatal].freeze
13
13
 
14
14
  # Include this module to get a @log instance variable to log as your
@@ -28,7 +28,7 @@ module Shoes
28
28
  attr_reader :current_log_config
29
29
 
30
30
  def instance=(impl_object)
31
- raise(Shoes::Error, "Already have an instance for Shoes::Log!") if @instance
31
+ raise(Shoes::Errors::TooManyInstancesError, "Already have an instance for Shoes::Log!") if @instance
32
32
 
33
33
  @instance = impl_object
34
34
  end
@@ -0,0 +1,79 @@
1
+ module MarginHelper
2
+
3
+ def margin_parse(kwargs)
4
+
5
+ if kwargs[:margin]
6
+
7
+ if kwargs[:margin].is_a?(Numeric)
8
+
9
+ if !kwargs[:margin_top]
10
+ kwargs[:margin_top] = kwargs[:margin]
11
+ end
12
+ if !kwargs[:margin_bottom]
13
+ kwargs[:margin_bottom] = kwargs[:margin]
14
+ end
15
+ if !kwargs[:margin_left]
16
+ kwargs[:margin_left] = kwargs[:margin]
17
+ end
18
+ if !kwargs[:margin_right]
19
+ kwargs[:margin_right] = kwargs[:margin]
20
+ end
21
+
22
+ elsif kwargs[:margin].is_a?(Hash)
23
+
24
+ kwargs[:margin].each do |key,value|
25
+ kwargs[:"margin_#{key}"] = value
26
+ end
27
+
28
+ else
29
+ margin_props = kwargs[:margin].is_a?(String) ? kwargs[:margin].split(/\s+|\,|-/) : kwargs[:margin]
30
+ if margin_props.length == 1
31
+
32
+ if !kwargs[:margin_top]
33
+ kwargs[:margin_top] = margin_props[0]
34
+ end
35
+ if !kwargs[:margin_bottom]
36
+ kwargs[:margin_bottom] = margin_props[0]
37
+ end
38
+ if !kwargs[:margin_left]
39
+ kwargs[:margin_left] = margin_props[0]
40
+ end
41
+ if !kwargs[:margin_right]
42
+ kwargs[:margin_right] = margin_props[0]
43
+ end
44
+
45
+ elsif margin_props.length == 2
46
+
47
+ raise(Shoes::Errors::InvalidAttributeValueError, "Margin don't support 2-3 values as Array/string input for using 2-3 input you can use the hash input method like '{left:value, right:value, top:value, bottom:value}'")
48
+
49
+ elsif margin_props.length == 3
50
+
51
+ raise(Shoes::Errors::InvalidAttributeValueError, "Margin don't support 2-3 values as Array/string input for using 2-3 input you can use the hash input method like '{left:value,right:value,top:value,bottom:value}'")
52
+
53
+ else
54
+
55
+ if !kwargs[:margin_top]
56
+ kwargs[:margin_top] = margin_props[1]
57
+ end
58
+ if !kwargs[:margin_bottom]
59
+ kwargs[:margin_bottom] = margin_props[3]
60
+ end
61
+ if !kwargs[:margin_left]
62
+ kwargs[:margin_left] = margin_props[0]
63
+ end
64
+ if !kwargs[:margin_right]
65
+ kwargs[:margin_right] = margin_props[2]
66
+ end
67
+
68
+ end
69
+ end
70
+ kwargs[:margin] = nil
71
+ end
72
+ if kwargs["options"] && !kwargs[:margin] && !kwargs[:margin_left] && !kwargs[:margin_right] && !kwargs[:margin_top] && !kwargs[:margin_bottom]
73
+ kwargs[options].each do |key,value|
74
+ kwargs[key] = value
75
+ end
76
+ end
77
+ kwargs
78
+ end
79
+ end
@@ -0,0 +1,15 @@
1
+
2
+ class Range
3
+ def rand
4
+ conv = (Integer === self.end && Integer === self.begin ? :to_i : :to_f)
5
+ ((Kernel.rand * (self.end - self.begin)) + self.begin).send(conv)
6
+ end
7
+ end
8
+
9
+ unless Time.respond_to? :today
10
+ def Time.today
11
+ t = Time.now
12
+ t - (t.to_i % 86_400)
13
+ end
14
+ end
15
+
data/lib/shoes-spec.rb ADDED
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ # A Scarpe-compatible display service can set Shoes::Spec.instance to
5
+ # a ShoesSpec testing class, and use it to run Shoes-Spec code.
6
+ # A Shoes application should never do this. It's intended to be used
7
+ # by display services.
8
+ module Spec
9
+ def self.instance
10
+ @instance
11
+ end
12
+
13
+ def self.instance=(spec_inst)
14
+ if @instance && @instance != spec_inst
15
+ raise "Lacci can only use a single ShoesSpec implementation at one time!"
16
+ end
17
+
18
+ @instance = spec_inst
19
+ end
20
+ end
21
+
22
+ # ShoesSpec testing objects can optionally inherit from this object,
23
+ # which shows the ShoesSpec testing API.
24
+ #
25
+ # @see {Shoes::Spec.instance=}
26
+ class SpecInstance
27
+ # Once a Shoes app has been created, this method can be called to
28
+ # execute Shoes-Spec testing code for that application. Shoes-Spec
29
+ # uses Minitest for most of its APIs, and Minitest generally reports
30
+ # results with a class name and test name. If those aren't passed
31
+ # explicitly, the SpecInstance can choose reasonable defaults.
32
+ #
33
+ # The test code should be set up to run automatically from the
34
+ # display service's existing hooks. For instance, the code might
35
+ # run in response to the first heartbeat, if the display service
36
+ # uses heartbeats.
37
+ #
38
+ # The test code will export assertion data in its native format.
39
+ # Multiple display services choose to use the Scarpe-Component
40
+ # for Minitest data export, which is straightforward to import
41
+ # into the Shoes-Spec test harness.
42
+ #
43
+ # @param code [String] the ShoesSpec code to execute
44
+ # @param class_name [String|NilClass] the Minitest class name for reporting or nil
45
+ # @param test_name [String|NilClass] the Minitest test name for reporting or nil
46
+ # @return [void]
47
+ def run_shoes_spec_test_code(code, class_name: nil, test_name: nil)
48
+ raise "Child class should override this!"
49
+ end
50
+ end
51
+
52
+ # ShoesSpec instances support finder methods like button() that return
53
+ # a proxy to the corresponding drawable. Those proxies should support
54
+ # standard Shoes::Drawable methods, including the ones appropriate to
55
+ # the same drawable object. They should also support certain other
56
+ # testing-specific methods like "trigger_click" that are used to
57
+ # simulate display-side events during testing.
58
+ #
59
+ # Keep in mind that a proxy will often be in a different process from
60
+ # the Shoes app. So the proxy can't portably return the object or
61
+ # display object, though it could possibly return another proxy for such
62
+ # a thing.
63
+ class SpecProxy
64
+ # The proxy will have finder methods for all drawables, such as
65
+ # button(), edit_line(), etc. How to document those?
66
+
67
+ # Trigger a click on a button or button-like drawable. Not every
68
+ # drawable will support this operation.
69
+ def trigger_click()
70
+ raise "Child class should override this!"
71
+ end
72
+
73
+ # Trigger a hover over a hoverable drawable. Not every
74
+ # drawable will support this operation. A drawable that supports
75
+ # hover should support leave and vice-versa.
76
+ def trigger_hover()
77
+ raise "Child class should override this!"
78
+ end
79
+
80
+ # Trigger ending hover over a hoverable drawable. Not every
81
+ # drawable will support this operation. A drawable that supports
82
+ # hover should support leave and vice-versa.
83
+ def trigger_leave()
84
+ raise "Child class should override this!"
85
+ end
86
+
87
+ # Trigger a change in value for a drawable like a list_box
88
+ # with multiple values.
89
+ def trigger_change(value)
90
+ raise "Child class should override this!"
91
+ end
92
+ end
93
+ end
data/lib/shoes.rb CHANGED
@@ -12,38 +12,51 @@ if RUBY_VERSION[0..2] < "3.2"
12
12
  exit(-1)
13
13
  end
14
14
 
15
- module Shoes; end
15
+ class Shoes; end
16
16
  class Shoes::Error < StandardError; end
17
+ require_relative "shoes/errors"
17
18
 
18
19
  require_relative "shoes/constants"
20
+ require_relative "shoes/ruby_extensions"
19
21
 
20
22
  # Shoes adds some top-level methods and constants that can be used everywhere. Kernel is where they go.
21
23
  module Kernel
22
24
  include Shoes::Constants
23
25
  end
24
26
 
25
- require_relative "shoes/log"
26
27
  require_relative "shoes/display_service"
28
+
29
+ # Pre-declare classes that get referenced outside their own require file
30
+ class Shoes::Drawable < Shoes::Linkable; end
31
+ class Shoes::Slot < Shoes::Drawable; end
32
+ class Shoes::Widget < Shoes::Slot; end
33
+
34
+ require_relative "shoes/log"
27
35
  require_relative "shoes/colors"
28
36
 
37
+ require_relative "shoes/builtins"
38
+
29
39
  require_relative "shoes/background"
30
- require_relative "shoes/border"
31
- require_relative "shoes/spacing"
32
40
 
33
- require_relative "shoes/widget"
41
+ require_relative "shoes/drawable"
34
42
  require_relative "shoes/app"
35
- require_relative "shoes/widgets"
43
+ require_relative "shoes/drawables"
36
44
 
37
45
  require_relative "shoes/download"
38
46
 
47
+ # No easy way to tell at this point whether
48
+ # we will later load Shoes-Spec code, e.g.
49
+ # by running a segmented app with test code.
50
+ require_relative "shoes-spec"
51
+
39
52
  # The module containing Shoes in all its glory.
40
53
  # Shoes is a platform-independent GUI library, designed to create
41
54
  # small visual applications in Ruby.
42
55
  #
43
- module Shoes
56
+ class Shoes
44
57
  class << self
45
58
  # Creates a Shoes app with a new window. The block parameter is used to create
46
- # widgets and set up handlers. Arguments are passed to Shoes::App.new internally.
59
+ # drawables and set up handlers. Arguments are passed to Shoes::App.new internally.
47
60
  #
48
61
  # @incompatibility In Shoes3, this method will return normally.
49
62
  # In Scarpe, after the block is executed, the method will not return and Scarpe
@@ -61,6 +74,7 @@ module Shoes
61
74
  # @param width [Integer] The new app window width
62
75
  # @param height [Integer] The new app window height
63
76
  # @param resizable [Boolean] Whether the app window should be resizeable
77
+ # @param features [Symbol,Array<Symbol>] Additional Shoes extensions requested by the app
64
78
  # @return [void]
65
79
  # @see Shoes::App#new
66
80
  def app(
@@ -68,9 +82,11 @@ module Shoes
68
82
  width: 480,
69
83
  height: 420,
70
84
  resizable: true,
85
+ features: [],
71
86
  &app_code_body
72
87
  )
73
- app = Shoes::App.new(title:, width:, height:, resizable:, &app_code_body)
88
+ f = [features].flatten # Make sure this is a list, not a single symbol
89
+ app = Shoes::App.new(title:, width:, height:, resizable:, features: f, &app_code_body)
74
90
  app.init
75
91
  app.run
76
92
  nil
@@ -81,11 +97,16 @@ module Shoes
81
97
  # more loaders, a Lacci-based display library can accept new file formats as
82
98
  # well, not just raw Shoes .rb files.
83
99
  #
84
- # @param path [String] The current-dir-relative path to the file
100
+ # @param relative_path [String] The current-dir-relative path to the file
85
101
  # @return [void]
86
102
  # @see Shoes.add_file_loader
87
103
  def run_app(relative_path)
88
104
  path = File.expand_path relative_path
105
+ dir = File.dirname(path)
106
+
107
+ # Shoes assumes we're starting from the app code's path
108
+ Dir.chdir(dir)
109
+
89
110
  loaded = false
90
111
  file_loaders.each do |loader|
91
112
  if loader.call(path)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lacci
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Concetto Rudilosso
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-08-29 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2024-05-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: scarpe-components
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 0.4.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 0.4.0
14
28
  description:
15
29
  email:
16
30
  - marcoc.r@outlook.com
@@ -25,47 +39,60 @@ files:
25
39
  - lib/lacci/scarpe_cli.rb
26
40
  - lib/lacci/scarpe_core.rb
27
41
  - lib/lacci/version.rb
42
+ - lib/scarpe/niente.rb
43
+ - lib/scarpe/niente/app.rb
44
+ - lib/scarpe/niente/display_service.rb
45
+ - lib/scarpe/niente/drawable.rb
46
+ - lib/scarpe/niente/shoes_spec.rb
47
+ - lib/shoes-spec.rb
28
48
  - lib/shoes.rb
29
49
  - lib/shoes/app.rb
30
50
  - lib/shoes/background.rb
31
51
  - lib/shoes/border.rb
52
+ - lib/shoes/builtins.rb
53
+ - lib/shoes/changelog.rb
32
54
  - lib/shoes/colors.rb
33
55
  - lib/shoes/constants.rb
34
56
  - lib/shoes/display_service.rb
35
57
  - lib/shoes/download.rb
58
+ - lib/shoes/drawable.rb
59
+ - lib/shoes/drawables.rb
60
+ - lib/shoes/drawables/arc.rb
61
+ - lib/shoes/drawables/arrow.rb
62
+ - lib/shoes/drawables/border.rb
63
+ - lib/shoes/drawables/button.rb
64
+ - lib/shoes/drawables/check.rb
65
+ - lib/shoes/drawables/document_root.rb
66
+ - lib/shoes/drawables/edit_box.rb
67
+ - lib/shoes/drawables/edit_line.rb
68
+ - lib/shoes/drawables/flow.rb
69
+ - lib/shoes/drawables/font_helper.rb
70
+ - lib/shoes/drawables/image.rb
71
+ - lib/shoes/drawables/line.rb
72
+ - lib/shoes/drawables/link.rb
73
+ - lib/shoes/drawables/list_box.rb
74
+ - lib/shoes/drawables/oval.rb
75
+ - lib/shoes/drawables/para.rb
76
+ - lib/shoes/drawables/progress.rb
77
+ - lib/shoes/drawables/radio.rb
78
+ - lib/shoes/drawables/rect.rb
79
+ - lib/shoes/drawables/shape.rb
80
+ - lib/shoes/drawables/slot.rb
81
+ - lib/shoes/drawables/stack.rb
82
+ - lib/shoes/drawables/star.rb
83
+ - lib/shoes/drawables/subscription_item.rb
84
+ - lib/shoes/drawables/text_drawable.rb
85
+ - lib/shoes/drawables/video.rb
86
+ - lib/shoes/drawables/widget.rb
87
+ - lib/shoes/errors.rb
36
88
  - lib/shoes/log.rb
37
- - lib/shoes/spacing.rb
38
- - lib/shoes/widget.rb
39
- - lib/shoes/widgets.rb
40
- - lib/shoes/widgets/alert.rb
41
- - lib/shoes/widgets/arc.rb
42
- - lib/shoes/widgets/button.rb
43
- - lib/shoes/widgets/check.rb
44
- - lib/shoes/widgets/document_root.rb
45
- - lib/shoes/widgets/edit_box.rb
46
- - lib/shoes/widgets/edit_line.rb
47
- - lib/shoes/widgets/flow.rb
48
- - lib/shoes/widgets/font.rb
49
- - lib/shoes/widgets/image.rb
50
- - lib/shoes/widgets/line.rb
51
- - lib/shoes/widgets/link.rb
52
- - lib/shoes/widgets/list_box.rb
53
- - lib/shoes/widgets/para.rb
54
- - lib/shoes/widgets/radio.rb
55
- - lib/shoes/widgets/shape.rb
56
- - lib/shoes/widgets/slot.rb
57
- - lib/shoes/widgets/span.rb
58
- - lib/shoes/widgets/stack.rb
59
- - lib/shoes/widgets/star.rb
60
- - lib/shoes/widgets/subscription_item.rb
61
- - lib/shoes/widgets/text_widget.rb
62
- - lib/shoes/widgets/video.rb
89
+ - lib/shoes/margin_helper.rb
90
+ - lib/shoes/ruby_extensions.rb
63
91
  homepage: https://github.com/scarpe-team/scarpe
64
92
  licenses:
65
93
  - MIT
66
94
  metadata:
67
95
  homepage_uri: https://github.com/scarpe-team/scarpe
68
- source_code_uri: https://github.com/scarpe-team/scarpe
69
96
  changelog_uri: https://github.com/scarpe-team/scarpe/blob/main/CHANGELOG.md
70
97
  post_install_message:
71
98
  rdoc_options: []
@@ -82,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
109
  - !ruby/object:Gem::Version
83
110
  version: '0'
84
111
  requirements: []
85
- rubygems_version: 3.4.10
112
+ rubygems_version: 3.5.3
86
113
  signing_key:
87
114
  specification_version: 4
88
115
  summary: Lacci - a portable Shoes DSL with switchable display backends, part of Scarpe
data/lib/shoes/spacing.rb DELETED
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Shoes
4
- module Spacing
5
- def self.included(includer)
6
- includer.display_properties :margin, :padding, :margin_top, :margin_left, :margin_right, :margin_bottom, :options
7
- end
8
- end
9
- end