curlybars 1.10.0 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
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!