sometimesfood/wright

View on GitHub
lib/wright/util/erb_renderer.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'erb'

module Wright
  module Util
    # ERB renderer.
    #
    # @example
    #   template = "foo is <%= foo %>."
    #   hash = { foo: :bar }
    #   Wright::Util::ErbRenderer.new(hash).render(template)
    #   # => "foo is bar."
    class ErbRenderer
      def initialize(hash)
        hash.each do |k, v|
          instance_var = "@#{k}"
          instance_variable_set(instance_var, v)
          define_singleton_method(k) { instance_variable_get(instance_var) }
        end
      end

      # Renders an ERB template.
      # @param template [String] the template
      # @return [String] the rendered template
      def render(template)
        ERB.new(template).result(binding)
      end
    end
  end
end