plist4r 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -0
- data/Rakefile +13 -2
- data/VERSION +1 -1
- data/ext/osx_plist/extconf.rb +1 -1
- data/lib/plist4r.rb +5 -0
- data/lib/plist4r/backend/c_f_property_list/rbCFPropertyList.rb +1 -0
- data/lib/plist4r/backend/haml.rb +1 -6
- data/lib/plist4r/backend/libxml4r.rb +1 -1
- data/lib/plist4r/backend/ruby_cocoa.rb +45 -9
- data/lib/plist4r/backend/test/data_types.rb +2 -1
- data/lib/plist4r/backend/test/harness.rb +18 -25
- data/lib/plist4r/backend/test/output.rb +12 -1
- data/lib/plist4r/docs/Backends.html +15 -15
- data/lib/plist4r/docs/DeveloperGuide.rdoc +1 -1
- data/lib/plist4r/mixin/ordered_hash.rb +148 -142
- data/lib/plist4r/mixin/ruby_stdlib.rb +24 -1
- data/lib/plist4r/plist.rb +12 -6
- data/plist4r.gemspec +2 -4
- metadata +3 -5
- data/ext/osx_plist/Makefile +0 -157
- data/ext/osx_plist/plist.o +0 -0
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -51,13 +51,24 @@ end
|
|
51
51
|
|
52
52
|
task :default => :spec
|
53
53
|
|
54
|
-
namespace :
|
55
|
-
task :
|
54
|
+
namespace :backends do
|
55
|
+
task :compile do
|
56
|
+
if File.exists? "/System/Library/Frameworks/CoreFoundation.framework"
|
57
|
+
r = %x[rm ext/osx_plist/osx_plist.bundle lib/plist4r/backend/osx_plist/ext/osx_plist.bundle]
|
58
|
+
puts r if r.length > 0
|
59
|
+
puts %x[cd ext/osx_plist && ./extconf.rb && make clean && make]
|
60
|
+
r = %x[cp ext/osx_plist/osx_plist.bundle lib/plist4r/backend/osx_plist/ext/osx_plist.bundle]
|
61
|
+
puts r if r.length > 0
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
task :test => :compile do
|
56
66
|
require 'lib/plist4r'
|
57
67
|
require 'plist4r/backend/test/output'
|
58
68
|
o = Plist4r::Backend::Test::Output.new
|
59
69
|
puts o
|
60
70
|
o.write_html_file
|
71
|
+
o.results_stdout
|
61
72
|
end
|
62
73
|
end
|
63
74
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0
|
1
|
+
1.1.0
|
data/ext/osx_plist/extconf.rb
CHANGED
data/lib/plist4r.rb
CHANGED
@@ -42,6 +42,11 @@ module Plist4r
|
|
42
42
|
# @example
|
43
43
|
# Plist4r.string_detect_format("{ \"key1\" = \"value1\"; \"key2\" = \"value2\"; }") => :gnustep
|
44
44
|
def string_detect_format string
|
45
|
+
if RUBY_VERSION >= '1.9'
|
46
|
+
string = string.force_encoding(Encoding::ASCII_8BIT)
|
47
|
+
end
|
48
|
+
|
49
|
+
|
45
50
|
string.strip! if string[0,1] =~ /\s/
|
46
51
|
case string[0,1]
|
47
52
|
when "{","("
|
data/lib/plist4r/backend/haml.rb
CHANGED
@@ -3,7 +3,7 @@ require 'plist4r/backend_base'
|
|
3
3
|
require 'plist4r/mixin/ruby_stdlib'
|
4
4
|
require 'haml'
|
5
5
|
require 'base64'
|
6
|
-
require '
|
6
|
+
require 'time'
|
7
7
|
|
8
8
|
# This backend uses haml to generate xml plists
|
9
9
|
# @author Dreamcat4 (dreamcat4@gmail.com)
|
@@ -39,9 +39,6 @@ module Plist4r::Backend::Haml
|
|
39
39
|
- when Time
|
40
40
|
%key #{k}
|
41
41
|
%date #{v.utc.strftime('%Y-%m-%dT%H:%M:%SZ')}
|
42
|
-
- when Date
|
43
|
-
%key #{k}
|
44
|
-
%date #{v.strftime('%Y-%m-%dT%H:%M:%SZ')}
|
45
42
|
- when Array
|
46
43
|
%key #{k}
|
47
44
|
%array
|
@@ -61,8 +58,6 @@ module Plist4r::Backend::Haml
|
|
61
58
|
%real #{e}
|
62
59
|
- when Time
|
63
60
|
%date #{e.utc.strftime('%Y-%m-%dT%H:%M:%SZ')}
|
64
|
-
- when Date
|
65
|
-
%date #{e.strftime('%Y-%m-%dT%H:%M:%SZ')}
|
66
61
|
- when Hash
|
67
62
|
%dict
|
68
63
|
- tab_up ; block.call(e, block) ; tab_down
|
@@ -1,8 +1,10 @@
|
|
1
1
|
|
2
2
|
require 'plist4r/backend_base'
|
3
3
|
require 'plist4r/mixin/ruby_stdlib'
|
4
|
+
require 'time'
|
4
5
|
|
5
6
|
module Plist4r
|
7
|
+
# @private
|
6
8
|
class StringIOData
|
7
9
|
attr_accessor :string
|
8
10
|
def initialize string
|
@@ -26,6 +28,7 @@ module Plist4r
|
|
26
28
|
end
|
27
29
|
|
28
30
|
class String
|
31
|
+
# @private
|
29
32
|
def _dump arg
|
30
33
|
if self.blob?
|
31
34
|
string_io_data = Plist4r::StringIOData.new(self)
|
@@ -35,6 +38,7 @@ class String
|
|
35
38
|
end
|
36
39
|
end
|
37
40
|
|
41
|
+
# @private
|
38
42
|
def self._load string
|
39
43
|
String.new string
|
40
44
|
end
|
@@ -64,7 +68,7 @@ dir = ARGV[0]
|
|
64
68
|
$LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
|
65
69
|
|
66
70
|
require 'osx/cocoa'
|
67
|
-
require '
|
71
|
+
require 'time'
|
68
72
|
require 'plist4r/mixin/ordered_hash'
|
69
73
|
require 'plist4r/mixin/ruby_stdlib'
|
70
74
|
|
@@ -138,7 +142,7 @@ class OSX::NSObject
|
|
138
142
|
when OSX::NSArray
|
139
143
|
self.to_a.map { |x| x.is_a?(OSX::NSObject) ? x.to_ruby : x }
|
140
144
|
when OSX::NSDictionary
|
141
|
-
h =
|
145
|
+
h = Plist4r::ActiveSupport::OrderedHash.new
|
142
146
|
self.each do |x, y|
|
143
147
|
x = x.to_ruby if x.is_a?(OSX::NSObject)
|
144
148
|
y = y.to_ruby if y.is_a?(OSX::NSObject)
|
@@ -162,6 +166,7 @@ module Plist
|
|
162
166
|
# to_plist defaults to NSPropertyListXMLFormat_v1_0
|
163
167
|
hash = Marshal.load(File.read(input_file))
|
164
168
|
x = hash.to_plist
|
169
|
+
# x = hash.inspect
|
165
170
|
write_result_file x
|
166
171
|
end
|
167
172
|
|
@@ -169,6 +174,7 @@ module Plist
|
|
169
174
|
# Here 200 == NSPropertyListBinaryFormat_v1_0
|
170
175
|
hash = Marshal.load(File.read(input_file))
|
171
176
|
x = hash.to_plist 200
|
177
|
+
# x = hash.inspect
|
172
178
|
write_result_file x
|
173
179
|
end
|
174
180
|
|
@@ -177,7 +183,7 @@ module Plist
|
|
177
183
|
unless plist_dict
|
178
184
|
plist_array = ::OSX::NSArray.arrayWithContentsOfFile(filename) unless plist_dict
|
179
185
|
raise "Couldnt parse file: #{filename}" unless plist_array
|
180
|
-
plist_dict =
|
186
|
+
plist_dict = Plist4r::ActiveSupport::OrderedHash.new
|
181
187
|
plist_dict["Array"] = plist_array.to_ruby
|
182
188
|
end
|
183
189
|
|
@@ -253,13 +259,36 @@ EOC
|
|
253
259
|
File.read @result_file.path
|
254
260
|
end
|
255
261
|
|
262
|
+
def convert_19_to_hash hash, key=nil
|
263
|
+
h = Hash.new
|
264
|
+
h.replace hash
|
265
|
+
|
266
|
+
hash.each do |key,value|
|
267
|
+
if value.class.ancestors.include? Hash
|
268
|
+
unless value.class == Hash
|
269
|
+
h[key] = convert_19_to_hash(value)
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end
|
273
|
+
h
|
274
|
+
end
|
275
|
+
|
256
276
|
def to_xml plist
|
257
277
|
require 'tempfile'
|
258
278
|
input_file = Tempfile.new "input_file.rb."
|
259
|
-
|
279
|
+
|
280
|
+
oh = nil
|
281
|
+
if RUBY_VERSION >= '1.9'
|
282
|
+
old_style_hash = convert_19_to_hash(plist.to_hash)
|
283
|
+
input_file.puts Marshal.dump(old_style_hash)
|
284
|
+
else
|
285
|
+
input_file.puts Marshal.dump(plist.to_hash)
|
286
|
+
end
|
287
|
+
|
260
288
|
input_file.close
|
261
289
|
result = ruby_cocoa_exec "to_xml(\"#{input_file.path}\")"
|
262
|
-
|
290
|
+
# print read_result_file
|
291
|
+
|
263
292
|
case result[1].exitstatus
|
264
293
|
when 0
|
265
294
|
xml_string = read_result_file
|
@@ -273,9 +302,17 @@ EOC
|
|
273
302
|
def to_binary plist
|
274
303
|
require 'tempfile'
|
275
304
|
input_file = Tempfile.new "input_file.rb."
|
276
|
-
|
305
|
+
|
306
|
+
if RUBY_VERSION >= '1.9'
|
307
|
+
old_style_hash = convert_19_to_hash(plist.to_hash)
|
308
|
+
input_file.puts Marshal.dump(old_style_hash)
|
309
|
+
else
|
310
|
+
input_file.puts Marshal.dump(plist.to_hash)
|
311
|
+
end
|
312
|
+
|
277
313
|
input_file.close
|
278
314
|
result = ruby_cocoa_exec "to_binary(\"#{input_file.path}\")"
|
315
|
+
# print read_result_file
|
279
316
|
|
280
317
|
case result[1].exitstatus
|
281
318
|
when 0
|
@@ -288,12 +325,11 @@ EOC
|
|
288
325
|
end
|
289
326
|
|
290
327
|
def open_with_args plist, filename
|
291
|
-
require 'date'
|
292
|
-
|
293
328
|
result = ruby_cocoa_exec "open(\"#{filename}\")"
|
294
329
|
case result[1].exitstatus
|
295
330
|
when 0
|
296
|
-
hash =
|
331
|
+
hash = Plist4r::OrderedHash.new
|
332
|
+
|
297
333
|
hash.replace Marshal.load(read_result_file)
|
298
334
|
plist.import_hash hash
|
299
335
|
else
|
@@ -54,7 +54,7 @@ module Plist4r
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def gen_time
|
57
|
-
require '
|
57
|
+
require 'time'
|
58
58
|
(0..25).each do |i|
|
59
59
|
@plist.store "DateKey#{(65+i).chr}", Time.parse("2010-04-#{sprintf("%.2i",i+1)}T19:50:01Z")
|
60
60
|
end
|
@@ -85,6 +85,7 @@ module Plist4r
|
|
85
85
|
def gen_hash
|
86
86
|
(0..25).each do |i|
|
87
87
|
h = Plist4r::OrderedHash.new
|
88
|
+
# (0..0).each do |j|
|
88
89
|
(0..i).each do |j|
|
89
90
|
h["String#{(65+j).chr}"] = "#{(97+j).chr}"*(j+1)
|
90
91
|
end
|
@@ -27,8 +27,8 @@ module Plist4r
|
|
27
27
|
:to_binary => :c_f_property_list,
|
28
28
|
# :from_binary => :ruby_cocoa,
|
29
29
|
# :to_binary => :ruby_cocoa,
|
30
|
-
:from_binary => :osx_plist,
|
31
|
-
:to_binary => :osx_plist,
|
30
|
+
# :from_binary => :osx_plist,
|
31
|
+
# :to_binary => :osx_plist,
|
32
32
|
}
|
33
33
|
|
34
34
|
def reference_backend_for meth
|
@@ -103,23 +103,19 @@ module Plist4r
|
|
103
103
|
begin
|
104
104
|
plist_result = Plist4r.new :backends => [b_sym], :from_string => string
|
105
105
|
if @data_types.plists[sym].to_hash == plist_result.to_hash
|
106
|
-
puts "match, #{b_sym}, #{sym}"
|
106
|
+
puts "match, #{b_sym}, #{sym}"
|
107
107
|
# puts @data_types.plists[sym].hash.inspect
|
108
|
-
# puts plist_result.hash.inspect
|
109
108
|
# puts @data_types.plists[sym].to_hash["DataKeyW"].hash.inspect
|
110
109
|
# puts plist_result.to_hash["DataKeyW"].hash.inspect
|
111
110
|
else
|
112
|
-
puts "fail, #{b_sym}, #{sym}"
|
111
|
+
puts "fail, #{b_sym}, #{sym}"
|
112
|
+
failures << sym
|
113
113
|
|
114
|
-
if
|
114
|
+
if true
|
115
115
|
puts "expected:"
|
116
116
|
puts @data_types.plists[sym].hash.inspect
|
117
117
|
puts @data_types.plists[sym].to_hash.inspect
|
118
|
-
# puts @data_types.plists[sym].to_hash["DataKeyW"].read.inspect
|
119
|
-
# @data_types.plists[sym].to_hash["DataKeyW"].rewind
|
120
|
-
# puts @data_types.plists[sym].to_hash["DataKeyW"].read.inspect
|
121
118
|
puts "got:"
|
122
|
-
puts plist_result.hash.inspect
|
123
119
|
puts plist_result.to_hash.inspect
|
124
120
|
# puts plist_result.to_xml if b_sym == "ruby_cocoa"
|
125
121
|
end
|
@@ -163,10 +159,10 @@ module Plist4r
|
|
163
159
|
:backends => [reference_backend_for("from_#{fmt}".to_sym)]
|
164
160
|
|
165
161
|
if plist_gen_from.to_hash == plist.to_hash
|
166
|
-
puts "match, #{b_sym}, #{sym}"
|
162
|
+
puts "match, #{b_sym}, #{sym}"
|
167
163
|
# puts plist.hash.inspect
|
168
164
|
# puts plist_gen_from.hash.inspect
|
169
|
-
if sym == :data
|
165
|
+
# if sym == :data
|
170
166
|
if b_sym == "ruby_cocoa"
|
171
167
|
# plist_gen_from.to_hash.keys.each do |key|
|
172
168
|
# puts "point a"
|
@@ -182,21 +178,26 @@ module Plist4r
|
|
182
178
|
# puts "expected:"
|
183
179
|
# puts plist.to_hash.inspect
|
184
180
|
# puts "got:"
|
181
|
+
# puts plist.send("to_#{fmt}")
|
185
182
|
# puts plist_gen_from.to_hash.inspect
|
186
183
|
end
|
187
|
-
end
|
184
|
+
# end
|
188
185
|
else
|
189
|
-
puts "fail, #{b_sym}, #{sym}"
|
190
|
-
|
186
|
+
puts "fail, #{b_sym}, #{sym}"
|
187
|
+
failures << sym
|
188
|
+
if true
|
191
189
|
puts "expected:"
|
192
190
|
puts plist.to_hash.inspect
|
193
191
|
puts "got:"
|
194
192
|
puts plist_gen_from.to_hash.inspect
|
193
|
+
puts "got:"
|
194
|
+
puts plist.send("to_#{fmt}")
|
195
195
|
end
|
196
196
|
end
|
197
197
|
rescue
|
198
198
|
puts "fail, #{b_sym}, #{sym} - exception"
|
199
|
-
|
199
|
+
# puts $!.inspect if b_sym == :ruby_cocoa
|
200
|
+
raise
|
200
201
|
begin
|
201
202
|
# what went wrong?
|
202
203
|
if fmt == :binary
|
@@ -211,6 +212,7 @@ module Plist4r
|
|
211
212
|
end
|
212
213
|
rescue
|
213
214
|
end
|
215
|
+
# raise if b_sym == :ruby_cocoa
|
214
216
|
failures << sym
|
215
217
|
end
|
216
218
|
end
|
@@ -237,18 +239,9 @@ module Plist4r
|
|
237
239
|
cgi += 2
|
238
240
|
end
|
239
241
|
puts ""
|
240
|
-
puts "REFERENCE BACKENDS"
|
241
|
-
puts "=================="
|
242
|
-
ReferenceBackends.each do |sym,b_sym|
|
243
|
-
puts "#{sym.inspect} generated by #{b_sym.inspect}"
|
244
|
-
end
|
245
|
-
puts ""
|
246
|
-
puts t.inspect
|
247
242
|
@results = t
|
248
243
|
end
|
249
244
|
|
250
|
-
|
251
|
-
|
252
245
|
end
|
253
246
|
end
|
254
247
|
end
|
@@ -17,7 +17,7 @@ module Plist4r
|
|
17
17
|
%p Ruby Enterprise Edition (REE) 1.8.7 p248, Mac OS-X 10.6.3
|
18
18
|
= @test_harness.results
|
19
19
|
%p To re-run the backend tests
|
20
|
-
%pre{ :class => "code" } $ cd plist4r && rake
|
20
|
+
%pre{ :class => "code" } $ cd plist4r && rake backends:test
|
21
21
|
%p
|
22
22
|
EOC
|
23
23
|
end
|
@@ -40,6 +40,17 @@ EOC
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
def results_stdout
|
44
|
+
puts ""
|
45
|
+
puts "REFERENCE BACKENDS"
|
46
|
+
puts "=================="
|
47
|
+
Plist4r::Backend::Test::Harness::ReferenceBackends.each do |sym,b_sym|
|
48
|
+
puts "#{sym.inspect} generated by #{b_sym.inspect}"
|
49
|
+
end
|
50
|
+
puts ""
|
51
|
+
puts @test_harness.results.inspect
|
52
|
+
puts ""
|
53
|
+
end
|
43
54
|
end
|
44
55
|
end
|
45
56
|
end
|
@@ -18,42 +18,42 @@
|
|
18
18
|
<tbody>
|
19
19
|
<tr>
|
20
20
|
<th style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #F5F5FF; text-align: right'>c_f_property_list</th>
|
21
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
22
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
23
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
24
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
21
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>26.2 ms</td>
|
22
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>36.1 ms</td>
|
23
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>15.5 ms</td>
|
24
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>67.7 ms</td>
|
25
25
|
</tr>
|
26
26
|
<tr>
|
27
27
|
<th style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #F5F5FF; text-align: right'>haml</th>
|
28
28
|
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>n/a</td>
|
29
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
29
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>30.3 ms</td>
|
30
30
|
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>n/a</td>
|
31
31
|
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>n/a</td>
|
32
32
|
</tr>
|
33
33
|
<tr>
|
34
34
|
<th style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #F5F5FF; text-align: right'>libxml4r</th>
|
35
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
35
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>57.2 ms</td>
|
36
36
|
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>n/a</td>
|
37
37
|
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>n/a</td>
|
38
38
|
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>n/a</td>
|
39
39
|
</tr>
|
40
40
|
<tr>
|
41
41
|
<th style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #F5F5FF; text-align: right'>osx_plist</th>
|
42
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
43
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
44
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
45
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>4
|
42
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>6.0 ms</td>
|
43
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>17.8 ms</td>
|
44
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>3.6 ms</td>
|
45
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>5.4 ms</td>
|
46
46
|
</tr>
|
47
47
|
<tr>
|
48
48
|
<th style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #F5F5FF; text-align: right'>ruby_cocoa</th>
|
49
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
50
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
51
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
52
|
-
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>
|
49
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>297.9 ms</td>
|
50
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>267.4 ms</td>
|
51
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>288.4 ms</td>
|
52
|
+
<td style='padding: 5px; padding-left: 15px; padding-right: 15px; background-color: #FAFAFA; text-align: center'>264.0 ms</td>
|
53
53
|
</tr>
|
54
54
|
</tbody>
|
55
55
|
</table>
|
56
56
|
<p>To re-run the backend tests</p>
|
57
|
-
<pre class='code'>$ cd plist4r && rake
|
57
|
+
<pre class='code'>$ cd plist4r && rake backends:test</pre>
|
58
58
|
</div>
|
59
59
|
<p></p>
|
@@ -36,7 +36,7 @@ We re-use common support objects when writing a new PlistType
|
|
36
36
|
For a change in the {Plist4r} Core library
|
37
37
|
|
38
38
|
* Please update the inline source code documentation, generate locally with +rake yard+
|
39
|
-
* Please run the regression tests with +rake spec+ and +rake
|
39
|
+
* Please run the regression tests with +rake spec+ and +rake backends:test+
|
40
40
|
* Please update the existing regression tests (in RSpec) or write new ones
|
41
41
|
|
42
42
|
For a {Plist4r::Backend}
|
@@ -1,185 +1,191 @@
|
|
1
1
|
|
2
2
|
module Plist4r
|
3
3
|
module ActiveSupport
|
4
|
-
#
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
@keys = []
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.[](*args)
|
42
|
-
ordered_hash = new
|
43
|
-
|
44
|
-
if (args.length == 1 && args.first.is_a?(Array))
|
45
|
-
args.first.each do |key_value_pair|
|
46
|
-
next unless (key_value_pair.is_a?(Array))
|
47
|
-
ordered_hash[key_value_pair[0]] = key_value_pair[1]
|
48
|
-
end
|
49
|
-
|
50
|
-
return ordered_hash
|
51
|
-
end
|
4
|
+
# ActiveSupport::OrderedHash
|
5
|
+
#
|
6
|
+
# Copyright (c) 2005 David Hansson,
|
7
|
+
#
|
8
|
+
# Copyright (c) 2007 Mauricio Fernandez, Sam Stephenson
|
9
|
+
#
|
10
|
+
# Copyright (c) 2008 Steve Purcell, Josh Peek
|
11
|
+
#
|
12
|
+
# Copyright (c) 2009 Christoffer Sawicki
|
13
|
+
#
|
14
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
15
|
+
# a copy of this software and associated documentation files (the
|
16
|
+
# "Software"), to deal in the Software without restriction, including
|
17
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
18
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
19
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
20
|
+
# the following conditions:
|
21
|
+
#
|
22
|
+
# The above copyright notice and this permission notice shall be
|
23
|
+
# included in all copies or substantial portions of the Software.
|
24
|
+
#
|
25
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
26
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
27
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
28
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
29
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
30
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
31
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
32
|
+
#
|
33
|
+
class OrderedHash < Hash
|
34
|
+
def initialize(*args, &block)
|
35
|
+
super
|
36
|
+
@keys = []
|
37
|
+
end
|
52
38
|
|
53
|
-
|
54
|
-
|
55
|
-
end
|
39
|
+
def self.[](*args)
|
40
|
+
ordered_hash = new
|
56
41
|
|
57
|
-
|
58
|
-
|
59
|
-
|
42
|
+
if (args.length == 1 && args.first.is_a?(Array))
|
43
|
+
args.first.each do |key_value_pair|
|
44
|
+
next unless (key_value_pair.is_a?(Array))
|
45
|
+
ordered_hash[key_value_pair[0]] = key_value_pair[1]
|
60
46
|
end
|
61
47
|
|
62
|
-
ordered_hash
|
48
|
+
return ordered_hash
|
63
49
|
end
|
64
50
|
|
65
|
-
|
66
|
-
|
67
|
-
# make a deep copy of keys
|
68
|
-
@keys = other.keys
|
51
|
+
unless (args.size % 2 == 0)
|
52
|
+
raise ArgumentError.new("odd number of arguments for Hash")
|
69
53
|
end
|
70
54
|
|
71
|
-
|
72
|
-
|
73
|
-
|
55
|
+
args.each_with_index do |val, ind|
|
56
|
+
next if (ind % 2 != 0)
|
57
|
+
ordered_hash[val] = args[ind + 1]
|
74
58
|
end
|
75
59
|
|
76
|
-
|
77
|
-
|
78
|
-
super
|
79
|
-
end
|
60
|
+
ordered_hash
|
61
|
+
end
|
80
62
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
super
|
87
|
-
end
|
63
|
+
def initialize_copy(other)
|
64
|
+
super
|
65
|
+
# make a deep copy of keys
|
66
|
+
@keys = other.keys
|
67
|
+
end
|
88
68
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
end
|
69
|
+
def store(key, value)
|
70
|
+
@keys << key if !has_key?(key)
|
71
|
+
super
|
72
|
+
end
|
94
73
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
end
|
74
|
+
def []=(key, value)
|
75
|
+
@keys << key if !has_key?(key)
|
76
|
+
super
|
77
|
+
end
|
100
78
|
|
101
|
-
|
102
|
-
|
79
|
+
def delete(key)
|
80
|
+
if has_key? key
|
81
|
+
index = @keys.index(key)
|
82
|
+
@keys.delete_at index
|
103
83
|
end
|
84
|
+
super
|
85
|
+
end
|
104
86
|
|
105
|
-
|
106
|
-
|
107
|
-
|
87
|
+
def delete_if
|
88
|
+
super
|
89
|
+
sync_keys!
|
90
|
+
self
|
91
|
+
end
|
108
92
|
|
109
|
-
|
110
|
-
|
111
|
-
|
93
|
+
def reject!
|
94
|
+
super
|
95
|
+
sync_keys!
|
96
|
+
self
|
97
|
+
end
|
112
98
|
|
113
|
-
|
114
|
-
|
115
|
-
|
99
|
+
def reject(&block)
|
100
|
+
dup.reject!(&block)
|
101
|
+
end
|
116
102
|
|
117
|
-
|
118
|
-
|
119
|
-
|
103
|
+
def keys
|
104
|
+
(@keys || []).dup
|
105
|
+
end
|
120
106
|
|
121
|
-
|
122
|
-
|
123
|
-
|
107
|
+
def values
|
108
|
+
@keys.collect { |key| self[key] }
|
109
|
+
end
|
124
110
|
|
125
|
-
|
126
|
-
|
127
|
-
|
111
|
+
def to_hash
|
112
|
+
self
|
113
|
+
end
|
128
114
|
|
129
|
-
|
130
|
-
|
131
|
-
|
115
|
+
def to_a
|
116
|
+
@keys.map { |key| [ key, self[key] ] }
|
117
|
+
end
|
132
118
|
|
133
|
-
|
119
|
+
def each_key
|
120
|
+
@keys.each { |key| yield key }
|
121
|
+
end
|
134
122
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
self
|
139
|
-
end
|
123
|
+
def each_value
|
124
|
+
@keys.each { |key| yield self[key]}
|
125
|
+
end
|
140
126
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
[k, v]
|
145
|
-
end
|
127
|
+
def each
|
128
|
+
@keys.each {|key| yield [key, self[key]]}
|
129
|
+
end
|
146
130
|
|
147
|
-
|
148
|
-
other_hash.each {|k,v| self[k] = v }
|
149
|
-
self
|
150
|
-
end
|
131
|
+
alias_method :each_pair, :each
|
151
132
|
|
152
|
-
|
153
|
-
|
154
|
-
|
133
|
+
def clear
|
134
|
+
super
|
135
|
+
@keys.clear
|
136
|
+
self
|
137
|
+
end
|
155
138
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
end
|
139
|
+
def shift
|
140
|
+
k = @keys.first
|
141
|
+
v = delete(k)
|
142
|
+
[k, v]
|
143
|
+
end
|
162
144
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
145
|
+
def merge!(other_hash)
|
146
|
+
other_hash.each {|k,v| self[k] = v }
|
147
|
+
self
|
148
|
+
end
|
167
149
|
|
168
|
-
|
150
|
+
def merge(other_hash)
|
151
|
+
dup.merge!(other_hash)
|
152
|
+
end
|
169
153
|
|
170
|
-
|
171
|
-
|
172
|
-
|
154
|
+
# When replacing with another hash, the initial order of our keys must come from the other hash -ordered or not.
|
155
|
+
def replace(other)
|
156
|
+
super
|
157
|
+
@keys = other.keys
|
158
|
+
self
|
173
159
|
end
|
174
|
-
|
175
|
-
|
160
|
+
|
161
|
+
def inspect
|
162
|
+
"#<OrderedHash #{super}>"
|
163
|
+
end
|
164
|
+
|
165
|
+
private
|
166
|
+
|
167
|
+
def sync_keys!
|
168
|
+
@keys.delete_if {|k| !has_key?(k)}
|
176
169
|
end
|
177
170
|
end
|
178
171
|
end
|
179
172
|
end
|
180
173
|
|
181
174
|
module Plist4r
|
182
|
-
|
183
|
-
|
175
|
+
if RUBY_VERSION >= '1.9'
|
176
|
+
# Inheritance
|
177
|
+
# Ruby 1.9 < Hash
|
178
|
+
# Ruby 1.8 < ActiveSupport::OrderedHash
|
179
|
+
class OrderedHash < ::Hash
|
180
|
+
end
|
181
|
+
else
|
182
|
+
# Inheritance
|
183
|
+
# Ruby 1.9 < Hash
|
184
|
+
# Ruby 1.8 < ActiveSupport::OrderedHash
|
185
|
+
class OrderedHash < Plist4r::ActiveSupport::OrderedHash
|
186
|
+
end
|
184
187
|
end
|
185
188
|
end
|
189
|
+
|
190
|
+
|
191
|
+
|
@@ -70,6 +70,23 @@ class Array
|
|
70
70
|
end
|
71
71
|
|
72
72
|
class Hash
|
73
|
+
# Merge together an array of complex hash structures
|
74
|
+
# @example
|
75
|
+
# @aohoa1 = {}
|
76
|
+
#
|
77
|
+
# @aohoa2 = [
|
78
|
+
# { :array1 => [:a], :array2 => [:a,:b], :array3 => [:a,:b,:c] },
|
79
|
+
# { :array1 => [:aa], :array2 => [:aa,:bb], :array3 => [:aa,:bb,:cc] },
|
80
|
+
# { :array1 => [:aaa], :array2 => [:aaa,:bbb], :array3 => [:aaa,:bbb,:ccc] }
|
81
|
+
# ]
|
82
|
+
#
|
83
|
+
# @aohoa1.merge_array_of_hashes_of_arrays(@aohoa2)
|
84
|
+
# => {
|
85
|
+
# :array1 => [:a,:aa,:aaa],
|
86
|
+
# :array2 => [:a,:b,:aa,:bb,:aaa,:bbb],
|
87
|
+
# :array3 => [:a,:b,:c,:aa,:bb,:cc,:aaa,:bbb,:ccc]
|
88
|
+
# }
|
89
|
+
# @see Plist4r::PlistType::Info::ValidKeys
|
73
90
|
def merge_array_of_hashes_of_arrays array_of_hashes_of_arrays
|
74
91
|
a = array_of_hashes_of_arrays
|
75
92
|
raise "not an array_of_hashes_of_arrays" unless a.is_a? Array
|
@@ -88,6 +105,7 @@ class Hash
|
|
88
105
|
h
|
89
106
|
end
|
90
107
|
|
108
|
+
# @see #merge_array_of_hashes_of_arrays
|
91
109
|
def merge_array_of_hashes_of_arrays! array_of_hashes_of_arrays
|
92
110
|
h = merge_array_of_hashes_of_arrays array_of_hashes_of_arrays
|
93
111
|
self.replace h
|
@@ -186,6 +204,11 @@ class Float
|
|
186
204
|
# @example
|
187
205
|
# 16.347.round(2) => 16.35
|
188
206
|
def round(n=0)
|
189
|
-
|
207
|
+
sprintf("%#{n}.#{n}f", self).to_f
|
190
208
|
end
|
191
209
|
end
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
data/lib/plist4r/plist.rb
CHANGED
@@ -73,7 +73,7 @@ module Plist4r
|
|
73
73
|
def from_string string=nil
|
74
74
|
case string
|
75
75
|
when String
|
76
|
-
plist_format =
|
76
|
+
plist_format = Plist4r.string_detect_format(string)
|
77
77
|
if plist_format
|
78
78
|
@from_string = string
|
79
79
|
@plist_cache ||= PlistCache.new self
|
@@ -344,12 +344,12 @@ module Plist4r
|
|
344
344
|
# @see Backend::Example
|
345
345
|
def import_hash hash=nil
|
346
346
|
case hash
|
347
|
-
when
|
347
|
+
when Plist4r::OrderedHash
|
348
348
|
@hash = hash
|
349
349
|
when nil
|
350
350
|
@hash = ::Plist4r::OrderedHash.new
|
351
351
|
else
|
352
|
-
raise "Please use
|
352
|
+
raise "Please use Plist4r::OrderedHash.new for your hashes"
|
353
353
|
end
|
354
354
|
end
|
355
355
|
|
@@ -392,11 +392,17 @@ module Plist4r
|
|
392
392
|
# @yield Keep every key-value pair for which the passed block evaluates to true. Works as per the ruby core classes Hash#select method
|
393
393
|
def select *keys, &blk
|
394
394
|
if block_given?
|
395
|
-
|
395
|
+
selection = @hash.select &blk
|
396
396
|
old_hash = @hash.deep_clone
|
397
397
|
clear
|
398
|
-
|
399
|
-
|
398
|
+
if RUBY_VERSION >= '1.9'
|
399
|
+
selection.each do |key,value|
|
400
|
+
store key, value
|
401
|
+
end
|
402
|
+
else
|
403
|
+
selection.each do |pair|
|
404
|
+
store pair[0], pair[1]
|
405
|
+
end
|
400
406
|
end
|
401
407
|
keys.each do |k|
|
402
408
|
store k, old_hash[k]
|
data/plist4r.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{plist4r}
|
8
|
-
s.version = "1.0
|
8
|
+
s.version = "1.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["dreamcat4"]
|
12
|
-
s.date = %q{2010-07-
|
12
|
+
s.date = %q{2010-07-21}
|
13
13
|
s.default_executable = %q{plist4r}
|
14
14
|
s.description = %q{Plist4r is for editing Plist files in an easy-to-use, fast, and reliabile way. A comprehensive and fully featured Ruby library. Xml and Binary file formats are supported, with backends for Linux and Mac.}
|
15
15
|
s.email = %q{dreamcat4@gmail.com}
|
@@ -29,10 +29,8 @@ Gem::Specification.new do |s|
|
|
29
29
|
"Rakefile",
|
30
30
|
"VERSION",
|
31
31
|
"bin/plist4r",
|
32
|
-
"ext/osx_plist/Makefile",
|
33
32
|
"ext/osx_plist/extconf.rb",
|
34
33
|
"ext/osx_plist/plist.c",
|
35
|
-
"ext/osx_plist/plist.o",
|
36
34
|
"features/plist4r.feature",
|
37
35
|
"features/step_definitions/plist4r_steps.rb",
|
38
36
|
"features/support/env.rb",
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 1
|
7
|
-
- 0
|
8
7
|
- 1
|
9
|
-
|
8
|
+
- 0
|
9
|
+
version: 1.1.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- dreamcat4
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-07-
|
17
|
+
date: 2010-07-21 00:00:00 +01:00
|
18
18
|
default_executable: plist4r
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -110,10 +110,8 @@ files:
|
|
110
110
|
- Rakefile
|
111
111
|
- VERSION
|
112
112
|
- bin/plist4r
|
113
|
-
- ext/osx_plist/Makefile
|
114
113
|
- ext/osx_plist/extconf.rb
|
115
114
|
- ext/osx_plist/plist.c
|
116
|
-
- ext/osx_plist/plist.o
|
117
115
|
- features/plist4r.feature
|
118
116
|
- features/step_definitions/plist4r_steps.rb
|
119
117
|
- features/support/env.rb
|
data/ext/osx_plist/Makefile
DELETED
@@ -1,157 +0,0 @@
|
|
1
|
-
|
2
|
-
SHELL = /bin/sh
|
3
|
-
|
4
|
-
#### Start of system configuration section. ####
|
5
|
-
|
6
|
-
srcdir = .
|
7
|
-
topdir = /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0
|
8
|
-
hdrdir = $(topdir)
|
9
|
-
VPATH = $(srcdir):$(topdir):$(hdrdir)
|
10
|
-
exec_prefix = $(prefix)
|
11
|
-
prefix = $(DESTDIR)/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr
|
12
|
-
sharedstatedir = $(prefix)/com
|
13
|
-
mandir = $(DESTDIR)/usr/share/man
|
14
|
-
psdir = $(docdir)
|
15
|
-
oldincludedir = $(DESTDIR)/usr/include
|
16
|
-
localedir = $(datarootdir)/locale
|
17
|
-
bindir = $(exec_prefix)/bin
|
18
|
-
libexecdir = $(exec_prefix)/libexec
|
19
|
-
sitedir = $(DESTDIR)/Library/Ruby/Site
|
20
|
-
htmldir = $(docdir)
|
21
|
-
vendorarchdir = $(vendorlibdir)/$(sitearch)
|
22
|
-
includedir = $(prefix)/include
|
23
|
-
infodir = $(DESTDIR)/usr/share/info
|
24
|
-
vendorlibdir = $(vendordir)/$(ruby_version)
|
25
|
-
sysconfdir = $(prefix)/etc
|
26
|
-
libdir = $(exec_prefix)/lib
|
27
|
-
sbindir = $(exec_prefix)/sbin
|
28
|
-
rubylibdir = $(libdir)/ruby/$(ruby_version)
|
29
|
-
docdir = $(datarootdir)/doc/$(PACKAGE)
|
30
|
-
dvidir = $(docdir)
|
31
|
-
vendordir = $(libdir)/ruby/vendor_ruby
|
32
|
-
datarootdir = $(prefix)/share
|
33
|
-
pdfdir = $(docdir)
|
34
|
-
archdir = $(rubylibdir)/$(arch)
|
35
|
-
sitearchdir = $(sitelibdir)/$(sitearch)
|
36
|
-
datadir = $(datarootdir)
|
37
|
-
localstatedir = $(prefix)/var
|
38
|
-
sitelibdir = $(sitedir)/$(ruby_version)
|
39
|
-
|
40
|
-
CC = gcc
|
41
|
-
LIBRUBY = $(LIBRUBY_SO)
|
42
|
-
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
|
43
|
-
LIBRUBYARG_SHARED =
|
44
|
-
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)
|
45
|
-
|
46
|
-
RUBY_EXTCONF_H =
|
47
|
-
CFLAGS = -fno-common -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common $(cflags)
|
48
|
-
INCFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir)
|
49
|
-
DEFS =
|
50
|
-
CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE $(DEFS) $(cppflags)
|
51
|
-
CXXFLAGS = $(CFLAGS)
|
52
|
-
ldflags = -L. -arch i386 -arch x86_64 -framework CoreFoundation -undefined suppress -flat_namespace
|
53
|
-
dldflags =
|
54
|
-
archflag =
|
55
|
-
DLDFLAGS = $(ldflags) $(dldflags) $(archflag)
|
56
|
-
LDSHARED = cc -arch i386 -arch x86_64 -pipe -bundle -undefined dynamic_lookup
|
57
|
-
AR = ar
|
58
|
-
EXEEXT =
|
59
|
-
|
60
|
-
RUBY_INSTALL_NAME = ruby
|
61
|
-
RUBY_SO_NAME = ruby
|
62
|
-
arch = universal-darwin10.0
|
63
|
-
sitearch = universal-darwin10.0
|
64
|
-
ruby_version = 1.8
|
65
|
-
ruby = /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
|
66
|
-
RUBY = $(ruby)
|
67
|
-
RM = rm -f
|
68
|
-
MAKEDIRS = mkdir -p
|
69
|
-
INSTALL = /usr/bin/install -c
|
70
|
-
INSTALL_PROG = $(INSTALL) -m 0755
|
71
|
-
INSTALL_DATA = $(INSTALL) -m 644
|
72
|
-
COPY = cp
|
73
|
-
|
74
|
-
#### End of system configuration section. ####
|
75
|
-
|
76
|
-
preload =
|
77
|
-
|
78
|
-
libpath = . $(libdir)
|
79
|
-
LIBPATH = -L. -L$(libdir)
|
80
|
-
DEFFILE =
|
81
|
-
|
82
|
-
CLEANFILES = mkmf.log
|
83
|
-
DISTCLEANFILES =
|
84
|
-
|
85
|
-
extout =
|
86
|
-
extout_prefix =
|
87
|
-
target_prefix = /plist4r/backend/osx_plist/ext
|
88
|
-
LOCAL_LIBS =
|
89
|
-
LIBS = $(LIBRUBYARG_SHARED) -lpthread -ldl
|
90
|
-
SRCS = plist.c
|
91
|
-
OBJS = plist.o
|
92
|
-
TARGET = osx_plist
|
93
|
-
DLLIB = $(TARGET).bundle
|
94
|
-
EXTSTATIC =
|
95
|
-
STATIC_LIB =
|
96
|
-
|
97
|
-
BINDIR = $(bindir)
|
98
|
-
RUBYCOMMONDIR = $(sitedir)$(target_prefix)
|
99
|
-
RUBYLIBDIR = $(sitelibdir)$(target_prefix)
|
100
|
-
RUBYARCHDIR = $(sitearchdir)$(target_prefix)
|
101
|
-
|
102
|
-
TARGET_SO = $(DLLIB)
|
103
|
-
CLEANLIBS = $(TARGET).bundle $(TARGET).il? $(TARGET).tds $(TARGET).map
|
104
|
-
CLEANOBJS = *.o *.a *.s[ol] *.pdb *.exp *.bak
|
105
|
-
|
106
|
-
all: $(DLLIB)
|
107
|
-
static: $(STATIC_LIB)
|
108
|
-
|
109
|
-
clean:
|
110
|
-
@-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
|
111
|
-
|
112
|
-
distclean: clean
|
113
|
-
@-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
|
114
|
-
@-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
|
115
|
-
|
116
|
-
realclean: distclean
|
117
|
-
install: install-so install-rb
|
118
|
-
|
119
|
-
install-so: $(RUBYARCHDIR)
|
120
|
-
install-so: $(RUBYARCHDIR)/$(DLLIB)
|
121
|
-
$(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
|
122
|
-
$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
|
123
|
-
install-rb: pre-install-rb install-rb-default
|
124
|
-
install-rb-default: pre-install-rb-default
|
125
|
-
pre-install-rb: Makefile
|
126
|
-
pre-install-rb-default: Makefile
|
127
|
-
$(RUBYARCHDIR):
|
128
|
-
$(MAKEDIRS) $@
|
129
|
-
|
130
|
-
site-install: site-install-so site-install-rb
|
131
|
-
site-install-so: install-so
|
132
|
-
site-install-rb: install-rb
|
133
|
-
|
134
|
-
.SUFFIXES: .c .m .cc .cxx .cpp .C .o
|
135
|
-
|
136
|
-
.cc.o:
|
137
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
138
|
-
|
139
|
-
.cxx.o:
|
140
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
141
|
-
|
142
|
-
.cpp.o:
|
143
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
144
|
-
|
145
|
-
.C.o:
|
146
|
-
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
147
|
-
|
148
|
-
.c.o:
|
149
|
-
$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) -c $<
|
150
|
-
|
151
|
-
$(DLLIB): $(OBJS) Makefile
|
152
|
-
@-$(RM) $@
|
153
|
-
$(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
$(OBJS): ruby.h defines.h
|
data/ext/osx_plist/plist.o
DELETED
Binary file
|