CFPropertyList 2.0.13.1 → 2.0.14
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/lib/rbBinaryCFPropertyList.rb +23 -12
- data/lib/rbXMLCFPropertyList.rb +9 -2
- metadata +13 -33
@@ -222,16 +222,24 @@ module CFPropertyList
|
|
222
222
|
|
223
223
|
# Count characters considering character set
|
224
224
|
def Binary.charset_strlen(str,charset="UTF-8")
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
225
|
+
if str.respond_to?(:encode)
|
226
|
+
size = str.length
|
227
|
+
else
|
228
|
+
utf8_str = Iconv.conv("UTF-8",charset,str)
|
229
|
+
size = utf8_str.scan(/./mu).size
|
230
|
+
end
|
231
|
+
|
230
232
|
# UTF-16 code units in the range D800-DBFF are the beginning of
|
231
233
|
# a surrogate pair, and count as one additional character for
|
232
234
|
# length calculation.
|
233
|
-
|
234
|
-
|
235
|
+
if charset =~ /^UTF-16/
|
236
|
+
if str.respond_to?(:encode)
|
237
|
+
str.bytes.to_a.each_slice(2) { |pair| size += 1 if (0xd8..0xdb).include?(pair[0]) }
|
238
|
+
else
|
239
|
+
str.split('').each_slice(2) { |pair| size += 1 if ("\xd8".."\xdb").include?(pair[0]) }
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
235
243
|
return size
|
236
244
|
end
|
237
245
|
|
@@ -434,7 +442,11 @@ module CFPropertyList
|
|
434
442
|
end
|
435
443
|
|
436
444
|
def Binary.ascii_string?(str)
|
437
|
-
|
445
|
+
if str.respond_to?(:ascii_only?)
|
446
|
+
return str.ascii_only?
|
447
|
+
else
|
448
|
+
return str.scan(/[\x80-\xFF]/mn).size == 0
|
449
|
+
end
|
438
450
|
end
|
439
451
|
|
440
452
|
# Uniques and transforms a string value to binary format and adds it to the object table
|
@@ -572,10 +584,9 @@ module CFPropertyList
|
|
572
584
|
saved_object_count = @written_object_count
|
573
585
|
@written_object_count += 1
|
574
586
|
|
575
|
-
keys_and_values = val.value.collect
|
576
|
-
|
577
|
-
|
578
|
-
|
587
|
+
keys_and_values = val.value.keys.collect { |k| CFString.new(k).to_binary(self) }
|
588
|
+
keys_and_values += val.value.keys.collect { |k| val.value[k].to_binary(self) }
|
589
|
+
|
579
590
|
bdata = Binary.type_bytes(0b1101,val.value.size) +
|
580
591
|
Binary.pack_int_array_with_size(@object_ref_size, keys_and_values)
|
581
592
|
|
data/lib/rbXMLCFPropertyList.rb
CHANGED
@@ -43,6 +43,7 @@ module CFPropertyList
|
|
43
43
|
first = true
|
44
44
|
end
|
45
45
|
|
46
|
+
str1.force_encoding('UTF-8') if str1.respond_to?(:force_encoding)
|
46
47
|
return str1
|
47
48
|
end
|
48
49
|
|
@@ -50,8 +51,14 @@ module CFPropertyList
|
|
50
51
|
|
51
52
|
# get the value of a DOM node
|
52
53
|
def get_value(n)
|
53
|
-
|
54
|
-
|
54
|
+
content = if n.children?
|
55
|
+
n.first.content
|
56
|
+
else
|
57
|
+
n.content
|
58
|
+
end
|
59
|
+
|
60
|
+
content.force_encoding('UTF-8') if content.respond_to?(:force_encoding)
|
61
|
+
content
|
55
62
|
end
|
56
63
|
|
57
64
|
# import the XML values
|
metadata
CHANGED
@@ -1,13 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: CFPropertyList
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 2
|
7
|
-
- 0
|
8
|
-
- 13
|
9
|
-
- 1
|
10
|
-
version: 2.0.13.1
|
4
|
+
version: 2.0.14
|
11
5
|
platform: ruby
|
12
6
|
authors:
|
13
7
|
- Christian Kruse
|
@@ -15,39 +9,29 @@ autorequire:
|
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
11
|
|
18
|
-
date: 2010-09-
|
12
|
+
date: 2010-09-27 00:00:00 +02:00
|
19
13
|
default_executable:
|
20
14
|
dependencies:
|
21
15
|
- !ruby/object:Gem::Dependency
|
22
16
|
name: libxml-ruby
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
20
|
requirements:
|
27
21
|
- - ">="
|
28
22
|
- !ruby/object:Gem::Version
|
29
|
-
segments:
|
30
|
-
- 1
|
31
|
-
- 1
|
32
|
-
- 0
|
33
23
|
version: 1.1.0
|
34
|
-
|
35
|
-
version_requirements: *id001
|
24
|
+
version:
|
36
25
|
- !ruby/object:Gem::Dependency
|
37
26
|
name: rake
|
38
|
-
|
39
|
-
|
40
|
-
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
30
|
requirements:
|
42
31
|
- - ">="
|
43
32
|
- !ruby/object:Gem::Version
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
- 7
|
47
|
-
- 0
|
48
33
|
version: 0.7.0
|
49
|
-
|
50
|
-
version_requirements: *id002
|
34
|
+
version:
|
51
35
|
description: This is a module to read, write and manipulate both binary and XML property lists as defined by apple.
|
52
36
|
email: cjk@wwwtech.de
|
53
37
|
executables: []
|
@@ -74,25 +58,21 @@ rdoc_options: []
|
|
74
58
|
require_paths:
|
75
59
|
- lib
|
76
60
|
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
-
none: false
|
78
61
|
requirements:
|
79
62
|
- - ">="
|
80
63
|
- !ruby/object:Gem::Version
|
81
|
-
segments:
|
82
|
-
- 0
|
83
64
|
version: "0"
|
65
|
+
version:
|
84
66
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
-
none: false
|
86
67
|
requirements:
|
87
68
|
- - ">="
|
88
69
|
- !ruby/object:Gem::Version
|
89
|
-
segments:
|
90
|
-
- 0
|
91
70
|
version: "0"
|
71
|
+
version:
|
92
72
|
requirements: []
|
93
73
|
|
94
74
|
rubyforge_project: cfpropertylist
|
95
|
-
rubygems_version: 1.3.
|
75
|
+
rubygems_version: 1.3.5
|
96
76
|
signing_key:
|
97
77
|
specification_version: 3
|
98
78
|
summary: Read, write and manipulate both binary and XML property lists as defined by apple
|