In: |
lib/amrita/merge.rb
lib/amrita/compiler.rb |
Parent: | Object |
# File lib/amrita/merge.rb, line 9 def initialize(dir=nil, &block) @dir = dir if block_given? @body = yield else @body = nil end end
# File lib/amrita/merge.rb, line 22 def amrita_expand_element(e, context) case e.hid when /(.*)#(.*)/ fname, data_id = $1, $2 e = merge_templates(fname, data_id, e, context) else e.init_body do e.body.expand1(self, context) end end if @body e.expand(@body, context) else e end end
# File lib/amrita/merge.rb, line 18 def amrita_get_data(key, element, context) amrita_expand_element(element, context) end
# File lib/amrita/merge.rb, line 40 def merge_templates(fname, data_id, e, context) h = read_template(fname) ee = h.find {|e| e[:id] == data_id } raise "no match for #{data_id}" unless ee ee.delete_attr!(:id) ee end