Skip to content

Commit c4174a5

Browse files
authored
register_helper: accept multiple helpers as keyword parameters (#6)
1 parent adf2186 commit c4174a5

2 files changed

Lines changed: 28 additions & 5 deletions

File tree

lib/handlebars/engine.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,12 @@ def template(*args)
6868
# @yieldparam arguments [Object] the arguments (optional)
6969
# @yieldparam options [Hash] the options hash (optional)
7070
# @see https://handlebarsjs.com/api-reference/runtime.html#handlebars-registerhelper-name-helper
71-
def register_helper(name, &block)
72-
attach(name, &block)
73-
call(:registerHelper, [name.to_s, name.to_sym], eval: true)
71+
def register_helper(name = nil, **helpers, &block)
72+
helpers[name] = block if name
73+
helpers.each do |n, f|
74+
attach(n, &f)
75+
call(:registerHelper, [n.to_s, n.to_sym], eval: true)
76+
end
7477
end
7578

7679
# Unregisters a previously registered helper.

spec/handlebars/engine_spec.rb

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@
146146

147147
describe "#register_helper" do
148148
let(:name) { :helper }
149-
let(:function) { ->(ctx, *args, opts) {} }
149+
let(:function) { ->(_ctx, *_args, _opts) { rendered } }
150150
let(:template) { "{{#{name} name name=name}}" }
151151

152152
before do
@@ -158,7 +158,27 @@
158158
expect(engine).to respond_to(:register_helper)
159159
end
160160

161-
describe "rendering" do
161+
context "with positional parameters" do
162+
before do
163+
engine.register_helper(name, &function)
164+
end
165+
166+
describe "rendering" do
167+
include_examples "rendering"
168+
end
169+
end
170+
171+
context "with keyword parameters" do
172+
before do
173+
engine.register_helper(name => function)
174+
end
175+
176+
describe "rendering" do
177+
include_examples "rendering"
178+
end
179+
end
180+
181+
describe "parameters" do
162182
describe "the first parameter" do
163183
it "is the context" do
164184
render_context.transform_keys!(&:to_s)

0 commit comments

Comments
 (0)