curlybars 1.10.0 → 1.12.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: a21d1b2f9bc23315fd45fc0f3e1f1dba730d7d7555b221968956635e00f2f989
4
- data.tar.gz: d834d004783806af09cec7fa411bd5184529a30b1d60995cebcba564d54cd5e5
3
+ metadata.gz: 2ee481734b28469381f2b97ae1bdfd7bea4f53fd2d8cebef0ca7cd1630bc61d2
4
+ data.tar.gz: 5444467d66e9991ebb7b43c8cbb71b4b066e3d5c032d5a7fe305a1bd7e9a8cfc
5
5
  SHA512:
6
- metadata.gz: '066406790ee118acfcd150c5d604e41298dfca0436be419482e05a71253396827c2314313036dfe03d853a01e2b615fec66ab26fa43058fbd94fa27160dad970'
7
- data.tar.gz: 21580e1338a0200d0210e298752030320c38fbf7a9f1021912ee638d5b4a3492bfdae79e64eb754f919fb34d17f88c74f624e5aaab577bf566dcaf31ef173188
6
+ metadata.gz: 7998d467492215867831a81d15f94b4b0748e02e007711e9772c2c632bfc40554d997e9b6762690ff39b04e7f6a56efcb2dee8ab2be88107f5e8e47735ddc09b
7
+ data.tar.gz: b647184f3f5466d4278193aa675295a27aca3f90cc3137a0782562192aed7ec2f7a00170f5479426e551e0571f7592ba16262ada7005e980881359d492624d45
@@ -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)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Curlybars
2
- VERSION = '1.10.0'.freeze
4
+ VERSION = '1.12.0'
3
5
  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.10.0
4
+ version: 1.12.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: 2024-01-16 00:00:00.000000000 Z
18
+ date: 2024-07-10 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: actionpack
@@ -24,9 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '6.0'
27
- - - "<"
28
- - !ruby/object:Gem::Version
29
- version: '7.2'
30
27
  type: :runtime
31
28
  prerelease: false
32
29
  version_requirements: !ruby/object:Gem::Requirement
@@ -34,9 +31,6 @@ dependencies:
34
31
  - - ">="
35
32
  - !ruby/object:Gem::Version
36
33
  version: '6.0'
37
- - - "<"
38
- - !ruby/object:Gem::Version
39
- version: '7.2'
40
34
  - !ruby/object:Gem::Dependency
41
35
  name: activesupport
42
36
  requirement: !ruby/object:Gem::Requirement
@@ -44,9 +38,6 @@ dependencies:
44
38
  - - ">="
45
39
  - !ruby/object:Gem::Version
46
40
  version: '6.0'
47
- - - "<"
48
- - !ruby/object:Gem::Version
49
- version: '7.2'
50
41
  type: :runtime
51
42
  prerelease: false
52
43
  version_requirements: !ruby/object:Gem::Requirement
@@ -54,9 +45,6 @@ dependencies:
54
45
  - - ">="
55
46
  - !ruby/object:Gem::Version
56
47
  version: '6.0'
57
- - - "<"
58
- - !ruby/object:Gem::Version
59
- version: '7.2'
60
48
  - !ruby/object:Gem::Dependency
61
49
  name: ffi
62
50
  requirement: !ruby/object:Gem::Requirement
@@ -120,9 +108,6 @@ dependencies:
120
108
  - - ">="
121
109
  - !ruby/object:Gem::Version
122
110
  version: '6.0'
123
- - - "<"
124
- - !ruby/object:Gem::Version
125
- version: '7.2'
126
111
  type: :development
127
112
  prerelease: false
128
113
  version_requirements: !ruby/object:Gem::Requirement
@@ -130,9 +115,6 @@ dependencies:
130
115
  - - ">="
131
116
  - !ruby/object:Gem::Version
132
117
  version: '6.0'
133
- - - "<"
134
- - !ruby/object:Gem::Version
135
- version: '7.2'
136
118
  - !ruby/object:Gem::Dependency
137
119
  name: rake
138
120
  requirement: !ruby/object:Gem::Requirement
@@ -287,7 +269,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
287
269
  - !ruby/object:Gem::Version
288
270
  version: '0'
289
271
  requirements: []
290
- rubygems_version: 3.5.3
272
+ rubygems_version: 3.5.11
291
273
  signing_key:
292
274
  specification_version: 4
293
275
  summary: Create your views using Handlebars templates!