CFPropertyList 2.1.2 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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