mvz-ruby-handlebars 0.0.12 → 0.0.13

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: d971e4df297aebaa8445decfe5756ffc6140318c8ad93d13ca90c3a2ed8d6601
4
- data.tar.gz: 47de3f30733f85f377bfd5e3dc2b554940f406e96066de3fb38c1a53c8faf207
3
+ metadata.gz: 0fb29d1fe9fe4a053ef3772b90983af24a9b1e29c922e1222c87d2bdc39382de
4
+ data.tar.gz: 1c982006f0ffe74ded0271f864de390d5b54414428ac80820fedee8a22143832
5
5
  SHA512:
6
- metadata.gz: 21bf66dedf5b10f50f46421ebfc632853b38cb3836f5fd4f4c1a798359b0cc3dba057fc8aa3f0b8dd329c5c862d8a78e27c92dcc8313d9873c5c5a506a383863
7
- data.tar.gz: 3abb82f084a654f633f928535bb8f6331d066269ae14619a645b88fb50c7c0f395065201046600ca3fdc81a0a9e31f0b51da1909243d5719b4e964186b0bb376
6
+ metadata.gz: 6ca8bfb3a42446ac17a1711e57b6baae38b34180268289c59a4bb9069476b28f4c591b495ec3f8d5f7e7b69818f38dd80372a88a49749f08494f01830713928d
7
+ data.tar.gz: fe16a78829fdb5bf0e76939e794c73d0d14c4aa0872fbfb87be277611429b66aacd66544ace3ac7d7d596d256bc8190c9d9b4a13c8195291664e4b8cb667d3a3
data/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  This is the changelog for mvz-ruby-handlebars
4
4
 
5
+ ## 0.0.13 (2024-10-26)
6
+
7
+ * Support Ruby 3.2 through 3.4, dropping support for Ruby 3.0 and 3.1
8
+ ([#40] and [#43] by [mvz])
9
+ * Remove large dynamic object constants `Handlebars::Handlebars::PARSER` and
10
+ `Handlebars::Handlebars::TRANSFORM` ([#42] by [mvz])
11
+
12
+ [#40]: https://github.com/mvz/ruby-handlebars/pull/40
13
+ [#42]: https://github.com/mvz/ruby-handlebars/pull/42
14
+ [#43]: https://github.com/mvz/ruby-handlebars/pull/43
15
+
5
16
  ## 0.0.12 (2024-05-18)
6
17
 
7
18
  * Support Ruby 3.0 through 3.3, dropping support for 2.6 and 2.7
@@ -0,0 +1,88 @@
1
+ require "parslet"
2
+ require_relative "tree"
3
+
4
+ module Handlebars
5
+ class Transform < Parslet::Transform
6
+ rule(template_content: simple(:content)) { Tree::TemplateContent.new(content) }
7
+ rule(replaced_unsafe_item: simple(:item)) { Tree::EscapedReplacement.new(item) }
8
+ rule(replaced_safe_item: simple(:item)) { Tree::Replacement.new(item) }
9
+ rule(str_content: simple(:content)) { Tree::String.new(content) }
10
+ rule(parameter_name: simple(:name)) { Tree::Parameter.new(name) }
11
+
12
+ rule(
13
+ unsafe_helper_name: simple(:name),
14
+ parameters: subtree(:parameters)
15
+ ) do
16
+ Tree::EscapedHelper.new(name, parameters)
17
+ end
18
+
19
+ rule(
20
+ safe_helper_name: simple(:name),
21
+ parameters: subtree(:parameters)
22
+ ) do
23
+ Tree::Helper.new(name, parameters)
24
+ end
25
+
26
+ rule(
27
+ helper_name: simple(:name),
28
+ block_items: subtree(:block_items)
29
+ ) do
30
+ Tree::Helper.new(name, [], block_items)
31
+ end
32
+
33
+ rule(
34
+ helper_name: simple(:name),
35
+ block_items: subtree(:block_items),
36
+ else_block_items: subtree(:else_block_items)
37
+ ) do
38
+ Tree::Helper.new(name, [], block_items, else_block_items)
39
+ end
40
+
41
+ rule(
42
+ helper_name: simple(:name),
43
+ parameters: subtree(:parameters),
44
+ block_items: subtree(:block_items)
45
+ ) do
46
+ Tree::Helper.new(name, parameters, block_items)
47
+ end
48
+
49
+ rule(
50
+ helper_name: simple(:name),
51
+ parameters: subtree(:parameters),
52
+ block_items: subtree(:block_items),
53
+ else_block_items: subtree(:else_block_items)
54
+ ) do
55
+ Tree::Helper.new(name, parameters, block_items, else_block_items)
56
+ end
57
+
58
+ rule(
59
+ helper_name: simple(:name),
60
+ parameters: subtree(:parameters),
61
+ as_parameters: subtree(:as_parameters),
62
+ block_items: subtree(:block_items)
63
+ ) do
64
+ Tree::AsHelper.new(name, parameters, as_parameters, block_items)
65
+ end
66
+
67
+ rule(
68
+ helper_name: simple(:name),
69
+ parameters: subtree(:parameters),
70
+ as_parameters: subtree(:as_parameters),
71
+ block_items: subtree(:block_items),
72
+ else_block_items: subtree(:else_block_items)
73
+ ) do
74
+ Tree::AsHelper.new(name, parameters, as_parameters, block_items, else_block_items)
75
+ end
76
+
77
+ rule(
78
+ partial_name: simple(:partial_name),
79
+ arguments: subtree(:arguments)
80
+ ) do
81
+ Tree::PartialWithArgs.new(partial_name, arguments)
82
+ end
83
+
84
+ rule(partial_name: simple(:partial_name)) { Tree::Partial.new(partial_name) }
85
+ rule(block_items: subtree(:block_items)) { Tree::Block.new(block_items) }
86
+ rule(else_block_items: subtree(:else_block_items)) { Tree::Block.new(block_items) }
87
+ end
88
+ end
@@ -17,17 +17,23 @@ module Handlebars
17
17
  class Replacement < TreeItem.new(:item)
18
18
  def _eval(context)
19
19
  helper = context.get_helper(item.to_s)
20
- if helper && (helper.arity == 1 || helper.arity == -2)
20
+ if call_with_one_argument_possible?(helper)
21
21
  helper.apply(context)
22
22
  else
23
23
  context.get(item.to_s)
24
24
  end
25
25
  end
26
+
27
+ private
28
+
29
+ def call_with_one_argument_possible?(helper)
30
+ [1, -2].include? helper&.arity
31
+ end
26
32
  end
27
33
 
28
34
  class EscapedReplacement < Replacement
29
35
  def _eval(context)
30
- context.escaper.escape(super(context).to_s)
36
+ context.escaper.escape(super.to_s)
31
37
  end
32
38
  end
33
39
 
@@ -71,7 +77,7 @@ module Handlebars
71
77
 
72
78
  class EscapedHelper < Helper
73
79
  def _eval(context)
74
- context.escaper.escape(super(context).to_s)
80
+ context.escaper.escape(super.to_s)
75
81
  end
76
82
  end
77
83
 
@@ -102,88 +108,4 @@ module Handlebars
102
108
 
103
109
  end
104
110
  end
105
-
106
- class Transform < Parslet::Transform
107
- rule(template_content: simple(:content)) {Tree::TemplateContent.new(content)}
108
- rule(replaced_unsafe_item: simple(:item)) {Tree::EscapedReplacement.new(item)}
109
- rule(replaced_safe_item: simple(:item)) {Tree::Replacement.new(item)}
110
- rule(str_content: simple(:content)) {Tree::String.new(content)}
111
- rule(parameter_name: simple(:name)) {Tree::Parameter.new(name)}
112
-
113
- rule(
114
- unsafe_helper_name: simple(:name),
115
- parameters: subtree(:parameters)
116
- ) {
117
- Tree::EscapedHelper.new(name, parameters)
118
- }
119
-
120
- rule(
121
- safe_helper_name: simple(:name),
122
- parameters: subtree(:parameters)
123
- ) {
124
- Tree::Helper.new(name, parameters)
125
- }
126
-
127
- rule(
128
- helper_name: simple(:name),
129
- block_items: subtree(:block_items),
130
- ) {
131
- Tree::Helper.new(name, [], block_items)
132
- }
133
-
134
- rule(
135
- helper_name: simple(:name),
136
- block_items: subtree(:block_items),
137
- else_block_items: subtree(:else_block_items)
138
- ) {
139
- Tree::Helper.new(name, [], block_items, else_block_items)
140
- }
141
-
142
- rule(
143
- helper_name: simple(:name),
144
- parameters: subtree(:parameters),
145
- block_items: subtree(:block_items),
146
- ) {
147
- Tree::Helper.new(name, parameters, block_items)
148
- }
149
-
150
- rule(
151
- helper_name: simple(:name),
152
- parameters: subtree(:parameters),
153
- block_items: subtree(:block_items),
154
- else_block_items: subtree(:else_block_items)
155
- ) {
156
- Tree::Helper.new(name, parameters, block_items, else_block_items)
157
- }
158
-
159
- rule(
160
- helper_name: simple(:name),
161
- parameters: subtree(:parameters),
162
- as_parameters: subtree(:as_parameters),
163
- block_items: subtree(:block_items),
164
- ) {
165
- Tree::AsHelper.new(name, parameters, as_parameters, block_items)
166
- }
167
-
168
- rule(
169
- helper_name: simple(:name),
170
- parameters: subtree(:parameters),
171
- as_parameters: subtree(:as_parameters),
172
- block_items: subtree(:block_items),
173
- else_block_items: subtree(:else_block_items)
174
- ) {
175
- Tree::AsHelper.new(name, parameters, as_parameters, block_items, else_block_items)
176
- }
177
-
178
- rule(
179
- partial_name: simple(:partial_name),
180
- arguments: subtree(:arguments)
181
- ) {
182
- Tree::PartialWithArgs.new(partial_name, arguments)
183
- }
184
-
185
- rule(partial_name: simple(:partial_name)) {Tree::Partial.new(partial_name)}
186
- rule(block_items: subtree(:block_items)) {Tree::Block.new(block_items)}
187
- rule(else_block_items: subtree(:else_block_items)) {Tree::Block.new(block_items)}
188
- end
189
111
  end
@@ -1,3 +1,3 @@
1
1
  module Handlebars
2
- VERSION = "0.0.12"
2
+ VERSION = "0.0.13"
3
3
  end
@@ -2,6 +2,7 @@ require_relative "ruby-handlebars/version"
2
2
  require_relative "ruby-handlebars/context"
3
3
  require_relative "ruby-handlebars/parser"
4
4
  require_relative "ruby-handlebars/tree"
5
+ require_relative "ruby-handlebars/transform"
5
6
  require_relative "ruby-handlebars/template"
6
7
  require_relative "ruby-handlebars/helper"
7
8
  require_relative "ruby-handlebars/helpers/register_default_helpers"
@@ -15,6 +16,8 @@ module Handlebars
15
16
  @as_helpers = {}
16
17
  @helpers = {}
17
18
  @partials = {}
19
+ @parser = Parser.new
20
+ @transform = Transform.new
18
21
 
19
22
  register_default_helpers
20
23
  set_escaper
@@ -54,11 +57,10 @@ module Handlebars
54
57
 
55
58
  private
56
59
 
57
- PARSER = Parser.new
58
- TRANSFORM = Transform.new
60
+ attr_reader :parser, :transform
59
61
 
60
62
  def template_to_ast(content)
61
- TRANSFORM.apply(PARSER.parse(content))
63
+ transform.apply(parser.parse(content))
62
64
  end
63
65
 
64
66
  def register_default_helpers
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require "simplecov"
2
2
  SimpleCov.start
3
3
 
4
- require "pry"
5
4
  RSpec::Mocks.configuration.allow_message_expectations_on_nil = true
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mvz-ruby-handlebars
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Pretre
8
8
  - Hiptest R&D
9
9
  - Matijs van Zuijlen
10
- autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2024-05-18 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: parslet
@@ -26,40 +25,6 @@ dependencies:
26
25
  - - "~>"
27
26
  - !ruby/object:Gem::Version
28
27
  version: '2.0'
29
- - !ruby/object:Gem::Dependency
30
- name: pry
31
- requirement: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - "~>"
34
- - !ruby/object:Gem::Version
35
- version: 0.14.0
36
- type: :development
37
- prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: 0.14.0
43
- - !ruby/object:Gem::Dependency
44
- name: pry-stack_explorer
45
- requirement: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '0.4'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 0.4.12
53
- type: :development
54
- prerelease: false
55
- version_requirements: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '0.4'
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: 0.4.12
63
28
  - !ruby/object:Gem::Dependency
64
29
  name: rake
65
30
  requirement: !ruby/object:Gem::Requirement
@@ -130,7 +95,6 @@ dependencies:
130
95
  - - ">="
131
96
  - !ruby/object:Gem::Version
132
97
  version: '0'
133
- description:
134
98
  email:
135
99
  - matijs@matijs.net
136
100
  executables: []
@@ -158,6 +122,7 @@ files:
158
122
  - lib/ruby-handlebars/helpers/with_helper.rb
159
123
  - lib/ruby-handlebars/parser.rb
160
124
  - lib/ruby-handlebars/template.rb
125
+ - lib/ruby-handlebars/transform.rb
161
126
  - lib/ruby-handlebars/tree.rb
162
127
  - lib/ruby-handlebars/version.rb
163
128
  - spec/handlebars_spec.rb
@@ -176,8 +141,8 @@ homepage: https://github.com/mvz/ruby-handlebars
176
141
  licenses:
177
142
  - MIT
178
143
  metadata:
144
+ homepage_uri: https://github.com/mvz/ruby-handlebars
179
145
  rubygems_mfa_required: 'true'
180
- post_install_message:
181
146
  rdoc_options: []
182
147
  require_paths:
183
148
  - lib
@@ -185,15 +150,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
185
150
  requirements:
186
151
  - - ">="
187
152
  - !ruby/object:Gem::Version
188
- version: 3.0.0
153
+ version: 3.2.0
189
154
  required_rubygems_version: !ruby/object:Gem::Requirement
190
155
  requirements:
191
156
  - - ">="
192
157
  - !ruby/object:Gem::Version
193
158
  version: '0'
194
159
  requirements: []
195
- rubygems_version: 3.5.10
196
- signing_key:
160
+ rubygems_version: 3.7.2
197
161
  specification_version: 4
198
162
  summary: Pure Ruby library for Handlebars templates
199
163
  test_files: []