php-serialization 0.4.0 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -13,11 +13,11 @@ Primitive values
13
13
 
14
14
  Array
15
15
 
16
- PhpSerialization.dump([true, "foo"]) # => "a:2:{i:0;b:1;i:1;s:3:\"foo\";};"
16
+ PhpSerialization.dump([true, "foo"]) # => "a:2:{i:0;b:1;i:1;s:3:\"foo\";}"
17
17
 
18
18
  Hash
19
19
 
20
- PhpSerialization.dump("name" => "Rodrigo", "age" => 23) # => "a:2:{s:4:\"name\";s:7:\"Rodrigo\";s:3:\"age\";i:23;};"
20
+ PhpSerialization.dump("name" => "Rodrigo", "age" => 23) # => "a:2:{s:4:\"name\";s:7:\"Rodrigo\";s:3:\"age\";i:23;}"
21
21
 
22
22
  Object
23
23
 
@@ -29,7 +29,7 @@ Object
29
29
  person.name = "Rodrigo"
30
30
  person.age = 23
31
31
 
32
- PhpSerialization.dump(person) # => "O:6:\"Person\":2:{s:4:\"name\";s:7:\"Rodrigo\";s:3:\"age\";i:23;};"
32
+ PhpSerialization.dump(person) # => "O:6:\"Person\":2:{s:4:\"name\";s:7:\"Rodrigo\";s:3:\"age\";i:23;}"
33
33
 
34
34
  == Unserialization examples
35
35
 
@@ -42,11 +42,11 @@ Primitive values
42
42
 
43
43
  Array
44
44
 
45
- PhpSerialization.load('a:2:{i:0;b:1;i:1;s:3:"foo";};') # => [true, "foo"]
45
+ PhpSerialization.load('a:2:{i:0;b:1;i:1;s:3:"foo";}') # => [true, "foo"]
46
46
 
47
47
  Hash
48
48
 
49
- PhpSerialization.load('a:2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;};') # => {"name" => "Rodrigo", "age" => 23}
49
+ PhpSerialization.load('a:2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}') # => {"name" => "Rodrigo", "age" => 23}
50
50
 
51
51
  Object
52
52
 
@@ -54,13 +54,13 @@ Object
54
54
  attr_accessor :name, :age
55
55
  end
56
56
 
57
- person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;};')
57
+ person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')
58
58
  person.name # => "Rodrigo"
59
59
  person.age # => 23
60
60
 
61
61
  Object without class will map to a Struct
62
62
 
63
- person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;};')
63
+ person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')
64
64
  person.class # => Struct::Person
65
65
  person.name # => "Rodrigo"
66
66
  person.age # => 23
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.3
@@ -17,14 +17,19 @@ module PhpSerialization
17
17
  when Array then
18
18
  idx = -1
19
19
  items = object.map { |item| "#{run(idx += 1)}#{run(item)}" }.join
20
- "a:#{object.length}:{#{items}};"
20
+ "a:#{object.length}:{#{items}}"
21
21
  when Hash then
22
22
  items = object.map { |key,value| "#{run(key)}#{run(value)}" }.join
23
- "a:#{object.length}:{#{items}};"
23
+ "a:#{object.length}:{#{items}}"
24
24
  else
25
25
  klass_name = object.class.name
26
+
27
+ if klass_name =~ /^Struct::/ && php_klass = object.instance_variable_get("@_php_class")
28
+ klass_name = php_klass
29
+ end
30
+
26
31
  attributes = object.instance_variables.map { |var_name| "#{run(var_name.gsub(/^@/, ''))}#{run(object.instance_variable_get(var_name))}" }
27
- "O:#{klass_name.length}:\"#{klass_name}\":#{object.instance_variables.length}:{#{attributes}};"
32
+ "O:#{klass_name.length}:\"#{klass_name}\":#{object.instance_variables.length}:{#{attributes}}"
28
33
  end
29
34
  end
30
35
  end
@@ -31,84 +31,83 @@ module_eval(<<'...end unserializer.y/module_eval...', 'unserializer.y', 69)
31
31
  ##### State transition tables begin ###
32
32
 
33
33
  racc_action_table = [
34
- 6, 7, 31, 21, 10, 12, 14, 22, 1, 6,
35
- 7, 5, 23, 10, 12, 14, 24, 1, 25, 50,
36
- 5, 6, 7, 26, 27, 10, 12, 14, 28, 1,
37
- 6, 7, 5, 29, 10, 12, 14, 30, 1, 20,
38
- 43, 5, 32, 33, 34, 35, 36, 37, 38, 40,
39
- 42, 19, 46, 47, 18, 17, 51 ]
34
+ 5, 6, 19, 20, 9, 11, 13, 21, 1, 5,
35
+ 6, 4, 22, 9, 11, 13, 23, 1, 5, 6,
36
+ 4, 24, 9, 11, 13, 25, 1, 26, 46, 4,
37
+ 5, 6, 27, 28, 9, 11, 13, 29, 1, 30,
38
+ 52, 4, 18, 32, 33, 34, 35, 36, 37, 38,
39
+ 39, 40, 41, 43, 45, 17, 49, 16, 31 ]
40
40
 
41
41
  racc_action_check = [
42
- 0, 0, 24, 9, 0, 0, 0, 10, 0, 48,
43
- 48, 0, 12, 48, 48, 48, 14, 48, 17, 48,
44
- 48, 47, 47, 18, 19, 47, 47, 47, 20, 47,
45
- 41, 41, 47, 22, 41, 41, 41, 23, 41, 8,
46
- 41, 41, 25, 26, 31, 32, 33, 34, 35, 38,
47
- 40, 7, 42, 45, 5, 1, 49 ]
42
+ 0, 0, 7, 8, 0, 0, 0, 9, 0, 48,
43
+ 48, 0, 10, 48, 48, 48, 11, 48, 44, 44,
44
+ 48, 12, 44, 44, 44, 13, 44, 14, 44, 44,
45
+ 51, 51, 15, 16, 51, 51, 51, 17, 51, 18,
46
+ 51, 51, 6, 21, 23, 25, 28, 29, 34, 35,
47
+ 36, 37, 38, 41, 43, 4, 45, 1, 19 ]
48
48
 
49
49
  racc_action_pointer = [
50
- -3, 50, nil, nil, nil, 49, nil, 46, 39, 1,
51
- 2, nil, 7, nil, 11, nil, nil, 12, 17, 18,
52
- 28, nil, 27, 31, -4, 37, 38, nil, nil, nil,
53
- nil, 39, 35, 34, 37, 43, nil, nil, 43, nil,
54
- 45, 27, 40, nil, nil, 51, nil, 18, 6, 54,
55
- nil, nil ]
50
+ -3, 52, nil, nil, 50, nil, 37, 2, 1, 2,
51
+ 10, 11, 19, 20, 25, 30, 27, 31, 33, 58,
52
+ nil, 37, nil, 38, nil, 39, nil, nil, 41, 42,
53
+ nil, nil, nil, nil, 43, 39, 38, 41, 47, nil,
54
+ nil, 47, nil, 49, 15, 44, nil, nil, 6, nil,
55
+ nil, 27, nil ]
56
56
 
57
57
  racc_action_default = [
58
- -20, -20, -6, -7, -8, -20, -9, -20, -20, -20,
59
- -20, -2, -20, -3, -20, -4, -5, -20, -20, -20,
60
- -20, -1, -20, -20, -20, -20, -20, -10, 52, -11,
61
- -12, -20, -20, -20, -20, -20, -18, -13, -20, -16,
62
- -20, -20, -20, -19, -15, -20, -16, -20, -20, -20,
63
- -14, -17 ]
58
+ -19, -19, -6, -7, -19, -8, -19, -19, -19, -19,
59
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
60
+ -1, -19, -2, -19, -3, -19, -4, -5, -19, -19,
61
+ -9, 53, -10, -11, -19, -19, -19, -19, -19, -17,
62
+ -12, -19, -15, -19, -19, -19, -18, -14, -19, -15,
63
+ -16, -19, -13 ]
64
64
 
65
65
  racc_goto_table = [
66
- 9, 41, 8, 39, nil, nil, nil, nil, 48, nil,
66
+ 7, 44, 42, nil, nil, nil, nil, nil, 51, nil,
67
67
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
68
68
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
69
69
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
70
- nil, nil, nil, nil, nil, nil, nil, 49 ]
70
+ nil, nil, nil, nil, nil, nil, nil, nil, 50 ]
71
71
 
72
72
  racc_goto_check = [
73
- 2, 10, 1, 12, nil, nil, nil, nil, 10, nil,
73
+ 1, 9, 11, nil, nil, nil, nil, nil, 9, nil,
74
74
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
75
75
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
76
76
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
77
- nil, nil, nil, nil, nil, nil, nil, 2 ]
77
+ nil, nil, nil, nil, nil, nil, nil, nil, 1 ]
78
78
 
79
79
  racc_goto_pointer = [
80
- nil, 2, 0, nil, nil, nil, nil, nil, nil, nil,
81
- -38, nil, -33 ]
80
+ nil, 0, nil, nil, nil, nil, nil, nil, nil, -41,
81
+ nil, -37 ]
82
82
 
83
83
  racc_goto_default = [
84
- nil, nil, 45, 11, 13, 15, 16, 2, 3, 4,
85
- nil, 44, nil ]
84
+ nil, 48, 8, 10, 12, 14, 15, 2, 3, nil,
85
+ 47, nil ]
86
86
 
87
87
  racc_reduce_table = [
88
88
  0, 0, :racc_error,
89
89
  2, 16, :_reduce_1,
90
- 1, 17, :_reduce_2,
91
- 1, 17, :_reduce_3,
92
- 1, 17, :_reduce_4,
93
- 1, 17, :_reduce_5,
94
- 1, 17, :_reduce_6,
95
- 1, 17, :_reduce_7,
90
+ 2, 16, :_reduce_2,
91
+ 2, 16, :_reduce_3,
92
+ 2, 16, :_reduce_4,
93
+ 2, 16, :_reduce_5,
94
+ 1, 16, :_reduce_6,
95
+ 1, 16, :_reduce_7,
96
96
  1, 17, :_reduce_8,
97
- 1, 18, :_reduce_9,
97
+ 3, 18, :_reduce_9,
98
98
  3, 19, :_reduce_10,
99
99
  3, 20, :_reduce_11,
100
- 3, 21, :_reduce_12,
101
- 5, 23, :_reduce_13,
102
- 11, 24, :_reduce_14,
103
- 2, 25, :_reduce_15,
104
- 0, 25, :_reduce_16,
105
- 4, 26, :_reduce_17,
106
- 0, 27, :_reduce_18,
107
- 8, 22, :_reduce_19 ]
100
+ 5, 21, :_reduce_12,
101
+ 11, 23, :_reduce_13,
102
+ 2, 24, :_reduce_14,
103
+ 0, 24, :_reduce_15,
104
+ 2, 25, :_reduce_16,
105
+ 0, 26, :_reduce_17,
106
+ 8, 22, :_reduce_18 ]
108
107
 
109
- racc_reduce_n = 20
108
+ racc_reduce_n = 19
110
109
 
111
- racc_shift_n = 52
110
+ racc_shift_n = 53
112
111
 
113
112
  racc_token_table = {
114
113
  false => 0,
@@ -164,14 +163,13 @@ Racc_token_to_s_table = [
164
163
  "\"}\"",
165
164
  "\"a\"",
166
165
  "$start",
167
- "serialization",
168
166
  "data",
169
167
  "null",
170
168
  "bool",
171
169
  "integer",
172
170
  "double",
173
- "array",
174
171
  "string",
172
+ "array",
175
173
  "object",
176
174
  "attribute_list",
177
175
  "attribute",
@@ -190,141 +188,137 @@ module_eval(<<'.,.,', 'unserializer.y', 3)
190
188
  end
191
189
  .,.,
192
190
 
193
- module_eval(<<'.,.,', 'unserializer.y', 6)
191
+ module_eval(<<'.,.,', 'unserializer.y', 4)
194
192
  def _reduce_2(val, _values, result)
195
- result = val[0]
193
+ @object = val[0]
196
194
  result
197
195
  end
198
196
  .,.,
199
197
 
200
- module_eval(<<'.,.,', 'unserializer.y', 7)
198
+ module_eval(<<'.,.,', 'unserializer.y', 5)
201
199
  def _reduce_3(val, _values, result)
202
- result = val[0]
200
+ @object = val[0]
203
201
  result
204
202
  end
205
203
  .,.,
206
204
 
207
- module_eval(<<'.,.,', 'unserializer.y', 8)
205
+ module_eval(<<'.,.,', 'unserializer.y', 6)
208
206
  def _reduce_4(val, _values, result)
209
- result = val[0]
207
+ @object = val[0]
210
208
  result
211
209
  end
212
210
  .,.,
213
211
 
214
- module_eval(<<'.,.,', 'unserializer.y', 9)
212
+ module_eval(<<'.,.,', 'unserializer.y', 7)
215
213
  def _reduce_5(val, _values, result)
216
- result = val[0]
214
+ @object = val[0]
217
215
  result
218
216
  end
219
217
  .,.,
220
218
 
221
- module_eval(<<'.,.,', 'unserializer.y', 10)
219
+ module_eval(<<'.,.,', 'unserializer.y', 8)
222
220
  def _reduce_6(val, _values, result)
223
- result = val[0]
221
+ @object = val[0]
224
222
  result
225
223
  end
226
224
  .,.,
227
225
 
228
- module_eval(<<'.,.,', 'unserializer.y', 11)
226
+ module_eval(<<'.,.,', 'unserializer.y', 9)
229
227
  def _reduce_7(val, _values, result)
230
- result = val[0]
228
+ @object = val[0]
231
229
  result
232
230
  end
233
231
  .,.,
234
232
 
235
233
  module_eval(<<'.,.,', 'unserializer.y', 12)
236
234
  def _reduce_8(val, _values, result)
237
- result = val[0]
235
+ result = nil
238
236
  result
239
237
  end
240
238
  .,.,
241
239
 
242
240
  module_eval(<<'.,.,', 'unserializer.y', 15)
243
241
  def _reduce_9(val, _values, result)
244
- result = nil
242
+ result = Integer(val[2]) > 0
245
243
  result
246
244
  end
247
245
  .,.,
248
246
 
249
247
  module_eval(<<'.,.,', 'unserializer.y', 18)
250
248
  def _reduce_10(val, _values, result)
251
- result = Integer(val[2]) > 0
249
+ result = Integer(val[2])
252
250
  result
253
251
  end
254
252
  .,.,
255
253
 
256
254
  module_eval(<<'.,.,', 'unserializer.y', 21)
257
255
  def _reduce_11(val, _values, result)
258
- result = Integer(val[2])
256
+ result = Float(val[2])
259
257
  result
260
258
  end
261
259
  .,.,
262
260
 
263
261
  module_eval(<<'.,.,', 'unserializer.y', 24)
264
262
  def _reduce_12(val, _values, result)
265
- result = Float(val[2])
266
- result
267
- end
268
- .,.,
269
-
270
- module_eval(<<'.,.,', 'unserializer.y', 27)
271
- def _reduce_13(val, _values, result)
272
263
  result = val[4]
273
264
  result
274
265
  end
275
266
  .,.,
276
267
 
277
- module_eval(<<'.,.,', 'unserializer.y', 32)
278
- def _reduce_14(val, _values, result)
279
- if Object.const_defined?(val[4])
268
+ module_eval(<<'.,.,', 'unserializer.y', 29)
269
+ def _reduce_13(val, _values, result)
270
+ if eval("defined?(#{val[4]})")
280
271
  result = Object.const_get(val[4]).new
281
272
 
282
273
  val[9].each do |(attr_name, value)|
283
- result.instance_variable_set("@#{attr_name}", value)
274
+ result.instance_variable_set("@#{attr_name.gsub(/(^\*)|\0/, '')}", value)
284
275
  end
285
276
  else
286
- result = Struct.new(val[4], *val[9].map { |(k,v)| k.to_sym }).new(*val[9].map { |(k,v)| v })
277
+ klass_name = val[4].gsub(/^Struct::/, '')
278
+ result = Struct.new(klass_name, *val[9].map { |(k,v)| k.gsub(/(^\*)|\0/, '').to_sym }).new(*val[9].map { |(k,v)| v })
279
+ result.instance_variable_set("@_php_class", klass_name)
287
280
  end
288
281
 
289
282
  result
290
283
  end
291
284
  .,.,
292
285
 
293
- module_eval(<<'.,.,', 'unserializer.y', 44)
294
- def _reduce_15(val, _values, result)
286
+ module_eval(<<'.,.,', 'unserializer.y', 43)
287
+ def _reduce_14(val, _values, result)
295
288
  result = val[0] << val[1]
296
289
  result
297
290
  end
298
291
  .,.,
299
292
 
300
- module_eval(<<'.,.,', 'unserializer.y', 45)
301
- def _reduce_16(val, _values, result)
293
+ module_eval(<<'.,.,', 'unserializer.y', 44)
294
+ def _reduce_15(val, _values, result)
302
295
  result = []
303
296
  result
304
297
  end
305
298
  .,.,
306
299
 
307
- module_eval(<<'.,.,', 'unserializer.y', 48)
308
- def _reduce_17(val, _values, result)
309
- @numeric_array = false unless val[0].is_a?(Integer); result = [val[0], val[2]]
300
+ module_eval(<<'.,.,', 'unserializer.y', 47)
301
+ def _reduce_16(val, _values, result)
302
+ @numeric_array = false unless val[0].is_a?(Integer); result = [val[0], val[1]]
310
303
  result
311
304
  end
312
305
  .,.,
313
306
 
314
- module_eval(<<'.,.,', 'unserializer.y', 51)
315
- def _reduce_18(val, _values, result)
307
+ module_eval(<<'.,.,', 'unserializer.y', 50)
308
+ def _reduce_17(val, _values, result)
316
309
  @numeric_array = true
317
310
  result
318
311
  end
319
312
  .,.,
320
313
 
321
- module_eval(<<'.,.,', 'unserializer.y', 53)
322
- def _reduce_19(val, _values, result)
314
+ module_eval(<<'.,.,', 'unserializer.y', 52)
315
+ def _reduce_18(val, _values, result)
323
316
  if @numeric_array
324
317
  result = []
325
318
  val[6].each { |(i,v)| result[i] = v }
326
319
  else
327
- result = Hash[*val[6].flatten]
320
+ result = {}
321
+ val[6].each { |(k, v)| result[k] = v}
328
322
  end
329
323
 
330
324
  result
@@ -1,16 +1,13 @@
1
1
  class PhpSerialization::Unserializer
2
2
  rule
3
3
 
4
- serialization : data ';' { @object = val[0] }
5
- ;
6
-
7
- data : null { result = val[0] }
8
- | bool { result = val[0] }
9
- | integer { result = val[0] }
10
- | double { result = val[0] }
11
- | array { result = val[0] }
12
- | string { result = val[0] }
13
- | object { result = val[0] }
4
+ data : null ';' { @object = val[0] }
5
+ | bool ';' { @object = val[0] }
6
+ | integer ';' { @object = val[0] }
7
+ | double ';' { @object = val[0] }
8
+ | string ';' { @object = val[0] }
9
+ | array { @object = val[0] }
10
+ | object { @object = val[0] }
14
11
  ;
15
12
 
16
13
  null : 'N' { result = nil }
@@ -30,14 +27,16 @@ rule
30
27
 
31
28
  object : 'O' ':' NUMBER ':' STRING ':' NUMBER ':' '{' attribute_list '}'
32
29
  {
33
- if Object.const_defined?(val[4])
30
+ if eval("defined?(#{val[4]})")
34
31
  result = Object.const_get(val[4]).new
35
32
 
36
33
  val[9].each do |(attr_name, value)|
37
- result.instance_variable_set("@#{attr_name}", value)
34
+ result.instance_variable_set("@#{attr_name.gsub(/(^\*)|\0/, '')}", value)
38
35
  end
39
36
  else
40
- result = Struct.new(val[4], *val[9].map { |(k,v)| k.to_sym }).new(*val[9].map { |(k,v)| v })
37
+ klass_name = val[4].gsub(/^Struct::/, '')
38
+ result = Struct.new(klass_name, *val[9].map { |(k,v)| k.gsub(/(^\*)|\0/, '').to_sym }).new(*val[9].map { |(k,v)| v })
39
+ result.instance_variable_set("@_php_class", klass_name)
41
40
  end
42
41
  }
43
42
  ;
@@ -46,7 +45,7 @@ rule
46
45
  | { result = [] }
47
46
  ;
48
47
 
49
- attribute : data ';' data ';' { @numeric_array = false unless val[0].is_a?(Integer); result = [val[0], val[2]] }
48
+ attribute : data data { @numeric_array = false unless val[0].is_a?(Integer); result = [val[0], val[1]] }
50
49
  ;
51
50
 
52
51
  array : 'a' ':' NUMBER ':' '{' { @numeric_array = true } attribute_list '}'
@@ -55,7 +54,8 @@ rule
55
54
  result = []
56
55
  val[6].each { |(i,v)| result[i] = v }
57
56
  else
58
- result = Hash[*val[6].flatten]
57
+ result = {}
58
+ val[6].each { |(k, v)| result[k] = v}
59
59
  end
60
60
  }
61
61
  ;
@@ -80,4 +80,4 @@ require 'php_serialization/tokenizer'
80
80
 
81
81
  def next_token
82
82
  @tokenizer.next_token
83
- end
83
+ end
@@ -31,7 +31,7 @@ module PhpSessionSerialization
31
31
  def load(str)
32
32
  hash = {}
33
33
 
34
- while str =~ /^([^|]+)\|(.*?;)(?=[^;|]+\||$)/
34
+ while str =~ /^([^|]+)\|(.*?[;}])(?=[^;}|]+\||$)/
35
35
  hash[$1] = PhpSerialization.load($2)
36
36
  str = $'
37
37
  end
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{php-serialization}
8
- s.version = "0.4.0"
8
+ s.version = "0.5.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Rodrigo Kochenburger"]
12
- s.date = %q{2009-10-05}
12
+ s.date = %q{2009-12-18}
13
13
  s.description = %q{Pure Ruby implementation of php's methods: serialize() and unserializer()}
14
14
  s.email = %q{divoxx@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
41
41
  s.homepage = %q{http://github.com/divoxx/ruby-php-serialization}
42
42
  s.rdoc_options = ["--charset=UTF-8"]
43
43
  s.require_paths = ["lib"]
44
- s.rubygems_version = %q{1.3.4}
44
+ s.rubygems_version = %q{1.3.5}
45
45
  s.summary = %q{PHP's serialization implementation for ruby}
46
46
  s.test_files = [
47
47
  "spec/serialization_spec.rb",
@@ -69,3 +69,4 @@ Gem::Specification.new do |s|
69
69
  s.add_dependency(%q<racc>, [">= 0"])
70
70
  end
71
71
  end
72
+
@@ -26,11 +26,11 @@ describe "Serialization" do
26
26
  end
27
27
 
28
28
  it "should unzerialize an array" do
29
- PhpSerialization.dump([true, "foo"]).should == 'a:2:{i:0;b:1;i:1;s:3:"foo";};'
29
+ PhpSerialization.dump([true, "foo"]).should == 'a:2:{i:0;b:1;i:1;s:3:"foo";}'
30
30
  end
31
31
 
32
32
  it "should serialize a hash" do
33
- PhpSerialization.dump("name" => "Rodrigo", "age" => 23).should == 'a:2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;};'
33
+ PhpSerialization.dump("name" => "Rodrigo", "age" => 23).should == 'a:2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}'
34
34
  end
35
35
 
36
36
  it "should serialize object with class existant" do
@@ -42,7 +42,7 @@ describe "Serialization" do
42
42
  person.name = "Rodrigo"
43
43
  person.age = 23
44
44
 
45
- PhpSerialization.dump(person).should == 'O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;};'
45
+ PhpSerialization.dump(person).should == 'O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}'
46
46
 
47
47
  Object.send(:remove_const, :Person)
48
48
  end
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + "/spec_helper"
2
2
 
3
3
  describe "Session serialization" do
4
4
  it "should store session correctly" do
5
- PhpSessionSerialization.load("userId|i:123;store|s:3:\"foo\";someArr|a:2:{i:0;b:1;i:1;s:3:\"foo\";};").should == {
5
+ PhpSessionSerialization.load("userId|i:123;store|s:3:\"foo\";someArr|a:2:{i:0;b:1;i:1;s:3:\"foo\";}").should == {
6
6
  "userId" => 123,
7
7
  "store" => "foo",
8
8
  "someArr" => [true, "foo"]
@@ -22,29 +22,28 @@ describe "Unserialization" do
22
22
  end
23
23
 
24
24
  it "should unzerialize an array" do
25
- PhpSerialization.load('a:2:{i:0;b:1;i:1;s:3:"foo";};').should == [true, "foo"]
25
+ PhpSerialization.load('a:2:{i:0;b:1;i:1;s:3:"foo";}').should == [true, "foo"]
26
26
  end
27
27
 
28
28
  it "should unserialize a hash" do
29
- PhpSerialization.load('a:2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;};').should == {"name" => "Rodrigo", "age" => 23}
29
+ PhpSerialization.load('a:2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}').should == {"name" => "Rodrigo", "age" => 23}
30
30
  end
31
31
 
32
32
  it "should unserialize object with class existant" do
33
33
  class Person
34
- attr_accessor :name, :age
34
+ attr_accessor :name, :age, :gender
35
35
  end
36
36
 
37
- person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;};')
37
+ person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')
38
38
  person.should be_instance_of(Person)
39
39
  person.name.should == "Rodrigo"
40
40
  person.age.should == 23
41
41
 
42
-
43
42
  Object.send(:remove_const, :Person)
44
43
  end
45
44
 
46
45
  it "should unserialize object without class as a struct" do
47
- person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;};')
46
+ person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')
48
47
  person.should be_instance_of(Struct::Person)
49
48
  person.name.should == "Rodrigo"
50
49
  person.age.should == 23
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: php-serialization
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Kochenburger
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-05 00:00:00 -03:00
12
+ date: 2009-12-18 00:00:00 -02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  requirements: []
97
97
 
98
98
  rubyforge_project:
99
- rubygems_version: 1.3.4
99
+ rubygems_version: 1.3.5
100
100
  signing_key:
101
101
  specification_version: 3
102
102
  summary: PHP's serialization implementation for ruby