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.



722
723
724
725
726
# File 'lib/gem_hadar.rb', line 722

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



737
738
739
740
741
742
743
744
745
# File 'lib/gem_hadar.rb', line 737

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



728
729
730
731
732
733
734
735
# File 'lib/gem_hadar.rb', line 728

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