def to_xml_lines
lines = []
children = self.select{ |child| child.has_content? }
if children.empty?
if result.is_a? String
lines << "<#{name}>#{result}</#{name}>"
elsif write_text && !to_s.empty?
lines << "<#{name}>#{ERB::Util.html_escape(to_s)}</#{name}>"
else
if @options[:default]
lines << "<#{name}>#{@options[:default]}</#{name}>"
else
lines << "<#{name}/>"
end
end
else
lines << "<#{name}>"
lines << " #{ERB::Util.html_escape(to_s)}" if write_text && !to_s.empty?
children.each do |child|
lines.push(*child.to_xml_lines.map{ |line| " #{line}" })
end
lines << "</#{name}>"
end
end