antlers 0.4.0 → 0.5.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/lexer.rb +1 -1
- data/lib/modules/props.rb +1 -1
- data/lib/modules/variables.rb +14 -4
- data/lib/nodes/prop_node.rb +4 -1
- data/lib/nodes/var_node.rb +1 -1
- data/lib/version.rb +1 -1
- metadata +2 -2
- /data/lib/{queries.rb → support/queries.rb} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 181c1f53191d4d32c458d74cc67b1d97082d0c023631b0af0fe726dc0db86d9e
|
|
4
|
+
data.tar.gz: 010ab20070af4634c783f2aa8573f8fa69be674bf96451df15e59f434cc8fa90
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d50a398b59defec9de55b59e45c3bd1b57d56f846221b6e00bbd080522909225f6a9e62cd6bc7326b30d60322faf30fbaecf41cada8ed04caa076bafc44be1d0
|
|
7
|
+
data.tar.gz: 4c8e9d78e0ee5ce5fbb6dcdb1c76e3ebd91f1c2600cd6accbb066cce81ccad9038aed99f65c6f3c28c99265dcfe7a95729bae02f07ca17283d81821153e7f9ae
|
data/lib/lexer.rb
CHANGED
data/lib/modules/props.rb
CHANGED
data/lib/modules/variables.rb
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
require_relative '../support/queries'
|
|
2
|
+
|
|
1
3
|
module Antlers
|
|
2
4
|
module Variables
|
|
5
|
+
extend Queries
|
|
6
|
+
|
|
3
7
|
# Evaluation limited to the following for security and to prevent a templating language becoming a programming language.
|
|
4
8
|
# 1. An instance variable
|
|
5
9
|
# 2. A method call/local variable
|
|
6
10
|
# 3. A method chain
|
|
7
11
|
# 4. A static string
|
|
8
12
|
def evaluate(name:, current_binding:)
|
|
9
|
-
return
|
|
13
|
+
return name.to_s unless current_binding
|
|
10
14
|
|
|
11
15
|
name, *chain = name.split('.')
|
|
12
16
|
|
|
@@ -14,9 +18,15 @@ module Antlers
|
|
|
14
18
|
return method_chain(result:, chain:, current_binding:) if chain.count > 0
|
|
15
19
|
return result if result
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
rescue
|
|
19
|
-
|
|
21
|
+
nil
|
|
22
|
+
rescue StandardError
|
|
23
|
+
nil
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def fallback(value)
|
|
27
|
+
return value[1..-2] if Queries.user_defined_string?(value)
|
|
28
|
+
|
|
29
|
+
value
|
|
20
30
|
end
|
|
21
31
|
|
|
22
32
|
private
|
data/lib/nodes/prop_node.rb
CHANGED
|
@@ -12,7 +12,10 @@ module Antlers
|
|
|
12
12
|
event = create_render_event(props:)
|
|
13
13
|
|
|
14
14
|
renderable_klass = class_from_namespace(namespace: namespace&.split('::') || [], name: @name)
|
|
15
|
-
|
|
15
|
+
# TODO: There's currently 2 results for "Lowkey[renderable_klass.to_s]", this should not be.
|
|
16
|
+
# TODO: Only provide args that are defined, similar to how render_template does it.
|
|
17
|
+
initialize_method = Lowkey[renderable_klass.to_s].first[renderable_klass.to_s][:initialize]
|
|
18
|
+
renderable_instance = initialize_method ? renderable_klass.new(event:, **props) : renderable_klass.new(event:)
|
|
16
19
|
|
|
17
20
|
# Classes referenced via "<{ ChildNode }>" must implement class/instance render/render_template methods (See LowNode).
|
|
18
21
|
return renderable_instance.render_template(event:, parent_binding:, props:) if renderable_klass.template
|
data/lib/nodes/var_node.rb
CHANGED
|
@@ -18,7 +18,7 @@ module Antlers
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def render(current_binding: nil, parent_binding: nil, slot_node: nil, namespace: nil)
|
|
21
|
-
ERB::Util.html_escape(evaluate(name: @value, current_binding:) || @value)
|
|
21
|
+
ERB::Util.html_escape(evaluate(name: @value, current_binding:) || fallback(@value))
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: antlers
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- maedi
|
|
@@ -59,7 +59,7 @@ files:
|
|
|
59
59
|
- lib/nodes/var_node.rb
|
|
60
60
|
- lib/nodes/yield_node.rb
|
|
61
61
|
- lib/parser.rb
|
|
62
|
-
- lib/queries.rb
|
|
62
|
+
- lib/support/queries.rb
|
|
63
63
|
- lib/version.rb
|
|
64
64
|
homepage: https://codeberg.org/raindeer/antlers
|
|
65
65
|
licenses: []
|
|
File without changes
|