class Sablon::Parser::MailMerge
Public Instance Methods
parse_fields(xml)
click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 132 def parse_fields(xml) fields = [] xml.traverse do |node| if node.name == "fldSimple" field = SimpleField.new(node) elsif node.name == "fldChar" && node["w:fldCharType"] == "begin" field = build_complex_field(node) end fields << field if field && field.valid? end fields end
Private Instance Methods
build_complex_field(node)
click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 147 def build_complex_field(node) possible_field_node = node.parent field_nodes = [possible_field_node] while possible_field_node && possible_field_node.search(".//w:fldChar[@w:fldCharType='end']").empty? possible_field_node = possible_field_node.next_element field_nodes << possible_field_node end # skip instantiation if no end tag ComplexField.new(field_nodes) if field_nodes.last end