Sha256: 6c5228450e24f49d12545f9b2eada9f6f2ec80ae61291168af5d7b99ddea986c

Contents?: true

Size: 690 Bytes

Versions: 6

Compression:

Stored size: 690 Bytes

Contents

require 'erb'

module Elzar
  module Template
    class << self; attr_accessor :source_directory; end
    self.source_directory = File.dirname(__FILE__) + '/templates'

    def self.generate(file, dest, ivars={})
      str = generate_string(file, ivars)
      File.open("#{dest}/#{file}", 'w+') {|f| f.write str }
    end

    def self.generate_string(file, ivars={})
      file = source_directory + "/#{file}.erb"
      ERB.new(File.read(file)).result(create_template_binding(ivars))
    end

    def self.create_template_binding(ivars)
      obj = Object.new
      ivars.each {|name, val| obj.instance_variable_set("@#{name}", val) }
      obj.instance_eval { binding }
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
elzar-0.2.0 lib/elzar/template.rb
elzar-0.1.2 lib/elzar/template.rb
elzar-0.1.1 lib/elzar/template.rb
elzar-0.1.0 lib/elzar/template.rb
elzar-0.0.2 lib/elzar/template.rb
elzar-0.0.1 lib/elzar/template.rb