diff options
Diffstat (limited to 'lib/plist/generator.rb')
-rw-r--r-- | lib/plist/generator.rb | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/lib/plist/generator.rb b/lib/plist/generator.rb index 8036575..223edcc 100644 --- a/lib/plist/generator.rb +++ b/lib/plist/generator.rb @@ -64,21 +64,29 @@ module Plist else case element when Array - output << tag('array') { - element.collect {|e| plist_node(e)} - } + if element.empty? + output << "<array/>\n" + else + output << tag('array') { + element.collect {|e| plist_node(e)} + } + end when Hash - inner_tags = [] - - element.keys.sort.each do |k| - v = element[k] - inner_tags << tag('key', CGI::escapeHTML(k.to_s)) - inner_tags << plist_node(v) + if element.empty? + output << "<dict/>\n" + else + inner_tags = [] + + element.keys.sort.each do |k| + v = element[k] + inner_tags << tag('key', CGI::escapeHTML(k.to_s)) + inner_tags << plist_node(v) + end + + output << tag('dict') { + inner_tags + } end - - output << tag('dict') { - inner_tags - } when true, false output << "<#{element}/>\n" when Time |