eskimo-core 3.0.0 → 4.0.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/lib/eskimo/core/props.rb +33 -0
- data/lib/eskimo/core/slots.rb +64 -0
- data/lib/eskimo/core/version.rb +1 -1
- data/lib/eskimo/core.rb +2 -0
- metadata +6 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 959bb830335b91b27d98fb567b1559c0850100dac0fd60e589045bd7d24a8564
|
4
|
+
data.tar.gz: 9a03b3bf7d2cf19941b17627ec0483cf619c1c51d66e5ee25cfa0bcfc9110ac6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c6b7af2e3f5ed74c5c1deb884f8cad0da8b28674d115ca3cf3bf2e1f73c622e9da55ca5d58b5ed94c621bb30cfb4fb8aa5080f3b4b706703a9faddeedfceda9
|
7
|
+
data.tar.gz: 6768bf9549547792de1f23bfd91201e1262225a332b1034379be3bdb2194d967ec2da50d4c57c7b3176a82a9dcbba0ba38c88fa02d04419dd53e6eab55a686e9
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Eskimo
|
2
|
+
module Core
|
3
|
+
module Props
|
4
|
+
def self.included(base)
|
5
|
+
fail "#{name} must be prepended"
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.prepended(base)
|
9
|
+
if base.include?(Eskimo::Core::Slots)
|
10
|
+
fail "#{name} must be prepended before Eskmo::Core::Slots"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(**props, &children)
|
15
|
+
@props = props
|
16
|
+
@children = children
|
17
|
+
|
18
|
+
# can't find a cleaner way to check if parent constructor is defined
|
19
|
+
# ref (they also can't seem to find a better way):
|
20
|
+
# <https://apidock.com/rails/ActiveRecord/Coders/ColumnSerializer/check_arity_of_constructor>
|
21
|
+
begin
|
22
|
+
super
|
23
|
+
rescue ArgumentError => e
|
24
|
+
raise unless e.to_s.include?("expected 0")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def render(**kwargs)
|
29
|
+
super(**kwargs.merge(@props), &@children)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Eskimo
|
2
|
+
module Core
|
3
|
+
module Slots
|
4
|
+
def self.included(base)
|
5
|
+
fail "#{name} must be prepended"
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.prepended(base)
|
9
|
+
base.extend(ClassMethods)
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(**props, &occupants_or_children)
|
13
|
+
if klass_slots = self.class.instance_variable_get('@slots')
|
14
|
+
@slots = Hash[klass_slots.map { |k| [k,nil] }]
|
15
|
+
|
16
|
+
if occupants_or_children && occupants_or_children.arity == 1
|
17
|
+
occupants_or_children[SlotBuilder.new(@slots)]
|
18
|
+
|
19
|
+
begin
|
20
|
+
super(**props, &nil)
|
21
|
+
rescue ArgumentError => e
|
22
|
+
raise unless e.to_s.include?("expected 0")
|
23
|
+
end
|
24
|
+
|
25
|
+
return
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
begin
|
30
|
+
super
|
31
|
+
rescue ArgumentError => e
|
32
|
+
raise unless e.to_s.include?("expected 0")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module ClassMethods
|
37
|
+
def slot(name)
|
38
|
+
@slots ||= []
|
39
|
+
@slots << name
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class SlotBuilder
|
44
|
+
def initialize(store)
|
45
|
+
@store = store
|
46
|
+
end
|
47
|
+
|
48
|
+
def method_missing(name, *args, &block)
|
49
|
+
if @store.keys.include?(name.to_sym) && block
|
50
|
+
@store[name] = block
|
51
|
+
else
|
52
|
+
super
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def respond_to_missing?(name, include_private = false)
|
57
|
+
true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
private_constant :SlotBuilder
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/eskimo/core/version.rb
CHANGED
data/lib/eskimo/core.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eskimo-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ahmad Amireh
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: rspec
|
@@ -45,7 +44,9 @@ extensions: []
|
|
45
44
|
extra_rdoc_files: []
|
46
45
|
files:
|
47
46
|
- lib/eskimo/core.rb
|
47
|
+
- lib/eskimo/core/props.rb
|
48
48
|
- lib/eskimo/core/renderer.rb
|
49
|
+
- lib/eskimo/core/slots.rb
|
49
50
|
- lib/eskimo/core/version.rb
|
50
51
|
- spec/renderer_spec.rb
|
51
52
|
- spec/spec_helper.rb
|
@@ -53,7 +54,6 @@ homepage: https://github.com/amireh/eskimo
|
|
53
54
|
licenses:
|
54
55
|
- MIT
|
55
56
|
metadata: {}
|
56
|
-
post_install_message:
|
57
57
|
rdoc_options: []
|
58
58
|
require_paths:
|
59
59
|
- lib
|
@@ -68,11 +68,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
requirements: []
|
71
|
-
|
72
|
-
rubygems_version: 2.7.6
|
73
|
-
signing_key:
|
71
|
+
rubygems_version: 3.6.8
|
74
72
|
specification_version: 4
|
75
73
|
summary: Declarative text formatting
|
76
74
|
test_files:
|
77
|
-
- spec/spec_helper.rb
|
78
75
|
- spec/renderer_spec.rb
|
76
|
+
- spec/spec_helper.rb
|