Sha256: b74f01f7e79aac3b3d8d6b1e2ceafaae1bcbdcdbd690f488e4e06438f14c362e
Contents?: true
Size: 1.18 KB
Versions: 2
Compression:
Stored size: 1.18 KB
Contents
require 'nokogiri' class AhcxTemplateHandler def self.call(template) erb = ActionView::Template.registered_template_handler(:erb) source = erb.call(template) source + ";AhcxTemplateHandler.render(@output_buffer.to_s)" end def self.node_content(node) tag = node.name params = {} node.attributes.values.each do |node_attribute| params[node_attribute.name] = node_attribute.value end node.children.each do |child_node| child_node_tag, child_node_attr = child_node.name.split(':') raw = child_node.attributes['raw'] if raw || (child_node.children.length == 1 && child_node.children.first.name == 'text') params[child_node_attr] = child_node.children.to_s else attr_value = '' child_node.children.each do |inside_node| attr_value += node_content(inside_node) end params[child_node_attr] = attr_value end end Ahc.render(tag, params) end def self.render(xml) ahcx_source = "<document>#{xml}</document>" ahcx = Nokogiri.parse(ahcx_source) content = '' ahcx.children.first.children.each do |node| content += node_content(node) end content end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ahc-0.2.2 | lib/ahcx_template_handler.rb |
ahc-0.2.1 | lib/ahcx_template_handler.rb |