lib/wright/util/mustache_renderer.rb
begin
require 'mustache'
rescue LoadError # rubocop:disable Lint/HandleExceptions
end
require 'wright/util/pencil_mustache'
module Wright
module Util
# Mustache renderer.
#
# @example
# template = "foo is {{foo}}."
# hash = { foo: :bar }
# Wright::Util::MustacheRenderer.new(hash).render(template)
# # => "foo is bar."
class MustacheRenderer
def initialize(hash)
@hash = hash
@mustache = select_mustache
end
# Renders a Mustache template.
# @param template [String] the template
# @return [String] the rendered template
def render(template)
@mustache.render(template, @hash)
end
private
def select_mustache
return PencilMustache.new unless defined?(Mustache)
mustache = Mustache.new
mustache.raise_on_context_miss = true
mustache
end
end
end
end