curlybars 1.9.0 → 1.11.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: 1b3420bf9b68dbab653e2ead7d7802ffc7abf4312630a0fb328f79aaddca1a2d
4
- data.tar.gz: b0e91d8dc8ccc8069d3543c204c907a2681f06a22ce586f162ef891ae3d70904
3
+ metadata.gz: 75e0f6f2934a512ad3ba98455f3eab1492ddd131489322d4082a19cf9568b1cc
4
+ data.tar.gz: 9e36b98d7c878e4083ca27f34a7daccc2eee4f39bb6e4e5040c186a806321f87
5
5
  SHA512:
6
- metadata.gz: bda5835f6f4cca77b09cf12ccca3b0c74ec30758743a45ae2ca76e703bfa8603e742c6c21b296ebf30fa849b13bc56b8187b6676272e9ba25bde218e7700b287
7
- data.tar.gz: ff2a4169575055da7591aa9b0be580695f8776f2532f8c2308d49169e9892486eea7dd7688bff108f8b325966c921854875b8ac28f64dd3821253d2ae2373255
6
+ metadata.gz: 6aeb6a8ace0d10637dcc0a9be64fc23e150d1971afb01d4ce8c735d9740e6a1f1644c33cd662dbd3fbbaa9e2b8b34a2c76aa735d064eb08118dd54435c3eb5c9
7
+ data.tar.gz: fd1289f763c7870e921120b849a1f1fa8de334c9998e8ca34fc4758384a83fc62ac86070b382b934f47961a4f0b7073c49ade00ebb77572b0d419d7e8a5d8677
@@ -100,6 +100,17 @@ module Curlybars
100
100
  define_method(:allows_method?) do |method|
101
101
  allowed_methods.include?(method)
102
102
  end
103
+
104
+ define_method(:as_json) do |*args|
105
+ return @__as_json if defined?(@__as_json)
106
+
107
+ @__as_json ||= allowed_methods.each_with_object({}) do |method, hash|
108
+ unless self.method(method).arity > 0
109
+ value = send(method)
110
+ hash[method] = value.equal?(self) ? "[circular reference]" : value.as_json
111
+ end
112
+ end
113
+ end
103
114
  end
104
115
 
105
116
  def self.extended(base)
@@ -79,6 +79,18 @@ module Curlybars
79
79
  arguments.map { |argument| argument.validate_as_value(branches) },
80
80
  options.map { |option| option.validate(branches) }
81
81
  ]
82
+ elsif helper.generic_helper?(branches)
83
+ if arguments.empty?
84
+ message = "#{helper.path} requires an argument"
85
+ Curlybars::Error::Validate.new('invalid_signature', message, helper.position)
86
+ else
87
+ [
88
+ helper_template.validate(branches),
89
+ else_template.validate(branches),
90
+ arguments.map { |argument| argument.validate(branches, check_type: :anything) },
91
+ options.map { |option| option.validate(branches) }
92
+ ]
93
+ end
82
94
  else
83
95
  message = "#{helper.path} must be allowed as helper or leaf"
84
96
  Curlybars::Error::Validate.new('invalid_block_helper', message, helper.position)
@@ -61,7 +61,8 @@ module Curlybars
61
61
  scope = variables.first(variables_position).reverse.find do |vars|
62
62
  vars.key? variable
63
63
  end
64
- return scope[variable] if scope
64
+
65
+ scope[variable] if scope
65
66
  end
66
67
 
67
68
  def path(path, position)
@@ -43,10 +43,6 @@ module Curlybars
43
43
 
44
44
  private
45
45
 
46
- def compile_for_actionview5(template)
47
- compile(template, template.source)
48
- end
49
-
50
46
  def compile(template, source)
51
47
  # Template is empty, so there's no need to initialize a presenter.
52
48
  return %("") if source.empty?
@@ -1,3 +1,3 @@
1
1
  module Curlybars
2
- VERSION = '1.9.0'.freeze
2
+ VERSION = '1.11.0'.freeze
3
3
  end
data/lib/curlybars.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'digest'
2
2
  require 'active_support/cache'
3
+ require 'active_support/core_ext/object/json'
3
4
  require 'curlybars/version'
4
5
 
5
6
  # Curlybars is a view system based on Curly that uses Handlebars syntax.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curlybars
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Libo Cannici
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2023-04-18 00:00:00.000000000 Z
18
+ date: 2024-02-27 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: actionpack
@@ -26,7 +26,7 @@ dependencies:
26
26
  version: '6.0'
27
27
  - - "<"
28
28
  - !ruby/object:Gem::Version
29
- version: '7.1'
29
+ version: '7.2'
30
30
  type: :runtime
31
31
  prerelease: false
32
32
  version_requirements: !ruby/object:Gem::Requirement
@@ -36,7 +36,7 @@ dependencies:
36
36
  version: '6.0'
37
37
  - - "<"
38
38
  - !ruby/object:Gem::Version
39
- version: '7.1'
39
+ version: '7.2'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: activesupport
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -46,7 +46,7 @@ dependencies:
46
46
  version: '6.0'
47
47
  - - "<"
48
48
  - !ruby/object:Gem::Version
49
- version: '7.1'
49
+ version: '7.2'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,7 +56,7 @@ dependencies:
56
56
  version: '6.0'
57
57
  - - "<"
58
58
  - !ruby/object:Gem::Version
59
- version: '7.1'
59
+ version: '7.2'
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: ffi
62
62
  requirement: !ruby/object:Gem::Requirement
@@ -122,7 +122,7 @@ dependencies:
122
122
  version: '6.0'
123
123
  - - "<"
124
124
  - !ruby/object:Gem::Version
125
- version: '7.1'
125
+ version: '7.2'
126
126
  type: :development
127
127
  prerelease: false
128
128
  version_requirements: !ruby/object:Gem::Requirement
@@ -132,7 +132,7 @@ dependencies:
132
132
  version: '6.0'
133
133
  - - "<"
134
134
  - !ruby/object:Gem::Version
135
- version: '7.1'
135
+ version: '7.2'
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: rake
138
138
  requirement: !ruby/object:Gem::Requirement
@@ -151,72 +151,72 @@ dependencies:
151
151
  name: rspec-rails
152
152
  requirement: !ruby/object:Gem::Requirement
153
153
  requirements:
154
- - - "~>"
154
+ - - ">="
155
155
  - !ruby/object:Gem::Version
156
- version: '3.8'
156
+ version: '0'
157
157
  type: :development
158
158
  prerelease: false
159
159
  version_requirements: !ruby/object:Gem::Requirement
160
160
  requirements:
161
- - - "~>"
161
+ - - ">="
162
162
  - !ruby/object:Gem::Version
163
- version: '3.8'
163
+ version: '0'
164
164
  - !ruby/object:Gem::Dependency
165
165
  name: rubocop
166
166
  requirement: !ruby/object:Gem::Requirement
167
167
  requirements:
168
168
  - - "~>"
169
169
  - !ruby/object:Gem::Version
170
- version: 1.6.0
170
+ version: '1.57'
171
171
  type: :development
172
172
  prerelease: false
173
173
  version_requirements: !ruby/object:Gem::Requirement
174
174
  requirements:
175
175
  - - "~>"
176
176
  - !ruby/object:Gem::Version
177
- version: 1.6.0
177
+ version: '1.57'
178
178
  - !ruby/object:Gem::Dependency
179
179
  name: rubocop-performance
180
180
  requirement: !ruby/object:Gem::Requirement
181
181
  requirements:
182
182
  - - "~>"
183
183
  - !ruby/object:Gem::Version
184
- version: 1.9.0
184
+ version: '1.19'
185
185
  type: :development
186
186
  prerelease: false
187
187
  version_requirements: !ruby/object:Gem::Requirement
188
188
  requirements:
189
189
  - - "~>"
190
190
  - !ruby/object:Gem::Version
191
- version: 1.9.0
191
+ version: '1.19'
192
192
  - !ruby/object:Gem::Dependency
193
193
  name: rubocop-rake
194
194
  requirement: !ruby/object:Gem::Requirement
195
195
  requirements:
196
196
  - - "~>"
197
197
  - !ruby/object:Gem::Version
198
- version: 0.5.0
198
+ version: '0.6'
199
199
  type: :development
200
200
  prerelease: false
201
201
  version_requirements: !ruby/object:Gem::Requirement
202
202
  requirements:
203
203
  - - "~>"
204
204
  - !ruby/object:Gem::Version
205
- version: 0.5.0
205
+ version: '0.6'
206
206
  - !ruby/object:Gem::Dependency
207
207
  name: rubocop-rspec
208
208
  requirement: !ruby/object:Gem::Requirement
209
209
  requirements:
210
210
  - - "~>"
211
211
  - !ruby/object:Gem::Version
212
- version: 2.1.0
212
+ version: '2.25'
213
213
  type: :development
214
214
  prerelease: false
215
215
  version_requirements: !ruby/object:Gem::Requirement
216
216
  requirements:
217
217
  - - "~>"
218
218
  - !ruby/object:Gem::Version
219
- version: 2.1.0
219
+ version: '2.25'
220
220
  description: |-
221
221
  A view layer for your Rails apps that separates structure and logic, using Handlebars templates.
222
222
  Strongly inspired by Curly Template gem by Daniel Schierbeck.
@@ -287,7 +287,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
287
287
  - !ruby/object:Gem::Version
288
288
  version: '0'
289
289
  requirements: []
290
- rubygems_version: 3.0.3.1
290
+ rubygems_version: 3.5.3
291
291
  signing_key:
292
292
  specification_version: 4
293
293
  summary: Create your views using Handlebars templates!