Module: Plist4r::Backend::Haml

Defined in:
lib/plist4r/backend/haml.rb

Class Methods

Overview

This backend uses haml to generate xml plists

Author:

Class Method Details

+ (Object) to_xml(plist)



74
75
76
77
78
# File 'lib/plist4r/backend/haml.rb', line 74

def to_xml plist
  @plist = plist
  engine = Haml::Engine.new to_xml_haml
  rendered_xml_output = engine.render self
end

+ (Object) to_xml_haml



12
13
14
# File 'lib/plist4r/backend/haml.rb', line 12

def to_xml_haml
  @to_xml_haml ||= "!!! XML UTF-8\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"\n\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\" >\n%plist{ :version => '1.0' }\n%dict\n- p = Proc.new do |data, block|\n- data.each_pair do |k,v|\n- raise \"Invalid input. Hash: \#{data.inspect} can only contain keys of type Symbol or String. Found key \#{k.inspect}, of type: \\\"\#{k.class}\\\"\" unless [Symbol,String].include? k.class\n- case v\n- when TrueClass, FalseClass\n%key \#{k}\n<\#{v}/>\n- when String\n%key \#{k}\n- if v.blob?\n- data = Base64::encode64(v)\n%data \#{data}\n- else\n%string \#{v}\n- when Integer\n%key \#{k}\n%integer \#{v}\n- when Float\n%key \#{k}\n%real \#{v}\n- when Time\n%key \#{k}\n%date \#{v.utc.strftime('%Y-%m-%dT%H:%M:%SZ')}\n- when Array\n%key \#{k}\n%array\n- v.compact.each do |e|\n- case e\n- when TrueClass, FalseClass\n<\#{e}/>\n- when String\n- if e.blob?\n- data = Base64::encode64(e)\n%data \#{data}\n- else\n%string \#{e}\n- when Integer\n%integer \#{e}\n- when Float\n%real \#{e}\n- when Time\n%date \#{e.utc.strftime('%Y-%m-%dT%H:%M:%SZ')}\n- when Hash\n%dict\n- tab_up ; block.call(e, block) ; tab_down\n- when Hash\n%key \#{k}\n%dict\n- tab_up ; block.call(v, block) ; tab_down\n\n- p.call( @plist.to_hash, p)\n"
end