structure_mapper 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.autotest +3 -0
- data/.travis.yml +5 -0
- data/Gemfile +1 -0
- data/README.md +5 -0
- data/Rakefile +4 -0
- data/lib/structure_mapper.rb +9 -0
- data/lib/structure_mapper/version.rb +1 -1
- data/spec/spec_helper.rb +4 -0
- data/spec/{structure_mapper_spec.rb/structure_mapper_spec.rb → structure_mapper_spec.rb} +78 -0
- metadata +21 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 329daca097404808aa55a7662d643ac05b6874f4
|
4
|
+
data.tar.gz: 957d356371901b59b588eb4677e27c3a047cf855
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8080db24eda3c6dd739444e59566d5180c32ae537038661483b6361e9cfc00860f874c5edbb6fb4e2724da75610f907df750131a45f16e1c956efc81e943d01d
|
7
|
+
data.tar.gz: 861d1ae8afcbd380de2a01925c3ba3ce24176bc904efe4312b0361ee854098fe34412e49c262212016b28d47c8c8374f42d996ce24093930a7d8b4a7b790ca23
|
data/.autotest
ADDED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
[![Build Status](https://travis-ci.org/draganm/structure_mapper.png?branch=master)](https://travis-ci.org/draganm/structure_mapper)
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/structure_mapper.png)](http://badge.fury.io/rb/structure_mapper)
|
3
|
+
[![Code Climate](https://codeclimate.com/github/draganm/structure_mapper.png)](https://codeclimate.com/github/draganm/structure_mapper)
|
4
|
+
[![Coverage Status](https://coveralls.io/repos/draganm/structure_mapper/badge.png)](https://coveralls.io/r/draganm/structure_mapper)
|
5
|
+
|
1
6
|
# StructureMapper
|
2
7
|
|
3
8
|
Structure mapper is a generic mapper of nested data structures (Hash, Array, ...) to ruby objects using very simple but powerful syntax. Unlike other mappers that are tightly coupled with persistence (ActiceRecord, Mongomapper), StructureMapper does only one thing, but does it well.
|
data/Rakefile
CHANGED
data/lib/structure_mapper.rb
CHANGED
@@ -66,6 +66,15 @@ module StructureMapper
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
+
def == other
|
70
|
+
return false unless self.class == other.class
|
71
|
+
self.class.attributes.each do |name,_|
|
72
|
+
return false unless self.send(name) == other.send(name)
|
73
|
+
end
|
74
|
+
true
|
75
|
+
end
|
76
|
+
|
77
|
+
|
69
78
|
module ClassMethods
|
70
79
|
|
71
80
|
attr_reader :attributes
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,55 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
|
3
4
|
describe StructureMapper::Array do
|
4
5
|
|
6
|
+
|
7
|
+
describe :to_structure do
|
8
|
+
subject do
|
9
|
+
Class.new do
|
10
|
+
include StructureMapper::Array
|
11
|
+
attribute a: [String]
|
12
|
+
attribute b: {}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
it "should convert object to array" do
|
16
|
+
obj=subject.new
|
17
|
+
obj.a=['test']
|
18
|
+
obj.b={'c' => 'd'}
|
19
|
+
obj.to_structure.should == [["test"], {"c"=>"d"}]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe :== do
|
24
|
+
subject do
|
25
|
+
Class.new do
|
26
|
+
include StructureMapper::Array
|
27
|
+
attribute a: String
|
28
|
+
end
|
29
|
+
end
|
30
|
+
context "when data is different" do
|
31
|
+
it "should return false" do
|
32
|
+
v1=subject.new
|
33
|
+
v1.a='test1'
|
34
|
+
v2=subject.new
|
35
|
+
v2.a='test2'
|
36
|
+
v1.should_not == v2
|
37
|
+
end
|
38
|
+
end
|
39
|
+
context "when data is equal" do
|
40
|
+
|
41
|
+
it "should return true" do
|
42
|
+
v1=subject.new
|
43
|
+
v1.a='test'
|
44
|
+
v2=subject.new
|
45
|
+
v2.a='test'
|
46
|
+
v1.should == v2
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
5
53
|
describe :to_structure do
|
6
54
|
context "when object is mapped to hash" do
|
7
55
|
context "when object has one String property" do
|
@@ -191,6 +239,36 @@ end
|
|
191
239
|
|
192
240
|
describe StructureMapper::Hash do
|
193
241
|
|
242
|
+
|
243
|
+
describe :== do
|
244
|
+
subject do
|
245
|
+
Class.new do
|
246
|
+
include StructureMapper::Hash
|
247
|
+
attribute a: String
|
248
|
+
end
|
249
|
+
end
|
250
|
+
context "when data is different" do
|
251
|
+
it "should return false" do
|
252
|
+
v1=subject.new
|
253
|
+
v1.a='test1'
|
254
|
+
v2=subject.new
|
255
|
+
v2.a='test2'
|
256
|
+
v1.should_not == v2
|
257
|
+
end
|
258
|
+
end
|
259
|
+
context "when data is equal" do
|
260
|
+
|
261
|
+
it "should return true" do
|
262
|
+
v1=subject.new
|
263
|
+
v1.a='test'
|
264
|
+
v2=subject.new
|
265
|
+
v2.a='test'
|
266
|
+
v1.should == v2
|
267
|
+
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
194
272
|
describe :from_structure do
|
195
273
|
|
196
274
|
context "when hash has one attribute that is hash of String keys and mapped object values" do
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: structure_mapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dragan Milic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.5'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 2.14.1
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.14.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: autotest
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 4.4.6
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 4.4.6
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: simplecov
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
description: Mapper of data structures (Hash, Array, ... ) to ruby objects.
|
@@ -87,8 +87,10 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- .
|
91
|
-
- .
|
90
|
+
- ".autotest"
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
92
94
|
- Gemfile
|
93
95
|
- LICENSE.txt
|
94
96
|
- README.md
|
@@ -97,7 +99,7 @@ files:
|
|
97
99
|
- lib/structure_mapper.rb
|
98
100
|
- lib/structure_mapper/version.rb
|
99
101
|
- spec/spec_helper.rb
|
100
|
-
- spec/structure_mapper_spec.rb
|
102
|
+
- spec/structure_mapper_spec.rb
|
101
103
|
- structure_mapper.gemspec
|
102
104
|
homepage: ''
|
103
105
|
licenses:
|
@@ -109,20 +111,20 @@ require_paths:
|
|
109
111
|
- lib
|
110
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
111
113
|
requirements:
|
112
|
-
- -
|
114
|
+
- - ">="
|
113
115
|
- !ruby/object:Gem::Version
|
114
116
|
version: '0'
|
115
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
118
|
requirements:
|
117
|
-
- -
|
119
|
+
- - ">="
|
118
120
|
- !ruby/object:Gem::Version
|
119
121
|
version: '0'
|
120
122
|
requirements: []
|
121
123
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.
|
124
|
+
rubygems_version: 2.2.2
|
123
125
|
signing_key:
|
124
126
|
specification_version: 4
|
125
127
|
summary: Mapper of data structures (Hash, Array, ... ) to ruby objects.
|
126
128
|
test_files:
|
127
129
|
- spec/spec_helper.rb
|
128
|
-
- spec/structure_mapper_spec.rb
|
130
|
+
- spec/structure_mapper_spec.rb
|