CFPropertyList 2.2.0 → 2.2.1
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.
- checksums.yaml +7 -0
- data/README +0 -0
- data/lib/cfpropertylist.rb +0 -0
- data/lib/rbBinaryCFPropertyList.rb +7 -4
- data/lib/rbCFPlistError.rb +0 -0
- data/lib/rbCFPropertyList.rb +23 -1
- data/lib/rbLibXMLParser.rb +10 -2
- data/lib/rbNokogiriParser.rb +8 -3
- data/lib/rbREXMLParser.rb +7 -2
- metadata +9 -13
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0365c5873a771aa9b3f29a9c40ff915c23839a25
|
4
|
+
data.tar.gz: 4cc982239b806c7857b844deebbcca016deea87d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a4ec6d399c5823c687ac7800ec9b72d9b0e69f1eb9774cf9467f84d3d1555e903c53d6dc23312e0cfeed9349a5fb044406b2d0750ed3799bdb4ef40ce855dd7d
|
7
|
+
data.tar.gz: d1043959eac257f061eef8279cebdcfe1de2fe0f1ecacdab816805f95e8a105446b40089c477b66ff2f5f2994163569bc41292feb5e01c9a38f597178c8822ed
|
data/README
CHANGED
File without changes
|
data/lib/cfpropertylist.rb
CHANGED
File without changes
|
@@ -38,10 +38,13 @@ module CFPropertyList
|
|
38
38
|
@count_objects = number_of_objects
|
39
39
|
|
40
40
|
# decode offset table
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
41
|
+
if(offset_size != 3)
|
42
|
+
formats = ["","C*","n*","","N*"]
|
43
|
+
@offsets = coded_offset_table.unpack(formats[offset_size])
|
44
|
+
else
|
45
|
+
@offsets = coded_offset_table.unpack("C*").each_slice(3).map {
|
46
|
+
|x,y,z| (x << 16) | (y << 8) | z
|
47
|
+
}
|
45
48
|
end
|
46
49
|
|
47
50
|
@object_ref_size = object_ref_size
|
data/lib/rbCFPlistError.rb
CHANGED
File without changes
|
data/lib/rbCFPropertyList.rb
CHANGED
@@ -222,10 +222,12 @@ module CFPropertyList
|
|
222
222
|
|
223
223
|
# Path of PropertyList
|
224
224
|
attr_accessor :filename
|
225
|
-
#
|
225
|
+
# the original format of the PropertyList
|
226
226
|
attr_accessor :format
|
227
227
|
# the root value in the plist file
|
228
228
|
attr_accessor :value
|
229
|
+
# default value for XML generation; if true generate formatted XML
|
230
|
+
attr_accessor :formatted
|
229
231
|
|
230
232
|
# initialize a new CFPropertyList, arguments are:
|
231
233
|
#
|
@@ -238,11 +240,22 @@ module CFPropertyList
|
|
238
240
|
@filename = opts[:file]
|
239
241
|
@format = opts[:format] || FORMAT_AUTO
|
240
242
|
@data = opts[:data]
|
243
|
+
@formatted = opts[:formatted]
|
241
244
|
|
242
245
|
load(@filename) unless @filename.nil?
|
243
246
|
load_str(@data) unless @data.nil?
|
244
247
|
end
|
245
248
|
|
249
|
+
# returns a list of registered parsers
|
250
|
+
def self.parsers
|
251
|
+
@@parsers
|
252
|
+
end
|
253
|
+
|
254
|
+
# set a list of parsers
|
255
|
+
def self.parsers=(val)
|
256
|
+
@@parsers = val
|
257
|
+
end
|
258
|
+
|
246
259
|
# Load an XML PropertyList
|
247
260
|
# filename = nil:: The filename to read from; if nil, read from the file defined by instance variable +filename+
|
248
261
|
def load_xml(filename=nil)
|
@@ -288,8 +301,10 @@ module CFPropertyList
|
|
288
301
|
if filetype == "bplist" then
|
289
302
|
raise CFFormatError.new("Wrong file version #{version}") unless version == "00"
|
290
303
|
prsr = Binary.new
|
304
|
+
@format = List::FORMAT_BINARY
|
291
305
|
else
|
292
306
|
prsr = CFPropertyList.xml_parser_interface.new
|
307
|
+
@format = List::FORMAT_XML
|
293
308
|
end
|
294
309
|
|
295
310
|
@value = prsr.load({:data => str})
|
@@ -321,12 +336,16 @@ module CFPropertyList
|
|
321
336
|
if filetype == "bplist" then
|
322
337
|
raise CFFormatError.new("Wong file version #{version}") unless version == "00"
|
323
338
|
prsr = Binary.new
|
339
|
+
@format = List::FORMAT_BINARY
|
324
340
|
else
|
325
341
|
prsr = CFPropertyList.xml_parser_interface.new
|
342
|
+
@format = List::FORMAT_XML
|
326
343
|
end
|
327
344
|
|
328
345
|
@value = prsr.load({:file => file})
|
329
346
|
end
|
347
|
+
|
348
|
+
raise CFFormatError.new("Invalid format or parser error!") if @value.nil?
|
330
349
|
end
|
331
350
|
|
332
351
|
# Serialize CFPropertyList object to specified format and write it to file
|
@@ -345,7 +364,10 @@ module CFPropertyList
|
|
345
364
|
end
|
346
365
|
|
347
366
|
opts[:root] = @value
|
367
|
+
opts[:formatted] = @formatted unless opts.has_key?(:formatted)
|
368
|
+
|
348
369
|
prsr = @@parsers[format-1].new
|
370
|
+
|
349
371
|
content = prsr.to_str(opts)
|
350
372
|
|
351
373
|
File.open(file, 'wb') {
|
data/lib/rbLibXMLParser.rb
CHANGED
@@ -10,14 +10,20 @@ module CFPropertyList
|
|
10
10
|
# * :file - The filename of the file to load
|
11
11
|
# * :data - The data to parse
|
12
12
|
def load(opts)
|
13
|
+
doc = nil
|
14
|
+
|
13
15
|
if(opts.has_key?(:file)) then
|
14
16
|
doc = LibXML::XML::Document.file(opts[:file],:options => LibXML::XML::Parser::Options::NOBLANKS|LibXML::XML::Parser::Options::NOENT)
|
15
17
|
else
|
16
18
|
doc = LibXML::XML::Document.string(opts[:data],:options => LibXML::XML::Parser::Options::NOBLANKS|LibXML::XML::Parser::Options::NOENT)
|
17
19
|
end
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
+
if doc
|
22
|
+
root = doc.root.first
|
23
|
+
return import_xml(root)
|
24
|
+
end
|
25
|
+
rescue LibXML::XML::Error => e
|
26
|
+
raise CFFormatError.new('invalid XML: ' + e.message)
|
21
27
|
end
|
22
28
|
|
23
29
|
# serialize CFPropertyList object to XML
|
@@ -105,6 +111,8 @@ module CFPropertyList
|
|
105
111
|
|
106
112
|
if node.children? then
|
107
113
|
node.children.each do |n|
|
114
|
+
next if n.text? # avoid a bug of libxml
|
115
|
+
next if n.comment?
|
108
116
|
ary.push import_xml(n)
|
109
117
|
end
|
110
118
|
end
|
data/lib/rbNokogiriParser.rb
CHANGED
@@ -10,7 +10,6 @@ module CFPropertyList
|
|
10
10
|
# * :file - The filename of the file to load
|
11
11
|
# * :data - The data to parse
|
12
12
|
def load(opts)
|
13
|
-
|
14
13
|
doc = nil
|
15
14
|
if(opts.has_key?(:file)) then
|
16
15
|
File.open(opts[:file], "rb") { |fd| doc = Nokogiri::XML::Document.parse(fd, nil, nil, Nokogiri::XML::ParseOptions::NOBLANKS|Nokogiri::XML::ParseOptions::NOENT) }
|
@@ -18,8 +17,12 @@ module CFPropertyList
|
|
18
17
|
doc = Nokogiri::XML::Document.parse(opts[:data], nil, nil, Nokogiri::XML::ParseOptions::NOBLANKS|Nokogiri::XML::ParseOptions::NOENT)
|
19
18
|
end
|
20
19
|
|
21
|
-
|
22
|
-
|
20
|
+
if doc
|
21
|
+
root = doc.root.children.first
|
22
|
+
return import_xml(root)
|
23
|
+
end
|
24
|
+
rescue Nokogiri::XML::SyntaxError => e
|
25
|
+
raise CFFormatError.new('invalid XML: ' + e.message)
|
23
26
|
end
|
24
27
|
|
25
28
|
# serialize CFPropertyList object to XML
|
@@ -112,6 +115,8 @@ module CFPropertyList
|
|
112
115
|
|
113
116
|
unless children.empty? then
|
114
117
|
children.each do |n|
|
118
|
+
next if n.text? # avoid a bug of libxml
|
119
|
+
next if n.comment?
|
115
120
|
ary.push import_xml(n)
|
116
121
|
end
|
117
122
|
end
|
data/lib/rbREXMLParser.rb
CHANGED
@@ -18,8 +18,12 @@ module CFPropertyList
|
|
18
18
|
doc = REXML::Document.new(opts[:data])
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
if doc
|
22
|
+
root = doc.root.elements[1]
|
23
|
+
return import_xml(root)
|
24
|
+
end
|
25
|
+
rescue REXML::ParseException => e
|
26
|
+
raise CFFormatError.new('invalid XML: ' + e.message)
|
23
27
|
end
|
24
28
|
|
25
29
|
# serialize CFPropertyList object to XML
|
@@ -108,6 +112,7 @@ module CFPropertyList
|
|
108
112
|
|
109
113
|
if node.has_elements? then
|
110
114
|
node.elements.each do |n|
|
115
|
+
next if n.name == '#text' # avoid a bug of libxml
|
111
116
|
ary.push import_xml(n)
|
112
117
|
end
|
113
118
|
end
|
metadata
CHANGED
@@ -1,30 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: CFPropertyList
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.2.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Christian Kruse
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-08-16 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.7.0
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 0.7.0
|
30
27
|
description: This is a module to read, write and manipulate both binary and XML property
|
@@ -46,27 +43,26 @@ files:
|
|
46
43
|
- README
|
47
44
|
homepage: http://github.com/ckruse/CFPropertyList
|
48
45
|
licenses: []
|
46
|
+
metadata: {}
|
49
47
|
post_install_message:
|
50
48
|
rdoc_options: []
|
51
49
|
require_paths:
|
52
50
|
- lib
|
53
51
|
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
55
52
|
requirements:
|
56
|
-
- -
|
53
|
+
- - '>='
|
57
54
|
- !ruby/object:Gem::Version
|
58
55
|
version: '0'
|
59
56
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
57
|
requirements:
|
62
|
-
- -
|
58
|
+
- - '>='
|
63
59
|
- !ruby/object:Gem::Version
|
64
60
|
version: '0'
|
65
61
|
requirements: []
|
66
62
|
rubyforge_project:
|
67
|
-
rubygems_version:
|
63
|
+
rubygems_version: 2.0.3
|
68
64
|
signing_key:
|
69
|
-
specification_version:
|
65
|
+
specification_version: 4
|
70
66
|
summary: Read, write and manipulate both binary and XML property lists as defined
|
71
67
|
by apple
|
72
68
|
test_files: []
|