summaryrefslogtreecommitdiff
path: root/lib/plist/generator.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plist/generator.rb')
-rw-r--r--lib/plist/generator.rb34
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