php-serialization 0.5.3 → 1.0.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.
@@ -0,0 +1,67 @@
1
+ require "php_serialization/unserializer"
2
+
3
+ RSpec.describe PhpSerialization::Unserializer do
4
+ it "should unserialize a integer" do
5
+ expect(subject.run("i:10;")).to eq 10
6
+ end
7
+
8
+ it "should unserialize a string" do
9
+ expect(subject.run('s:4:"Name";')).to eq "Name"
10
+ end
11
+
12
+ it "should unserialize true" do
13
+ expect(subject.run('b:1;')).to eq true
14
+ end
15
+
16
+ it "should unserialize false" do
17
+ expect(subject.run('b:0;')).to eq false
18
+ end
19
+
20
+ it "should unserialize nil" do
21
+ expect(subject.run('N;')).to eq nil
22
+ end
23
+
24
+ it "should unzerialize an array" do
25
+ expect(subject.run('a:2:{i:0;b:1;i:1;s:3:"foo";}')).to eq [true, "foo"]
26
+ end
27
+
28
+ it "should unserialize a hash" do
29
+ expect(subject.run('a:2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')).to eq("name" => "Rodrigo", "age" => 23)
30
+ end
31
+
32
+ it "should unserialize object with class existant" do
33
+ class Person
34
+ attr_accessor :name, :age, :gender
35
+ end
36
+
37
+ person = subject.run('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')
38
+ expect(person).to be_instance_of(Person)
39
+ expect(person.name).to eq "Rodrigo"
40
+ expect(person.age).to eq 23
41
+
42
+ Object.send(:remove_const, :Person)
43
+ end
44
+
45
+ it "should unserialize object without class as a struct" do
46
+ person = subject.run('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')
47
+ expect(person).to be_instance_of(Struct::Person)
48
+ expect(person.name).to eq "Rodrigo"
49
+ expect(person.age).to eq 23
50
+ end
51
+
52
+ it "should unserialize a string with double quotes" do
53
+ expect(subject.run('s:12:"new "Year"";')).to eq "new \"Year\""
54
+ end
55
+
56
+ it "should unserialize a string with double quotes in the middle" do
57
+ expect(subject.run("a:3:{i:0;s:4:\"test\";i:1;s:27:\"string with \"quotes\" inside\";s:2:\"in\";s:15:\"middle of array\";}")).to eq(0 => 'test',1 => 'string with "quotes" inside', 'in' => 'middle of array')
58
+ end
59
+
60
+ it "should unserialize a tricky hash that pretends being an array" do
61
+ expect(subject.run('a:1:{i:2;i:3;}')).to eq(2 => 3)
62
+ end
63
+
64
+ it "should unserialize a multi-dimensional mixed array/hash" do
65
+ expect(subject.run('a:1:{i:0;a:2:{i:14;a:1:{i:0;i:2;}i:15;a:1:{i:0;i:3;}}}')).to eq [{14=>[2], 15=>[3]}]
66
+ end
67
+ end
metadata CHANGED
@@ -1,107 +1,126 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: php-serialization
3
- version: !ruby/object:Gem::Version
4
- version: 0.5.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Rodrigo Kochenburger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2009-12-18 00:00:00 -02:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: rspec
11
+ date: 2016-05-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
17
20
  type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: cucumber
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
27
34
  type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
34
- version:
35
- - !ruby/object:Gem::Dependency
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0
55
+ - !ruby/object:Gem::Dependency
36
56
  name: racc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
37
62
  type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
41
66
  - - ">="
42
- - !ruby/object:Gem::Version
43
- version: "0"
44
- version:
45
- description: "Pure Ruby implementation of php's methods: serialize() and unserializer()"
46
- email: divoxx@gmail.com
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: 'Pure Ruby implementation of php''s methods: serialize() and unserializer()'
70
+ email:
71
+ - divoxx@gmail.com
47
72
  executables: []
48
-
49
73
  extensions: []
50
-
51
- extra_rdoc_files:
52
- - LICENSE
53
- - README.rdoc
54
- files:
55
- - .document
56
- - .gitignore
57
- - LICENSE
58
- - README.rdoc
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".travis.yml"
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
59
81
  - Rakefile
60
- - VERSION
61
- - features/ruby_php_serialization.feature
62
- - features/step_definitions/ruby_php_serialization_steps.rb
63
- - features/support/env.rb
82
+ - bin/racc
83
+ - bin/racc2y
84
+ - bin/rake
85
+ - bin/rspec
86
+ - bin/y2racc
64
87
  - lib/php_serialization.rb
65
88
  - lib/php_serialization/serializer.rb
66
89
  - lib/php_serialization/tokenizer.rb
90
+ - lib/php_serialization/unserializer.output
67
91
  - lib/php_serialization/unserializer.rb
68
92
  - lib/php_serialization/unserializer.y
69
- - php-serialization.gemspec
70
- - spec/serialization_spec.rb
71
- - spec/session_serialization_spec.rb
72
- - spec/spec.opts
73
- - spec/spec_helper.rb
74
- - spec/unserialization_spec.rb
75
- has_rdoc: true
76
- homepage: http://github.com/divoxx/ruby-php-serialization
77
- licenses: []
78
-
93
+ - lib/php_serialization/version.rb
94
+ - ruby-php-serialization.gemspec
95
+ - spec/functional/session_serialization_spec.rb
96
+ - spec/unit/serializer_spec.rb
97
+ - spec/unit/unserializer_spec.rb
98
+ homepage: https://github.com/divoxx/ruby-php-serialization
99
+ licenses:
100
+ - MIT
101
+ metadata: {}
79
102
  post_install_message:
80
- rdoc_options:
81
- - --charset=UTF-8
82
- require_paths:
103
+ rdoc_options: []
104
+ require_paths:
83
105
  - lib
84
- required_ruby_version: !ruby/object:Gem::Requirement
85
- requirements:
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
86
108
  - - ">="
87
- - !ruby/object:Gem::Version
88
- version: "0"
89
- version:
90
- required_rubygems_version: !ruby/object:Gem::Requirement
91
- requirements:
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
92
113
  - - ">="
93
- - !ruby/object:Gem::Version
94
- version: "0"
95
- version:
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
96
116
  requirements: []
97
-
98
117
  rubyforge_project:
99
- rubygems_version: 1.3.5
118
+ rubygems_version: 2.4.5
100
119
  signing_key:
101
- specification_version: 3
102
- summary: PHP's serialization implementation for ruby
103
- test_files:
104
- - spec/serialization_spec.rb
105
- - spec/session_serialization_spec.rb
106
- - spec/spec_helper.rb
107
- - spec/unserialization_spec.rb
120
+ specification_version: 4
121
+ summary: 'Pure Ruby implementation of php''s methods: serialize() and unserializer()'
122
+ test_files:
123
+ - spec/functional/session_serialization_spec.rb
124
+ - spec/unit/serializer_spec.rb
125
+ - spec/unit/unserializer_spec.rb
126
+ has_rdoc:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
@@ -1,72 +0,0 @@
1
- = PhpSerialization
2
-
3
- Ruby implementation of PHP's serialization. This is special useful for reading PHP session files.
4
-
5
- == Serialization examples
6
-
7
- Primitive values
8
-
9
- PhpSerialization.dump(10) # => "i:10;"
10
- PhpSerialization.dump("Name") # => "s:4:\"Name\";"
11
- PhpSerialization.dump(true) # => "b:1;"
12
- PhpSerialization.dump(nil) # => "N;"
13
-
14
- Array
15
-
16
- PhpSerialization.dump([true, "foo"]) # => "a:2:{i:0;b:1;i:1;s:3:\"foo\";}"
17
-
18
- Hash
19
-
20
- PhpSerialization.dump("name" => "Rodrigo", "age" => 23) # => "a:2:{s:4:\"name\";s:7:\"Rodrigo\";s:3:\"age\";i:23;}"
21
-
22
- Object
23
-
24
- class Person
25
- attr_accessor :name, :age
26
- end
27
-
28
- person = Person.new
29
- person.name = "Rodrigo"
30
- person.age = 23
31
-
32
- PhpSerialization.dump(person) # => "O:6:\"Person\":2:{s:4:\"name\";s:7:\"Rodrigo\";s:3:\"age\";i:23;}"
33
-
34
- == Unserialization examples
35
-
36
- Primitive values
37
-
38
- PhpSerialization.load('i:10;') # => 10
39
- PhpSerialization.load('s:4:"Name";') # => "Name"
40
- PhpSerialization.load('b:1;') # => true
41
- PhpSerialization.load('N;') # => nil
42
-
43
- Array
44
-
45
- PhpSerialization.load('a:2:{i:0;b:1;i:1;s:3:"foo";}') # => [true, "foo"]
46
-
47
- Hash
48
-
49
- PhpSerialization.load('a:2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}') # => {"name" => "Rodrigo", "age" => 23}
50
-
51
- Object
52
-
53
- class Person
54
- attr_accessor :name, :age
55
- end
56
-
57
- person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')
58
- person.name # => "Rodrigo"
59
- person.age # => 23
60
-
61
- Object without class will map to a Struct
62
-
63
- person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')
64
- person.class # => Struct::Person
65
- person.name # => "Rodrigo"
66
- person.age # => 23
67
-
68
- You can also call unserialize() or restore(), they are alias to the load().
69
-
70
- == Copyright
71
-
72
- Copyright (c) 2009 Rodrigo Kochenburger. See LICENSE for details.
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.5.3
@@ -1,9 +0,0 @@
1
- Feature: something something
2
- In order to something something
3
- A user something something
4
- something something something
5
-
6
- Scenario: something something
7
- Given inspiration
8
- When I create a sweet new gem
9
- Then everyone should see how awesome I am
@@ -1,4 +0,0 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
2
- require 'php_serialization'
3
-
4
- require 'spec/expectations'
@@ -1,72 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{php-serialization}
8
- s.version = "0.5.3"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Rodrigo Kochenburger"]
12
- s.date = %q{2009-12-18}
13
- s.description = %q{Pure Ruby implementation of php's methods: serialize() and unserializer()}
14
- s.email = %q{divoxx@gmail.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "features/ruby_php_serialization.feature",
27
- "features/step_definitions/ruby_php_serialization_steps.rb",
28
- "features/support/env.rb",
29
- "lib/php_serialization.rb",
30
- "lib/php_serialization/serializer.rb",
31
- "lib/php_serialization/tokenizer.rb",
32
- "lib/php_serialization/unserializer.rb",
33
- "lib/php_serialization/unserializer.y",
34
- "php-serialization.gemspec",
35
- "spec/serialization_spec.rb",
36
- "spec/session_serialization_spec.rb",
37
- "spec/spec.opts",
38
- "spec/spec_helper.rb",
39
- "spec/unserialization_spec.rb"
40
- ]
41
- s.homepage = %q{http://github.com/divoxx/ruby-php-serialization}
42
- s.rdoc_options = ["--charset=UTF-8"]
43
- s.require_paths = ["lib"]
44
- s.rubygems_version = %q{1.3.5}
45
- s.summary = %q{PHP's serialization implementation for ruby}
46
- s.test_files = [
47
- "spec/serialization_spec.rb",
48
- "spec/session_serialization_spec.rb",
49
- "spec/spec_helper.rb",
50
- "spec/unserialization_spec.rb"
51
- ]
52
-
53
- if s.respond_to? :specification_version then
54
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
55
- s.specification_version = 3
56
-
57
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
58
- s.add_development_dependency(%q<rspec>, [">= 0"])
59
- s.add_development_dependency(%q<cucumber>, [">= 0"])
60
- s.add_runtime_dependency(%q<racc>, [">= 0"])
61
- else
62
- s.add_dependency(%q<rspec>, [">= 0"])
63
- s.add_dependency(%q<cucumber>, [">= 0"])
64
- s.add_dependency(%q<racc>, [">= 0"])
65
- end
66
- else
67
- s.add_dependency(%q<rspec>, [">= 0"])
68
- s.add_dependency(%q<cucumber>, [">= 0"])
69
- s.add_dependency(%q<racc>, [">= 0"])
70
- end
71
- end
72
-