lib/pieces/tilt/mustache.rb
module Pieces
module Tilt
class MustacheTemplate < ::Tilt::Template
def initialize_engine; end
def prepare; end
def evaluate(scope, locals, &block)
require 'mustache'
Mustache.render(data, with_block(view_model(scope, locals), &block))
end
private
def view_model(scope, locals)
if scope.is_a?(Hash)
locals.merge(scope)
elsif scope.respond_to?(:to_h)
locals.merge(scope.to_h)
else
locals
end
end
def with_block(view_model, &block)
view_model.merge(:yield => block.nil? ? '' : block.call)
end
end
end
end