>
result << x.gsub(/<[^>]*>+/, "")
end
end
elsif node.respond_to?(:text)
result << node.text.gsub(/<[^>]*>+/, "")
else
result << node.content.gsub(/<[^>]*>+/, "")
end
result.reject(&:empty?)
end
end
def convert(node, transform = nil, opts = {})
transform ||= node.node_name
opts.empty? ? (send transform, node) : (send transform, node, opts)
end
def document_ns_attributes(_doc)
nil
end
NOKOHEAD = <<~HERE
HERE
# block for processing XML document fragments as XHTML,
# to allow for HTMLentities
def noko(&block)
doc = ::Nokogiri::XML.parse(NOKOHEAD)
fragment = doc.fragment("")
::Nokogiri::XML::Builder.with fragment, &block
fragment.to_xml(encoding: "US-ASCII").lines.map do |l|
l.gsub(/\s*\n/, "")
end
end
def attr_code(attributes)
attributes = attributes.reject { |_, val| val.nil? }.map
attributes.map do |k, v|
[k, (v.is_a? String) ? HTMLEntities.new.decode(v) : v]
end.to_h
end
# if the contents of node are blocks, output them to out;
# else, wrap them in
def wrap_in_para(node, out)
if node.blocks? then out << node.content
else
out.p { |p| p << node.content }
end
end
end
end
end