birkirb-acts_as_serializable 0.1.4 → 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/VERSION +1 -1
- data/acts_as_serializable.gemspec +10 -15
- data/lib/acts_as_serializable.rb +3 -6
- 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 +13 -14
- 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 -15
- data/lib/builder/hash_structure.rb +0 -7
- data/lib/builder/json_format.rb +0 -7
- data/lib/builder/xml_markup.rb +0 -7
- data/spec/builder_patch_spec.rb +0 -19
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,16 +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/
|
|
24
|
-
"lib/
|
|
25
|
-
"lib/builder/xml_markup.rb",
|
|
26
|
-
"lib/version.rb",
|
|
27
|
-
"lib/versions.rb",
|
|
23
|
+
"lib/serializable/version.rb",
|
|
24
|
+
"lib/serializable/versions.rb",
|
|
28
25
|
"spec/acts_as_serializable_spec.rb",
|
|
29
|
-
"spec/app/serializations/test_rails_model/
|
|
30
|
-
"spec/app/serializations/test_rails_model/
|
|
31
|
-
"spec/app/serializations/test_rails_model/
|
|
32
|
-
"spec/builder_patch_spec.rb",
|
|
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",
|
|
33
29
|
"spec/serializations/test_model/version_1_0_0.rb",
|
|
34
30
|
"spec/serializations/test_model/version_1_5.rb",
|
|
35
31
|
"spec/serializations/test_model/version_2_1.rb",
|
|
@@ -48,14 +44,13 @@ Gem::Specification.new do |s|
|
|
|
48
44
|
"spec/spec_helper.rb",
|
|
49
45
|
"spec/acts_as_serializable_spec.rb",
|
|
50
46
|
"spec/versions_spec.rb",
|
|
51
|
-
"spec/builder_patch_spec.rb",
|
|
52
47
|
"spec/version_spec.rb",
|
|
53
48
|
"spec/serializations/test_model/version_1_0_0.rb",
|
|
54
49
|
"spec/serializations/test_model/version_2_1.rb",
|
|
55
50
|
"spec/serializations/test_model/version_1_5.rb",
|
|
56
|
-
"spec/app/serializations/test_rails_model/
|
|
57
|
-
"spec/app/serializations/test_rails_model/
|
|
58
|
-
"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"
|
|
59
54
|
]
|
|
60
55
|
|
|
61
56
|
if s.respond_to? :specification_version then
|
data/lib/acts_as_serializable.rb
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
require 'jsonbuilder'
|
|
2
2
|
require 'active_support'
|
|
3
3
|
require 'find'
|
|
4
|
-
require File.join(File.dirname(__FILE__), 'builder/xml_markup')
|
|
5
|
-
require File.join(File.dirname(__FILE__), 'builder/json_format')
|
|
6
|
-
require File.join(File.dirname(__FILE__), 'builder/hash_structure')
|
|
7
4
|
|
|
8
5
|
module Serializable
|
|
9
6
|
SERIALIZE_TO_VERSION_REGEXP = /^serialize_to_version_((:?\d+_?)+)$/
|
|
@@ -35,7 +32,7 @@ module Serializable
|
|
|
35
32
|
Find.find(serialization_directory) do |path|
|
|
36
33
|
if File.file?(path) && versioned_klass = path.match(SERIALIZED_CLASS_NAME_REGEXP)
|
|
37
34
|
require path
|
|
38
|
-
klass =
|
|
35
|
+
klass = Serializations.const_get("#{klass_name}").const_get("Version_#{versioned_klass[1]}")
|
|
39
36
|
if klass && klass.respond_to?(:serialize)
|
|
40
37
|
define_local_serialization_method(versioned_klass[1])
|
|
41
38
|
end
|
|
@@ -74,7 +71,7 @@ module Serializable
|
|
|
74
71
|
def define_local_serialization_method(method_version)
|
|
75
72
|
class_eval <<-EOV
|
|
76
73
|
def serialize_to_version_#{method_version}(builder, options)
|
|
77
|
-
|
|
74
|
+
Serializations::#{self.name}::Version_#{method_version}.serialize(self, builder, options)
|
|
78
75
|
end
|
|
79
76
|
EOV
|
|
80
77
|
@serialization_versions << Version.new(method_version)
|
|
@@ -98,7 +95,7 @@ module Serializable
|
|
|
98
95
|
end
|
|
99
96
|
|
|
100
97
|
def to_json(options = {})
|
|
101
|
-
serialize(Builder::JsonFormat.new, options)
|
|
98
|
+
serialize(Builder::JsonFormat.new, options).to_json
|
|
102
99
|
end
|
|
103
100
|
|
|
104
101
|
def to_xml(options = {})
|
|
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
|
|
@@ -112,7 +111,7 @@ describe Serializable, 'when included in a class that has multiple versioned ser
|
|
|
112
111
|
klass = SerializableObject.new
|
|
113
112
|
|
|
114
113
|
klass.serialize_for(Builder::XmlMarkup.new).should == "This is version 2.1"
|
|
115
|
-
klass.serialize_for(Builder::JsonFormat.new).should == "This is version 2.1"
|
|
114
|
+
klass.serialize_for(Builder::JsonFormat.new).should == "\"This is version 2.1\""
|
|
116
115
|
klass.serialize_for(Builder::HashStructure.new).should == "This is version 2.1"
|
|
117
116
|
end
|
|
118
117
|
end
|
|
@@ -148,7 +147,7 @@ describe Serializable, 'when included in a class that has multiple serialization
|
|
|
148
147
|
klass = TestModel.new
|
|
149
148
|
|
|
150
149
|
klass.to_xml(:version => '1.0.0').should == "This is version 1.0.0 for TestModel"
|
|
151
|
-
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\""
|
|
152
151
|
klass.to_hash(:version => '2.1.0').should == "This is version 2.1 for TestModel"
|
|
153
152
|
end
|
|
154
153
|
|
|
@@ -156,7 +155,7 @@ describe Serializable, 'when included in a class that has multiple serialization
|
|
|
156
155
|
klass = TestModel.new
|
|
157
156
|
|
|
158
157
|
klass.to_xml(:version => '1.4.0').should == "This is version 1.0.0 for TestModel"
|
|
159
|
-
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\""
|
|
160
159
|
end
|
|
161
160
|
|
|
162
161
|
it 'should raise an error if no corresponding version exists' do
|
|
@@ -185,7 +184,7 @@ describe Serializable, 'when included in a class that has multiple serialization
|
|
|
185
184
|
klass = TestRailsModel.new
|
|
186
185
|
|
|
187
186
|
klass.to_xml(:version => '1.0.0').should == "This is version 1.0.0 for TestRailsModel"
|
|
188
|
-
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\""
|
|
189
188
|
klass.to_hash(:version => '2.1.0').should == "This is version 2.1 for TestRailsModel"
|
|
190
189
|
end
|
|
191
190
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: birkirb-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 -07:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -48,16 +48,12 @@ files:
|
|
|
48
48
|
- acts_as_serializable.gemspec
|
|
49
49
|
- init.rb
|
|
50
50
|
- lib/acts_as_serializable.rb
|
|
51
|
-
- lib/
|
|
52
|
-
- lib/
|
|
53
|
-
- lib/builder/xml_markup.rb
|
|
54
|
-
- lib/version.rb
|
|
55
|
-
- lib/versions.rb
|
|
51
|
+
- lib/serializable/version.rb
|
|
52
|
+
- lib/serializable/versions.rb
|
|
56
53
|
- spec/acts_as_serializable_spec.rb
|
|
57
|
-
- spec/app/serializations/test_rails_model/
|
|
58
|
-
- spec/app/serializations/test_rails_model/
|
|
59
|
-
- spec/app/serializations/test_rails_model/
|
|
60
|
-
- spec/builder_patch_spec.rb
|
|
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
|
|
61
57
|
- spec/serializations/test_model/version_1_0_0.rb
|
|
62
58
|
- spec/serializations/test_model/version_1_5.rb
|
|
63
59
|
- spec/serializations/test_model/version_2_1.rb
|
|
@@ -94,11 +90,10 @@ test_files:
|
|
|
94
90
|
- spec/spec_helper.rb
|
|
95
91
|
- spec/acts_as_serializable_spec.rb
|
|
96
92
|
- spec/versions_spec.rb
|
|
97
|
-
- spec/builder_patch_spec.rb
|
|
98
93
|
- spec/version_spec.rb
|
|
99
94
|
- spec/serializations/test_model/version_1_0_0.rb
|
|
100
95
|
- spec/serializations/test_model/version_2_1.rb
|
|
101
96
|
- spec/serializations/test_model/version_1_5.rb
|
|
102
|
-
- spec/app/serializations/test_rails_model/
|
|
103
|
-
- spec/app/serializations/test_rails_model/
|
|
104
|
-
- 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
|
data/lib/builder/json_format.rb
DELETED
data/lib/builder/xml_markup.rb
DELETED
data/spec/builder_patch_spec.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
require 'spec/spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Builder::XmlMarkup, 'having been patched' do
|
|
4
|
-
it 'should support #serialization_method' do
|
|
5
|
-
Builder::XmlMarkup.new.serialization_method!.should == :to_xml
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
describe Builder::HashStructure, 'having been patched' do
|
|
10
|
-
it 'should support #serialization_method' do
|
|
11
|
-
Builder::HashStructure.new.serialization_method!.should == :to_hash
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
describe Builder::JsonFormat, 'having been patched' do
|
|
16
|
-
it 'should support #serialization_method' do
|
|
17
|
-
Builder::JsonFormat.new.serialization_method!.should == :to_json
|
|
18
|
-
end
|
|
19
|
-
end
|