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.



751
752
753
754
755
# File 'lib/gem_hadar.rb', line 751

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



766
767
768
769
770
771
772
773
774
# File 'lib/gem_hadar.rb', line 766

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



757
758
759
760
761
762
763
764
# File 'lib/gem_hadar.rb', line 757

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