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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fbaa47ace07160d062385761943fa8e812e7605e
4
- data.tar.gz: 673809f229f3a3bfd1edabe85bd0704740d94939
3
+ metadata.gz: 329daca097404808aa55a7662d643ac05b6874f4
4
+ data.tar.gz: 957d356371901b59b588eb4677e27c3a047cf855
5
5
  SHA512:
6
- metadata.gz: c7a2b3af43bd8330bd99b3d2cbf5011025c1f800af4a67b6a5a185bfabab1cb4baf04a3a1812a216b54bbf6b7310921b21e89c11c2919f4484c62184385bfad7
7
- data.tar.gz: 0d93059a5348ea218b6d58dfe4ef89fc2eedea27337e9fa384494a5e4070f11d757812a41988d61d9b106a2bbb5b8728109d2d13e0f31e32b15e48837ec4e49f
6
+ metadata.gz: 8080db24eda3c6dd739444e59566d5180c32ae537038661483b6361e9cfc00860f874c5edbb6fb4e2724da75610f907df750131a45f16e1c956efc81e943d01d
7
+ data.tar.gz: 861d1ae8afcbd380de2a01925c3ba3ce24176bc904efe4312b0361ee854098fe34412e49c262212016b28d47c8c8374f42d996ce24093930a7d8b4a7b790ca23
@@ -0,0 +1,3 @@
1
+ Autotest.add_hook :initialize do |at|
2
+ %w{.git coverage}.each {|exception| at.add_exception(exception)}
3
+ end
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.1
4
+ - 2.1.0
5
+ - 2.0.0
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem 'coveralls', require: false
3
4
  # Specify your gem's dependencies in structure_mapper.gemspec
4
5
  gemspec
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
@@ -1 +1,5 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+ RSpec::Core::RakeTask.new('spec')
4
+
5
+ task :default => :spec
@@ -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
@@ -1,3 +1,3 @@
1
1
  module StructureMapper
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -2,3 +2,7 @@ require 'json'
2
2
  require 'simplecov'
3
3
  SimpleCov.start
4
4
  require 'structure_mapper'
5
+ if ENV['TRAVIS']
6
+ require 'coveralls'
7
+ Coveralls.wear!
8
+ end
@@ -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.1
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-09 00:00:00.000000000 Z
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
- - .gitignore
91
- - .rspec
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/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.0.6
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/structure_mapper_spec.rb
130
+ - spec/structure_mapper_spec.rb