acts_as_serializable 0.1.2 → 0.1.5
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.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/acts_as_serializable.gemspec +10 -10
- data/lib/acts_as_serializable.rb +8 -5
- data/lib/{version.rb → serializable/version.rb} +0 -0
- data/lib/{versions.rb → serializable/versions.rb} +0 -0
- data/spec/acts_as_serializable_spec.rb +20 -13
- data/spec/app/serializations/test_rails_model/{test_rails_model/version_1_0_0.rb → version_1_0_0.rb} +1 -1
- data/spec/app/serializations/test_rails_model/{test_rails_model/version_1_5.rb → version_1_5.rb} +1 -1
- data/spec/app/serializations/test_rails_model/{test_rails_model/version_2_1.rb → version_2_1.rb} +1 -1
- data/spec/serializations/test_model/version_1_0_0.rb +1 -1
- data/spec/serializations/test_model/version_1_5.rb +1 -1
- data/spec/serializations/test_model/version_2_1.rb +1 -1
- data/spec/spec_helper.rb +2 -2
- metadata +10 -10
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{acts_as_serializable}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Birkir A. Barkarson"]
|
9
|
-
s.date = %q{2009-06-
|
9
|
+
s.date = %q{2009-06-16}
|
10
10
|
s.description = %q{Easy versioning of serialization methods}
|
11
11
|
s.email = %q{birkirb@stoicviking.net}
|
12
12
|
s.extra_rdoc_files = [
|
@@ -20,12 +20,12 @@ Gem::Specification.new do |s|
|
|
20
20
|
"acts_as_serializable.gemspec",
|
21
21
|
"init.rb",
|
22
22
|
"lib/acts_as_serializable.rb",
|
23
|
-
"lib/version.rb",
|
24
|
-
"lib/versions.rb",
|
23
|
+
"lib/serializable/version.rb",
|
24
|
+
"lib/serializable/versions.rb",
|
25
25
|
"spec/acts_as_serializable_spec.rb",
|
26
|
-
"spec/app/serializations/test_rails_model/
|
27
|
-
"spec/app/serializations/test_rails_model/
|
28
|
-
"spec/app/serializations/test_rails_model/
|
26
|
+
"spec/app/serializations/test_rails_model/version_1_0_0.rb",
|
27
|
+
"spec/app/serializations/test_rails_model/version_1_5.rb",
|
28
|
+
"spec/app/serializations/test_rails_model/version_2_1.rb",
|
29
29
|
"spec/serializations/test_model/version_1_0_0.rb",
|
30
30
|
"spec/serializations/test_model/version_1_5.rb",
|
31
31
|
"spec/serializations/test_model/version_2_1.rb",
|
@@ -48,9 +48,9 @@ Gem::Specification.new do |s|
|
|
48
48
|
"spec/serializations/test_model/version_1_0_0.rb",
|
49
49
|
"spec/serializations/test_model/version_2_1.rb",
|
50
50
|
"spec/serializations/test_model/version_1_5.rb",
|
51
|
-
"spec/app/serializations/test_rails_model/
|
52
|
-
"spec/app/serializations/test_rails_model/
|
53
|
-
"spec/app/serializations/test_rails_model/
|
51
|
+
"spec/app/serializations/test_rails_model/version_1_0_0.rb",
|
52
|
+
"spec/app/serializations/test_rails_model/version_2_1.rb",
|
53
|
+
"spec/app/serializations/test_rails_model/version_1_5.rb"
|
54
54
|
]
|
55
55
|
|
56
56
|
if s.respond_to? :specification_version then
|
data/lib/acts_as_serializable.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'builder/xmlmarkup'
|
2
1
|
require 'jsonbuilder'
|
3
2
|
require 'active_support'
|
4
3
|
require 'find'
|
@@ -33,7 +32,7 @@ module Serializable
|
|
33
32
|
Find.find(serialization_directory) do |path|
|
34
33
|
if File.file?(path) && versioned_klass = path.match(SERIALIZED_CLASS_NAME_REGEXP)
|
35
34
|
require path
|
36
|
-
klass =
|
35
|
+
klass = Serializations.const_get("#{klass_name}").const_get("Version_#{versioned_klass[1]}")
|
37
36
|
if klass && klass.respond_to?(:serialize)
|
38
37
|
define_local_serialization_method(versioned_klass[1])
|
39
38
|
end
|
@@ -72,7 +71,7 @@ module Serializable
|
|
72
71
|
def define_local_serialization_method(method_version)
|
73
72
|
class_eval <<-EOV
|
74
73
|
def serialize_to_version_#{method_version}(builder, options)
|
75
|
-
|
74
|
+
Serializations::#{self.name}::Version_#{method_version}.serialize(self, builder, options)
|
76
75
|
end
|
77
76
|
EOV
|
78
77
|
@serialization_versions << Version.new(method_version)
|
@@ -92,11 +91,11 @@ module Serializable
|
|
92
91
|
# This module contains instance methods
|
93
92
|
module InstanceMethods
|
94
93
|
def to_hash(options = {})
|
95
|
-
serialize(Builder::
|
94
|
+
serialize(Builder::HashStructure.new, options)
|
96
95
|
end
|
97
96
|
|
98
97
|
def to_json(options = {})
|
99
|
-
serialize(Builder::
|
98
|
+
serialize(Builder::JsonFormat.new, options).to_json
|
100
99
|
end
|
101
100
|
|
102
101
|
def to_xml(options = {})
|
@@ -118,6 +117,10 @@ module Serializable
|
|
118
117
|
end
|
119
118
|
end
|
120
119
|
end
|
120
|
+
|
121
|
+
def serialize_for(builder, options = {})
|
122
|
+
self.send(builder.serialization_method!, options)
|
123
|
+
end
|
121
124
|
end
|
122
125
|
|
123
126
|
end
|
File without changes
|
File without changes
|
@@ -23,7 +23,7 @@ class WithSerialize < SerializableObject
|
|
23
23
|
acts_as_serializable
|
24
24
|
|
25
25
|
def serialize(builder, options)
|
26
|
-
builder
|
26
|
+
builder.test('value')
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -65,22 +65,21 @@ describe Serializable, 'if included in a class, then that class' do
|
|
65
65
|
|
66
66
|
context 'with the serialized method overriden to return the builder' do
|
67
67
|
|
68
|
-
it '#to_xml should return an Builder::XmlMarkup' do
|
68
|
+
it '#to_xml should return an Builder::XmlMarkup serialization' do
|
69
69
|
klass = WithSerialize.new
|
70
|
-
klass.to_xml.
|
70
|
+
klass.to_xml.should == "<test>value</test>"
|
71
71
|
end
|
72
72
|
|
73
|
-
it '#to_hash should return an Builder::
|
73
|
+
it '#to_hash should return an Builder::HashStructure serialization' do
|
74
74
|
klass = WithSerialize.new
|
75
|
-
klass.to_hash.
|
75
|
+
klass.to_hash.should == 'value'
|
76
76
|
end
|
77
77
|
|
78
|
-
it '#to_json should return an Builder::
|
78
|
+
it '#to_json should return an Builder::JsonFormat serialization' do
|
79
79
|
klass = WithSerialize.new
|
80
|
-
klass.to_json.
|
80
|
+
klass.to_json.should == '"value"'
|
81
81
|
end
|
82
82
|
end
|
83
|
-
|
84
83
|
end
|
85
84
|
|
86
85
|
describe Serializable, 'when included in a class that has multiple versioned serialization methods' do
|
@@ -91,7 +90,7 @@ describe Serializable, 'when included in a class that has multiple versioned ser
|
|
91
90
|
klass = SerializableObject.new
|
92
91
|
|
93
92
|
klass.to_xml(:version => '1.0.0').should == "This is version 1.0.0"
|
94
|
-
klass.to_json(:version => '1.5.0').should == "This is version 1.5.0"
|
93
|
+
klass.to_json(:version => '1.5.0').should == "\"This is version 1.5.0\""
|
95
94
|
klass.to_hash(:version => '2.1.0').should == "This is version 2.1"
|
96
95
|
end
|
97
96
|
|
@@ -99,7 +98,7 @@ describe Serializable, 'when included in a class that has multiple versioned ser
|
|
99
98
|
klass = SerializableObject.new
|
100
99
|
|
101
100
|
klass.to_xml(:version => '1.4.0').should == "This is version 1.0.0"
|
102
|
-
klass.to_json(:version => '3.1.0').should == "This is version 2.1"
|
101
|
+
klass.to_json(:version => '3.1.0').should == "\"This is version 2.1\""
|
103
102
|
end
|
104
103
|
|
105
104
|
it 'should raise an error if no corresponding version exists' do
|
@@ -107,6 +106,14 @@ describe Serializable, 'when included in a class that has multiple versioned ser
|
|
107
106
|
|
108
107
|
lambda { klass.to_hash(:version => '0.1.0') }.should raise_error(RuntimeError, "Version 0.1.0 given but no serialization method found")
|
109
108
|
end
|
109
|
+
|
110
|
+
it '#serialize_for should call a to_format methods for a given builder' do
|
111
|
+
klass = SerializableObject.new
|
112
|
+
|
113
|
+
klass.serialize_for(Builder::XmlMarkup.new).should == "This is version 2.1"
|
114
|
+
klass.serialize_for(Builder::JsonFormat.new).should == "\"This is version 2.1\""
|
115
|
+
klass.serialize_for(Builder::HashStructure.new).should == "This is version 2.1"
|
116
|
+
end
|
110
117
|
end
|
111
118
|
|
112
119
|
context 'and a to_format method is called with no version option' do
|
@@ -140,7 +147,7 @@ describe Serializable, 'when included in a class that has multiple serialization
|
|
140
147
|
klass = TestModel.new
|
141
148
|
|
142
149
|
klass.to_xml(:version => '1.0.0').should == "This is version 1.0.0 for TestModel"
|
143
|
-
klass.to_json(:version => '1.5.0').should == "This is version 1.5.0 for TestModel"
|
150
|
+
klass.to_json(:version => '1.5.0').should == "\"This is version 1.5.0 for TestModel\""
|
144
151
|
klass.to_hash(:version => '2.1.0').should == "This is version 2.1 for TestModel"
|
145
152
|
end
|
146
153
|
|
@@ -148,7 +155,7 @@ describe Serializable, 'when included in a class that has multiple serialization
|
|
148
155
|
klass = TestModel.new
|
149
156
|
|
150
157
|
klass.to_xml(:version => '1.4.0').should == "This is version 1.0.0 for TestModel"
|
151
|
-
klass.to_json(:version => '3.1.0').should == "This is version 2.1 for TestModel"
|
158
|
+
klass.to_json(:version => '3.1.0').should == "\"This is version 2.1 for TestModel\""
|
152
159
|
end
|
153
160
|
|
154
161
|
it 'should raise an error if no corresponding version exists' do
|
@@ -177,7 +184,7 @@ describe Serializable, 'when included in a class that has multiple serialization
|
|
177
184
|
klass = TestRailsModel.new
|
178
185
|
|
179
186
|
klass.to_xml(:version => '1.0.0').should == "This is version 1.0.0 for TestRailsModel"
|
180
|
-
klass.to_json(:version => '1.5.0').should == "This is version 1.5.0 for TestRailsModel"
|
187
|
+
klass.to_json(:version => '1.5.0').should == "\"This is version 1.5.0 for TestRailsModel\""
|
181
188
|
klass.to_hash(:version => '2.1.0').should == "This is version 2.1 for TestRailsModel"
|
182
189
|
end
|
183
190
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_serializable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Birkir A. Barkarson
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-06-
|
12
|
+
date: 2009-06-16 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -48,12 +48,12 @@ files:
|
|
48
48
|
- acts_as_serializable.gemspec
|
49
49
|
- init.rb
|
50
50
|
- lib/acts_as_serializable.rb
|
51
|
-
- lib/version.rb
|
52
|
-
- lib/versions.rb
|
51
|
+
- lib/serializable/version.rb
|
52
|
+
- lib/serializable/versions.rb
|
53
53
|
- spec/acts_as_serializable_spec.rb
|
54
|
-
- spec/app/serializations/test_rails_model/
|
55
|
-
- spec/app/serializations/test_rails_model/
|
56
|
-
- spec/app/serializations/test_rails_model/
|
54
|
+
- spec/app/serializations/test_rails_model/version_1_0_0.rb
|
55
|
+
- spec/app/serializations/test_rails_model/version_1_5.rb
|
56
|
+
- spec/app/serializations/test_rails_model/version_2_1.rb
|
57
57
|
- spec/serializations/test_model/version_1_0_0.rb
|
58
58
|
- spec/serializations/test_model/version_1_5.rb
|
59
59
|
- spec/serializations/test_model/version_2_1.rb
|
@@ -94,6 +94,6 @@ test_files:
|
|
94
94
|
- spec/serializations/test_model/version_1_0_0.rb
|
95
95
|
- spec/serializations/test_model/version_2_1.rb
|
96
96
|
- spec/serializations/test_model/version_1_5.rb
|
97
|
-
- spec/app/serializations/test_rails_model/
|
98
|
-
- spec/app/serializations/test_rails_model/
|
99
|
-
- spec/app/serializations/test_rails_model/
|
97
|
+
- spec/app/serializations/test_rails_model/version_1_0_0.rb
|
98
|
+
- spec/app/serializations/test_rails_model/version_2_1.rb
|
99
|
+
- spec/app/serializations/test_rails_model/version_1_5.rb
|