serialize 1.0.0 → 1.1.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.
- data/Changelog.md +5 -0
- data/README.md +10 -10
- data/Rakefile +4 -0
- data/lib/serialize/generator.rb +4 -1
- data/lib/serialize/version.rb +1 -1
- data/test/serialize_test.rb +6 -0
- data/test/structure_benchmark.rb +64 -0
- data/test/support/user_serializer.rb +8 -0
- metadata +4 -2
data/Changelog.md
CHANGED
data/README.md
CHANGED
@@ -20,23 +20,23 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
class UserSerializer < Serialize
|
22
22
|
# create a default serialization structure
|
23
|
-
structure do
|
23
|
+
structure do |user|
|
24
24
|
{
|
25
|
-
:name => name,
|
26
|
-
:gender => gender,
|
27
|
-
:email => email
|
25
|
+
:name => user.name,
|
26
|
+
:gender => user.gender,
|
27
|
+
:email => user.email
|
28
28
|
}
|
29
29
|
end
|
30
30
|
|
31
31
|
# create a named serialization structure
|
32
32
|
structure :extended do
|
33
33
|
{
|
34
|
-
:name => name,
|
35
|
-
:gender => gender,
|
36
|
-
:email => email,
|
37
|
-
:height => height,
|
38
|
-
:eye_color => eye_color,
|
39
|
-
:hair_color => hair_color
|
34
|
+
:name => user.name,
|
35
|
+
:gender => user.gender,
|
36
|
+
:email => user.email,
|
37
|
+
:height => user.height,
|
38
|
+
:eye_color => user.eye_color,
|
39
|
+
:hair_color => user.hair_color
|
40
40
|
}
|
41
41
|
end
|
42
42
|
end
|
data/Rakefile
CHANGED
data/lib/serialize/generator.rb
CHANGED
data/lib/serialize/version.rb
CHANGED
data/test/serialize_test.rb
CHANGED
@@ -21,6 +21,12 @@ class SerializeTest < MiniTest::Unit::TestCase
|
|
21
21
|
assert_equal @user_hash.to_json, serializer.to_json
|
22
22
|
end
|
23
23
|
|
24
|
+
def test_new_json_serialization
|
25
|
+
@user_hash[:email] = @user.email
|
26
|
+
serializer = UserSerializer.new(@user, as: :new)
|
27
|
+
assert_equal @user_hash.to_json, serializer.to_json
|
28
|
+
end
|
29
|
+
|
24
30
|
def test_collection_json_serialization
|
25
31
|
serializer = UserSerializer.new(@collection)
|
26
32
|
assert_equal @hash_collection.to_json, serializer.to_json
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require "serialize"
|
2
|
+
require "support/mock_user"
|
3
|
+
require "support/mock_resource"
|
4
|
+
require "support/user_serializer"
|
5
|
+
require "support/resource_serializer"
|
6
|
+
|
7
|
+
require "minitest/benchmark"
|
8
|
+
require "minitest/autorun"
|
9
|
+
|
10
|
+
class BenchSerializationTest < MiniTest::Unit::TestCase
|
11
|
+
def self.bench_range
|
12
|
+
[100, 1_000, 10_000, 100_000, 1_000_000]
|
13
|
+
end
|
14
|
+
|
15
|
+
def bench_with_method_missing
|
16
|
+
assert_performance_linear do |n|
|
17
|
+
collection = n.times.map do
|
18
|
+
User.new(:name => "John Smith", :age => "27", :gender => "M")
|
19
|
+
end
|
20
|
+
|
21
|
+
UserSerializer.new(collection).to("application/json")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def bench_without_method_missing
|
26
|
+
assert_performance_linear do |n|
|
27
|
+
collection = n.times.map do
|
28
|
+
User.new(:name => "John Smith", :age => "27", :gender => "M")
|
29
|
+
end
|
30
|
+
|
31
|
+
UserSerializer.new(collection, :as => :new).to("application/json")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class User
|
36
|
+
attr :name
|
37
|
+
attr :age
|
38
|
+
attr :gender
|
39
|
+
|
40
|
+
def initialize(args={})
|
41
|
+
@name = args[:name]
|
42
|
+
@age = args[:age]
|
43
|
+
@gender = args[:gender]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
class UserSerializer < Serialize
|
48
|
+
structure do
|
49
|
+
{
|
50
|
+
:name => name,
|
51
|
+
:age => age,
|
52
|
+
:gender => gender
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
structure(:new) do |user|
|
57
|
+
{
|
58
|
+
:name => user.name,
|
59
|
+
:age => user.age,
|
60
|
+
:gender => user.gender
|
61
|
+
}
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serialize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: yajl-ruby
|
@@ -51,6 +51,7 @@ files:
|
|
51
51
|
- test/all.rb
|
52
52
|
- test/serialize/generator_test.rb
|
53
53
|
- test/serialize_test.rb
|
54
|
+
- test/structure_benchmark.rb
|
54
55
|
- test/support/mock_resource.rb
|
55
56
|
- test/support/mock_user.rb
|
56
57
|
- test/support/resource_serializer.rb
|
@@ -84,6 +85,7 @@ test_files:
|
|
84
85
|
- test/all.rb
|
85
86
|
- test/serialize/generator_test.rb
|
86
87
|
- test/serialize_test.rb
|
88
|
+
- test/structure_benchmark.rb
|
87
89
|
- test/support/mock_resource.rb
|
88
90
|
- test/support/mock_user.rb
|
89
91
|
- test/support/resource_serializer.rb
|