CFPropertyList 2.1.2 → 2.2.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.
@@ -214,7 +214,7 @@ module CFPropertyList
214
214
 
215
215
  # Convert the given string from one charset to another
216
216
  def Binary.charset_convert(str,from,to="UTF-8")
217
- return str.clone.force_encoding(from).encode(to) if str.respond_to?("encode")
217
+ return str.dup.force_encoding(from).encode(to) if str.respond_to?("encode")
218
218
  Iconv.conv(to,from,str)
219
219
  end
220
220
 
@@ -73,19 +73,6 @@ module CFPropertyList
73
73
  end
74
74
 
75
75
  class String
76
- unless("".respond_to?(:blob) && "".respond_to?(:blob=)) then
77
- # The blob status of this string (to set to true if a binary string)
78
- attr_accessor :blob
79
- end
80
-
81
- unless("".respond_to?(:blob?)) then
82
- # Returns whether or not +str+ is a blob.
83
- # @return [true,false] If true, this string contains binary data. If false, its a regular string
84
- def blob?
85
- blob
86
- end
87
- end
88
-
89
76
  unless("".respond_to?(:bytesize)) then
90
77
  def bytesize
91
78
  self.length
@@ -148,8 +135,11 @@ module CFPropertyList
148
135
  when Float then CFReal.new(object)
149
136
  when TrueClass, FalseClass then CFBoolean.new(object)
150
137
 
138
+ when Blob
139
+ CFData.new(object, CFData::DATA_RAW)
140
+
151
141
  when String
152
- object.blob? ? CFData.new(object, CFData::DATA_RAW) : CFString.new(object)
142
+ CFString.new(object)
153
143
 
154
144
  when Time, DateTime, Date then CFDate.new(object)
155
145
 
@@ -296,7 +286,7 @@ module CFPropertyList
296
286
 
297
287
  prsr = nil
298
288
  if filetype == "bplist" then
299
- raise CFFormatError.new("Wong file version #{version}") unless version == "00"
289
+ raise CFFormatError.new("Wrong file version #{version}") unless version == "00"
300
290
  prsr = Binary.new
301
291
  else
302
292
  prsr = CFPropertyList.xml_parser_interface.new
@@ -323,6 +313,7 @@ module CFPropertyList
323
313
 
324
314
  when List::FORMAT_AUTO then # what we now do is ugly, but neccessary to recognize the file format
325
315
  magic_number = IO.read(file,8)
316
+ raise IOError.new("File #{file} is empty.") unless magic_number
326
317
  filetype = magic_number[0..5]
327
318
  version = magic_number[6..7]
328
319
 
@@ -10,6 +10,13 @@
10
10
  require 'base64'
11
11
 
12
12
  module CFPropertyList
13
+ ##
14
+ # Blob is intended to distinguish between a Ruby String instance that should
15
+ # be converted to a CFString type and a Ruby String instance that should be
16
+ # converted to a CFData type
17
+ class Blob < String
18
+ end
19
+
13
20
  # This class defines the base class for all CFType classes
14
21
  #
15
22
  class CFType
@@ -163,7 +170,6 @@ module CFPropertyList
163
170
  def initialize(value=nil,format=DATA_BASE64)
164
171
  if(format == DATA_RAW)
165
172
  @raw_value = value
166
- @raw_value.blob = true
167
173
  else
168
174
  @value = value
169
175
  end
@@ -176,9 +182,7 @@ module CFPropertyList
176
182
 
177
183
  # get base64 decoded value
178
184
  def decoded_value
179
- @raw_value ||= String.new(Base64.decode64(@value))
180
- @raw_value.blob = true
181
- @raw_value
185
+ @raw_value ||= Blob.new(Base64.decode64(@value))
182
186
  end
183
187
 
184
188
  # convert to XML
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: CFPropertyList
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-05 00:00:00.000000000 Z
12
+ date: 2012-12-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -36,8 +36,6 @@ extra_rdoc_files:
36
36
  - README
37
37
  files:
38
38
  - lib/cfpropertylist.rb
39
- - lib/lala.plist
40
- - lib/my_test.rb
41
39
  - lib/rbBinaryCFPropertyList.rb
42
40
  - lib/rbCFPlistError.rb
43
41
  - lib/rbCFPropertyList.rb
Binary file
@@ -1,11 +0,0 @@
1
- $:.push('.')
2
- require 'rbCFPropertyList'
3
- ahash = {"SALTED-SHA512"=> "\214\351\005 \250\224\204\2510M\231\004\312YH\336yk\v\372\313\v\236\372u\255g\177\343\234$wh\221\001\220@/\343:\227\270\203\214g\320\361%'\315J/\t\317\354\275\017\000\241\225\302\322G\026& \205\344"}
4
- ahash["SALTED-SHA512"].blob = true
5
- bpl = CFPropertyList::List.new
6
- bpl.value = CFPropertyList.guess(ahash)
7
- results = bpl.to_str
8
-
9
- fd = File.open("lala.plist", "wb")
10
- fd.write results
11
- fd.close