Module: PList

Defined in:
lib/rake/cocoa.rb

Overview

Helper module for generating plists.

Constant Summary collapse

TAB =
"    "

Class Method Summary collapse

Class Method Details

.generate(info) ⇒ Object



420
421
422
423
424
425
426
427
# File 'lib/rake/cocoa.rb', line 420

def self.generate(info)
  plist = '<?xml version="1.0" encoding="UTF-8"?>' + "\n"
  plist += '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' + "\n"
  plist += '<plist version="1.0">' + "\n"
  plist += value(info)
  plist += "</plist>\n"
  plist
end

.value(object, indent = "") ⇒ Object



403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
# File 'lib/rake/cocoa.rb', line 403

def self.value(object, indent="")
  if object.class == Hash
    result = "#{indent}<dict>\n"
    object.keys.sort_by{|k| k.to_s}.each {|key|
      result += "#{indent}#{TAB}<key>#{key}</key>\n"
      result += value(object[key], indent+TAB)
    }
    result += "#{indent}</dict>\n"
  elsif object.class == Array
    result = "#{indent}<array>\n"
    result += object.map {|item| value(item, indent+TAB)}.join("")
    result += "#{indent}</array>\n"
  else
    result = "#{indent}<string>#{object}</string>\n"
  end
  result
end