eskimo-core 3.0.0.pre.2 → 3.0.0.pre.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/eskimo/core/renderer.rb +34 -36
- data/lib/eskimo/core/version.rb +1 -1
- data/lib/eskimo/core.rb +5 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe139a2b1f4164f68905e500f083889d9f5ccf85ed74938567e63c7c4f614d39
|
4
|
+
data.tar.gz: 4981729446f3c0dfc18633bde80c06d13b06e5b6a9141667581f5f7659ec5ff1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33b638368d91f447d4bbf182925da64c5e8c9fd4ab3ec355d5d411442f03665d6f5e1af73b697e57d8507e1425708488b92e396d02407f3537aa3fd4127a368e
|
7
|
+
data.tar.gz: 4edda1327a3ac6b946cbcb0aa78cce12aff5249c07c494fd8484ec3c2e7204310cea7289640d2848ea1ca085319791ffc6e5584b6f2965d7f0a7de55bfcce023
|
data/lib/eskimo/core/renderer.rb
CHANGED
@@ -1,48 +1,46 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module Eskimo
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
3
|
+
module Eskimo::Core
|
4
|
+
# Render a component or a list of ones.
|
5
|
+
class Renderer
|
6
|
+
# @param props [Hash]
|
7
|
+
# Properties to pass to each component being rendered.
|
8
|
+
def initialize(**props)
|
9
|
+
@props = { **props, render: method(:render) }
|
10
|
+
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
# @param components [Proc]
|
13
|
+
# A block that returns components to render.
|
14
|
+
def apply(&components)
|
15
|
+
render(components)
|
16
|
+
end
|
18
17
|
|
19
|
-
|
18
|
+
private
|
20
19
|
|
21
|
-
|
22
|
-
|
20
|
+
def render(*components)
|
21
|
+
buf = +''
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
23
|
+
for component in components do
|
24
|
+
if component.is_a?(String)
|
25
|
+
buf << component
|
26
|
+
elsif component.is_a?(Array)
|
27
|
+
buf << render(*component)
|
28
|
+
elsif component.is_a?(Proc)
|
29
|
+
buf << render(component[**@props])
|
30
|
+
elsif component.respond_to?(:render)
|
31
|
+
buf << render(component.render(**@props))
|
32
|
+
elsif component
|
33
|
+
bail(component)
|
36
34
|
end
|
37
|
-
|
38
|
-
buf
|
39
35
|
end
|
40
36
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
37
|
+
buf
|
38
|
+
end
|
39
|
+
|
40
|
+
def bail(component)
|
41
|
+
raise ArgumentError.new(
|
42
|
+
"Eskimo: don't know how to render #{component.class} => #{component}"
|
43
|
+
)
|
46
44
|
end
|
47
45
|
end
|
48
46
|
end
|
data/lib/eskimo/core/version.rb
CHANGED
data/lib/eskimo/core.rb
CHANGED