diff --git a/CHANGELOG.md b/CHANGELOG.md index cb30bc0..f97b2b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ ruby-handlebars changelog [Unreleased] ------------ +[0.4.2] (2025/04/05) +-------------------- + +- Accept {} (empty curly) as a non-expression. Due to the problem with 'NREUM={}' [0.4.1] (2022/06/01) -------------------- diff --git a/lib/ruby-handlebars/helpers/eq_helper.rb b/lib/ruby-handlebars/helpers/eq_helper.rb new file mode 100644 index 0000000..d82eb62 --- /dev/null +++ b/lib/ruby-handlebars/helpers/eq_helper.rb @@ -0,0 +1,24 @@ +require_relative 'default_helper' + +module Handlebars + module Helpers + class EqHelper < DefaultHelper + def self.registry_name + 'eq' + end + + def self.apply(context, item1, item2, block = nil, else_block = nil) + if item1 == item2 + block.fn(context) + elsif else_block + else_block.fn(context) + else + "" + end + rescue Exception => err + '' + end + + end + end +end diff --git a/lib/ruby-handlebars/helpers/register_default_helpers.rb b/lib/ruby-handlebars/helpers/register_default_helpers.rb index 3924806..2f1681f 100644 --- a/lib/ruby-handlebars/helpers/register_default_helpers.rb +++ b/lib/ruby-handlebars/helpers/register_default_helpers.rb @@ -3,6 +3,7 @@ require_relative 'if_helper' require_relative 'unless_helper' require_relative 'with_helper' +require_relative 'eq_helper' module Handlebars module Helpers @@ -12,6 +13,7 @@ def self.register_default_helpers(hbs) IfHelper.register(hbs) UnlessHelper.register(hbs) WithHelper.register(hbs) + EqHelper.register(hbs) end end end diff --git a/lib/ruby-handlebars/parser.rb b/lib/ruby-handlebars/parser.rb index ca21386..f768ead 100644 --- a/lib/ruby-handlebars/parser.rb +++ b/lib/ruby-handlebars/parser.rb @@ -26,7 +26,8 @@ class Parser < Parslet::Parser rule(:directory) { (else_kw >> space? >> dccurly).absent? >> match['@\-a-zA-Z0-9_\/\?'].repeat(1) } rule(:path) { identifier >> (dot >> (identifier | else_kw)).repeat } - rule(:nocurly) { match('[^{}]') } + # Take into account empty curly braces as a valid sequence of non-curlies + rule(:nocurly) { match('[^{}]|\{\s*\}') } rule(:eof) { any.absent? } rule(:template_content) { ( diff --git a/ruby-handlebars.gemspec b/ruby-handlebars.gemspec index c3001a8..fa0db5a 100644 --- a/ruby-handlebars.gemspec +++ b/ruby-handlebars.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.name = "ruby-handlebars".freeze - s.version = "0.4.1" + s.version = "0.4.2" s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.require_paths = ["lib".freeze] @@ -59,4 +59,3 @@ Gem::Specification.new do |s| s.add_dependency(%q.freeze, ["~> 2.4"]) end end -