summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Way <patrick@reflexions.co>2016-01-27 22:10:02 -0500
committerPatrick Way <patrick@reflexions.co>2016-01-27 22:10:02 -0500
commitd79282111f0a65b25f3c3371de067b4c7aa9c6db (patch)
treebd98dc3337bfd9051bb0eb176d2db08c6c1a6ba5
parentf255ebf12287978ac38ccc55fc0f3bdf552c5ccc (diff)
parent31beb18ad4cfe8c51a7b648e3019c345e786ad97 (diff)
downloadplist-d79282111f0a65b25f3c3371de067b4c7aa9c6db.tar.gz
Merge pull request #18 from bfreese/pdata-fix
Fixed PData parsing issue
-rw-r--r--Rakefile5
-rw-r--r--lib/plist/parser.rb3
-rw-r--r--test/assets/test_data_elements.plist2
3 files changed, 6 insertions, 4 deletions
diff --git a/Rakefile b/Rakefile
index e200300..be4303f 100644
--- a/Rakefile
+++ b/Rakefile
@@ -13,8 +13,8 @@ require 'rubygems'
require 'rake'
require 'rake/testtask'
require 'rake/packagetask'
-require 'rake/gempackagetask'
require 'rake/contrib/rubyforgepublisher'
+require 'rubygems/package_task'
$:.unshift(File.dirname(__FILE__) + "/lib")
require 'plist'
@@ -146,8 +146,9 @@ EOD
s.autorequire = 'plist'
end
-Rake::GemPackageTask.new(spec) do |p|
+Gem::PackageTask.new(spec) do |p|
p.gem_spec = spec
p.need_tar = true
p.need_zip = true
end
+
diff --git a/lib/plist/parser.rb b/lib/plist/parser.rb
index a5f2450..de441fc 100644
--- a/lib/plist/parser.rb
+++ b/lib/plist/parser.rb
@@ -210,8 +210,7 @@ module Plist
require 'base64'
class PData < PTag
def to_ruby
- data = Base64.decode64(text.gsub(/\s+/, ''))
-
+ data = Base64.decode64(text.gsub(/\s+/, '')) unless text.nil?
begin
return Marshal.load(data)
rescue Exception => e
diff --git a/test/assets/test_data_elements.plist b/test/assets/test_data_elements.plist
index 1e9da9d..7fdd161 100644
--- a/test/assets/test_data_elements.plist
+++ b/test/assets/test_data_elements.plist
@@ -20,5 +20,7 @@
<data>BAhvOhZNYXJzaGFsYWJsZU9iamVjdAY6CUBmb28iHnRoaXMgb2JqZWN0IHdh
cyBtYXJzaGFsZWQ=
</data>
+ <key>nodata</key>
+ <data/>
</dict>
</plist>