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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 581b3e4990e2c5279c26989e05e545f61a80a3fb8590c8a4bfd058878f2684f8
4
- data.tar.gz: 5135d9c10a19fa9bb80c79694f998287c1dad614514a6d22c915cfc371d54b71
3
+ metadata.gz: 181c1f53191d4d32c458d74cc67b1d97082d0c023631b0af0fe726dc0db86d9e
4
+ data.tar.gz: 010ab20070af4634c783f2aa8573f8fa69be674bf96451df15e59f434cc8fa90
5
5
  SHA512:
6
- metadata.gz: 4e85dd8fc504c21fe4c71f692203dc695fd60834e2f2f33185c1daf6edbf3e64c4c8eccf29710d899f5beab1c348cac1c9fe6a8350778b7563cd4d879cef78e2
7
- data.tar.gz: 5b4853ba5e0d0749d4305c57923d6488ddcd5b05892aa2e274dd3683519ae85fcbd9a84b117e9c453a9b1ab256c814cd6f6d35b71db76935e30f0c86d17852ba
6
+ metadata.gz: d50a398b59defec9de55b59e45c3bd1b57d56f846221b6e00bbd080522909225f6a9e62cd6bc7326b30d60322faf30fbaecf41cada8ed04caa076bafc44be1d0
7
+ data.tar.gz: 4c8e9d78e0ee5ce5fbb6dcdb1c76e3ebd91f1c2600cd6accbb066cce81ccad9038aed99f65c6f3c28c99265dcfe7a95729bae02f07ca17283d81821153e7f9ae
data/lib/lexer.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'queries'
3
+ require_relative 'support/queries'
4
4
 
5
5
  module Antlers
6
6
  extend Queries
data/lib/modules/props.rb CHANGED
@@ -27,7 +27,7 @@ module Antlers
27
27
  evaluated_props = {}
28
28
 
29
29
  props.each do |name, value|
30
- evaluated_props[name] = evaluate(name: value, current_binding:)
30
+ evaluated_props[name] = evaluate(name: value, current_binding:) || fallback(value)
31
31
  end
32
32
 
33
33
  evaluated_props
@@ -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 @value.to_s unless current_binding
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
- @value.to_s
18
- rescue NameError
19
- @value.to_s
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
@@ -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
- renderable_instance = renderable_klass.new(event:)
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Antlers
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0'
5
5
  end
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.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