Class: GemHadar::TemplateCompiler

Inherits:
Object
  • Object
show all
Includes:
Tins::BlockSelf, Tins::MethodMissingDelegator::DelegatorModule
Defined in:
lib/gem_hadar.rb

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ TemplateCompiler

Returns a new instance of TemplateCompiler.



798
799
800
801
802
# File 'lib/gem_hadar.rb', line 798

def initialize(&block)
  super block_self(&block)
  @values = {}
  instance_eval(&block)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(id, *a, &b) ⇒ Object



813
814
815
816
817
818
819
820
821
# File 'lib/gem_hadar.rb', line 813

def method_missing(id, *a, &b)
  if a.empty? && id && @values.key?(id)
    @values[id]
  elsif a.size == 1
    @values[id] = a.first
  else
    super
  end
end

Instance Method Details

#compile(src, dst) ⇒ Object



804
805
806
807
808
809
810
811
# File 'lib/gem_hadar.rb', line 804

def compile(src, dst)
  template = File.read(src)
  File.open(dst, 'w') do |output|
    erb = ERB.new(template, nil, '-')
    erb.filename = src.to_s
    output.write erb.result binding
  end
end