Sha256: 99b2fbe419a257c394dc1a66bf26fc33724e9bb19d409458e6636590769184d0

Contents?: true

Size: 712 Bytes

Versions: 2

Compression:

Stored size: 712 Bytes

Contents

require 'erb'

class Railroader::Report
  class Renderer
    def initialize(template_file, hash = {})
      hash[:locals] ||= {}
      singleton = class << self; self end

      hash[:locals].each do |attribute_name, attribute_value|
        singleton.send(:define_method, attribute_name) { attribute_value }
      end

      # There are last, so as to make overwriting these using locals impossible.
      singleton.send(:define_method, 'template_file') { template_file }
      singleton.send(:define_method, 'template') {
        File.read(File.expand_path("templates/#{template_file}.html.erb", File.dirname(__FILE__)))
      }
    end

    def render
      ERB.new(template).result(binding)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
railroader-4.3.5 lib/railroader/report/renderer.rb
railroader-4.3.4 lib/railroader/report/renderer.rb