low_node 0.3.1 → 0.4.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/low_node.rb +3 -2
- data/lib/templates/renderer.rb +18 -22
- data/lib/templates/template.rb +1 -1
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3306c75f526286a539e171e60afec93be837c7e25047aa129b206351d61ef0ec
|
|
4
|
+
data.tar.gz: adca6941b2fec856c5cfeeee62bc19522073cc4a19369977715af2476df424e5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c33df65970b91273bf362a342ad2f055479a34fab25025cf8583420552587bb93726a9344d2fe50ea971690f5d11b455c0daa0fc859fe966b874c5251bc0a467
|
|
7
|
+
data.tar.gz: 1a8596590dbd4c8b033297b70d631f4f580e4d9ef342af20d937cd58d65e4f8e6a5e0bb4c58c7c519551e6f0d04fc4dfe28229d1146b0b55100745b65350dc73
|
data/lib/low_node.rb
CHANGED
|
@@ -17,17 +17,18 @@ class LowNode
|
|
|
17
17
|
|
|
18
18
|
attr_reader :event
|
|
19
19
|
|
|
20
|
-
def initialize(event:)
|
|
20
|
+
def initialize(event: nil)
|
|
21
21
|
@event = event
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
+
# TODO: Rename "handle" method/action to more specific "route" and maybe split out into module too.
|
|
24
25
|
def handle(event:)
|
|
25
26
|
nil
|
|
26
27
|
end
|
|
27
28
|
|
|
28
29
|
class << self
|
|
29
30
|
def handle(event:)
|
|
30
|
-
|
|
31
|
+
new(event:).handle(event:)
|
|
31
32
|
end
|
|
32
33
|
|
|
33
34
|
def inherited(child)
|
data/lib/templates/renderer.rb
CHANGED
|
@@ -4,26 +4,22 @@ require_relative 'template'
|
|
|
4
4
|
|
|
5
5
|
module Low
|
|
6
6
|
module Templates
|
|
7
|
+
# Use the Method Factory pattern to .render -> .new -> #initialize -> #render a low node.
|
|
7
8
|
module Renderer
|
|
8
|
-
def render(event: nil)
|
|
9
|
-
nil
|
|
10
|
-
end
|
|
11
|
-
|
|
12
9
|
# When render() contains RBX/Antlers then LowLoad builds a template to render with instead.
|
|
13
|
-
def render_template(
|
|
10
|
+
def render_template(parent_binding: nil, slot_node: nil, props: {}, **kwargs)
|
|
14
11
|
template = self.class.template
|
|
15
12
|
|
|
16
13
|
# NOTE: We currently set local variables on this local binding, not the receiver's binding.
|
|
17
14
|
# TODO: Should we create an "instance_binding" method on LowNode and use that binding instead?
|
|
18
15
|
current_binding = binding
|
|
19
|
-
current_binding.local_variable_set(:event, event)
|
|
20
16
|
|
|
21
|
-
# Pass in props from parent component as keyword arguments.
|
|
22
17
|
template.params.each do |param|
|
|
23
|
-
|
|
18
|
+
variable = props[param] || kwargs[param] || raise(ArgumentError, "Missing argument: '#{param}'")
|
|
19
|
+
current_binding.local_variable_set(param, variable)
|
|
24
20
|
end
|
|
25
21
|
|
|
26
|
-
template.engine.render(ast: template.ast, current_binding:, parent_binding:, slot_node
|
|
22
|
+
template.engine.render(ast: template.ast, current_binding:, parent_binding:, slot_node:)
|
|
27
23
|
end
|
|
28
24
|
|
|
29
25
|
def self.included(base)
|
|
@@ -31,30 +27,30 @@ module Low
|
|
|
31
27
|
end
|
|
32
28
|
|
|
33
29
|
module ClassMethods
|
|
30
|
+
def render(**)
|
|
31
|
+
# GOAL: Make return value configurable; ResponseEvent, Response, or body.
|
|
32
|
+
response = Low::Factories::ResponseFactory.html(body: response_body(**))
|
|
33
|
+
Low::Events::ResponseEvent.new(response:).tap { it.branch }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# LowLoad hook.
|
|
34
37
|
def template
|
|
35
38
|
@template
|
|
36
39
|
end
|
|
37
40
|
|
|
41
|
+
# LowLoad hook.
|
|
38
42
|
def build_template(template:, params:, engine:, namespace:)
|
|
39
43
|
@template = Template.new(template:, params:, engine:, namespace:)
|
|
40
44
|
end
|
|
41
45
|
|
|
42
|
-
# TODO: Handle situation where node is tested in a unit test and args come in here; expose them to the template.
|
|
43
|
-
def render(event: nil)
|
|
44
|
-
node = self.new(event:)
|
|
45
|
-
|
|
46
|
-
# GOAL: Make return value configurable; ResponseEvent, Response, or body.
|
|
47
|
-
response = Low::Factories::ResponseFactory.html(body: response_body(node:, event:))
|
|
48
|
-
Low::Events::ResponseEvent.new(response:).tap { it.branch }
|
|
49
|
-
end
|
|
50
|
-
|
|
51
46
|
private
|
|
52
47
|
|
|
53
|
-
def response_body(
|
|
54
|
-
|
|
55
|
-
|
|
48
|
+
def response_body(**)
|
|
49
|
+
node = new(**)
|
|
50
|
+
|
|
51
|
+
return node.render_template(**) if @template
|
|
56
52
|
|
|
57
|
-
node.render
|
|
53
|
+
node.render(**)
|
|
58
54
|
end
|
|
59
55
|
end
|
|
60
56
|
end
|
data/lib/templates/template.rb
CHANGED
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: low_node
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- maedi
|
|
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
108
108
|
- !ruby/object:Gem::Version
|
|
109
109
|
version: '0'
|
|
110
110
|
requirements: []
|
|
111
|
-
rubygems_version: 4.0.
|
|
111
|
+
rubygems_version: 4.0.6
|
|
112
112
|
specification_version: 4
|
|
113
113
|
summary: Flexible building blocks
|
|
114
114
|
test_files: []
|