So let's say I have a builder template like the following:
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
xml.environment do |environment|
environment.title title
environment.feed feed
environment.status status
environment.description description
# many many more
end
end
builder.to_xml
If feed
and description
were nil
, it could output:
<?xml version="1.0" encoding="UTF-8"?>
<environment>
<title>title</title>
<feed/>
<status>status</status>
<description/>
</environment>
I'd rather it ignored the nils altogether. What's the best way of achieving this?
Desired output:
<?xml version="1.0" encoding="UTF-8"?>
<environment>
<title>title</title>
<status>status</status>
</environment>
Current solution:
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
xml.environment do |environment|
environment.title title if title
environment.feed feed if feed
environment.status status if status
environment.description description if description
# many many more
end
end
builder.to_xml
Is there a cleaner way?
Would this be a useful option on Builder#initialize?
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8', :empty_nodes => false)