12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# 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
|