oat 0.5.0 → 0.6.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.
- checksums.yaml +5 -5
- data/.travis.yml +2 -28
- data/CHANGELOG.md +152 -84
- data/lib/oat/adapter.rb +1 -0
- data/lib/oat/adapters/json_api.rb +12 -11
- data/lib/oat/adapters/siren.rb +6 -2
- data/lib/oat/serializer.rb +24 -6
- data/lib/oat/version.rb +1 -1
- data/lib/support/class_attribute.rb +20 -49
- data/oat.gemspec +0 -1
- data/spec/adapters/siren_spec.rb +1 -0
- data/spec/fixtures.rb +3 -2
- metadata +3 -25
- data/LICENSE.txt +0 -22
- data/gemfiles/Gemfile.as-1.4.4 +0 -6
- data/gemfiles/Gemfile.as-2.3.x +0 -6
- data/gemfiles/Gemfile.as-3.0.x +0 -7
- data/gemfiles/Gemfile.as-3.1.x +0 -7
- data/gemfiles/Gemfile.as-3.2.x +0 -7
- data/gemfiles/Gemfile.as-4.0.x +0 -5
- data/gemfiles/Gemfile.as-4.1.x +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 81a5eec5265ffe5304b90205043dd56bde0d379466c598f233ab840b8998a5bd
|
|
4
|
+
data.tar.gz: 411ee0a41a93cd42d7a628b3bce59e5730276402ee743632d01cb4b5b3b5a0b4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4536b22318309566582ee14c37b5ee367d13f0e0d5d6b1486083951d9197d6d8181ccb1192c4fcf976f132875bdc5e6bd4956e4a4dd77df9bac152ebd54911d7
|
|
7
|
+
data.tar.gz: 2a068482ed4ef964b11f1ad7a7cdc6a88ac7b85c4ee524c886e5cd3b91c135d6288f1bbb652a82af553e002ebaef6fd6a3cb8ff4da7a584d199a3502d5de2891
|
data/.travis.yml
CHANGED
|
@@ -2,35 +2,9 @@ sudo: false
|
|
|
2
2
|
language: ruby
|
|
3
3
|
rvm:
|
|
4
4
|
- 2.1.2
|
|
5
|
-
- 2.0.0
|
|
6
5
|
- 1.9.3
|
|
7
|
-
- 1.9.2
|
|
8
|
-
- 1.8.7
|
|
9
|
-
- jruby-1.7.11
|
|
10
|
-
|
|
11
|
-
gemfile:
|
|
12
|
-
- gemfiles/Gemfile.as-3.0.x
|
|
13
|
-
- gemfiles/Gemfile.as-3.1.x
|
|
14
|
-
- gemfiles/Gemfile.as-3.2.x
|
|
15
|
-
- gemfiles/Gemfile.as-4.0.x
|
|
16
|
-
- gemfiles/Gemfile.as-4.1.x
|
|
17
6
|
|
|
18
7
|
matrix:
|
|
19
8
|
include:
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
- gemfile: gemfiles/Gemfile.as-2.3.x
|
|
23
|
-
rvm: 1.8.7
|
|
24
|
-
- gemfile: gemfiles/Gemfile.as-2.3.x
|
|
25
|
-
rvm: 1.9.2
|
|
26
|
-
- gemfile: gemfiles/Gemfile.as-2.3.x
|
|
27
|
-
rvm: 1.9.3
|
|
28
|
-
exclude:
|
|
29
|
-
- gemfile: gemfiles/Gemfile.as-4.0.x
|
|
30
|
-
rvm: 1.8.7
|
|
31
|
-
- gemfile: gemfiles/Gemfile.as-4.1.x
|
|
32
|
-
rvm: 1.8.7
|
|
33
|
-
- gemfile: gemfiles/Gemfile.as-4.0.x
|
|
34
|
-
rvm: 1.9.2
|
|
35
|
-
- gemfile: gemfiles/Gemfile.as-4.1.x
|
|
36
|
-
rvm: 1.9.2
|
|
9
|
+
- rvm: 1.9.3
|
|
10
|
+
- rvm: 2.1.2
|
data/CHANGELOG.md
CHANGED
|
@@ -1,150 +1,218 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Change Log
|
|
2
2
|
|
|
3
|
-
## [v0.
|
|
4
|
-
[Full Changelog](https://github.com/ismasan/oat/compare/v0.
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
## [v0.5.2](https://github.com/ismasan/oat/tree/v0.5.2) (2018-02-02)
|
|
4
|
+
[Full Changelog](https://github.com/ismasan/oat/compare/v0.5.1...v0.5.2)
|
|
5
|
+
|
|
6
|
+
**Merged pull requests:**
|
|
7
|
+
|
|
8
|
+
- Remove dependency on ActiveSupport. [\#76](https://github.com/ismasan/oat/pull/76) ([ismasan](https://github.com/ismasan))
|
|
9
|
+
|
|
10
|
+
## [v0.5.1](https://github.com/ismasan/oat/tree/v0.5.1) (2017-06-06)
|
|
11
|
+
[Full Changelog](https://github.com/ismasan/oat/compare/v0.5.0...v0.5.1)
|
|
12
|
+
|
|
13
|
+
**Merged pull requests:**
|
|
14
|
+
|
|
15
|
+
- Improve serialization performance by avoiding instance\_eval and method\_missing [\#73](https://github.com/ismasan/oat/pull/73) ([ivoanjo](https://github.com/ivoanjo))
|
|
16
|
+
- Remove duplicated license file [\#70](https://github.com/ismasan/oat/pull/70) ([tjmw](https://github.com/tjmw))
|
|
17
|
+
|
|
18
|
+
## [v0.5.0](https://github.com/ismasan/oat/tree/v0.5.0) (2016-08-24)
|
|
19
|
+
[Full Changelog](https://github.com/ismasan/oat/compare/v0.4.7...v0.5.0)
|
|
20
|
+
|
|
21
|
+
**Closed issues:**
|
|
22
|
+
|
|
23
|
+
- :only option for filtering [\#67](https://github.com/ismasan/oat/issues/67)
|
|
7
24
|
|
|
8
|
-
|
|
25
|
+
**Merged pull requests:**
|
|
9
26
|
|
|
10
|
-
-
|
|
27
|
+
- Add support for multiple schema blocks [\#69](https://github.com/ismasan/oat/pull/69) ([tjmw](https://github.com/tjmw))
|
|
11
28
|
|
|
12
|
-
|
|
29
|
+
## [v0.4.7](https://github.com/ismasan/oat/tree/v0.4.7) (2016-02-29)
|
|
30
|
+
[Full Changelog](https://github.com/ismasan/oat/compare/v0.4.6...v0.4.7)
|
|
13
31
|
|
|
14
|
-
|
|
32
|
+
**Implemented enhancements:**
|
|
15
33
|
|
|
16
|
-
-
|
|
34
|
+
- Override context on embedded serializers [\#13](https://github.com/ismasan/oat/issues/13)
|
|
17
35
|
|
|
18
|
-
|
|
36
|
+
**Closed issues:**
|
|
19
37
|
|
|
20
|
-
-
|
|
38
|
+
- The Siren adapter renders multiple rels per link as an array of an array instead of a flat array [\#64](https://github.com/ismasan/oat/issues/64)
|
|
39
|
+
- JsonApi adapter generates anything but JSON API conformant document [\#62](https://github.com/ismasan/oat/issues/62)
|
|
40
|
+
- Cross-cutting concerns [\#61](https://github.com/ismasan/oat/issues/61)
|
|
21
41
|
|
|
22
|
-
|
|
42
|
+
**Merged pull requests:**
|
|
23
43
|
|
|
24
|
-
-
|
|
44
|
+
- Support for multiple rels specified as an array for a single link. fixes \#64. [\#65](https://github.com/ismasan/oat/pull/65) ([landlessness](https://github.com/landlessness))
|
|
25
45
|
|
|
26
|
-
|
|
46
|
+
## [v0.4.6](https://github.com/ismasan/oat/tree/v0.4.6) (2015-02-07)
|
|
47
|
+
[Full Changelog](https://github.com/ismasan/oat/compare/v0.4.5...v0.4.6)
|
|
48
|
+
|
|
49
|
+
**Closed issues:**
|
|
50
|
+
|
|
51
|
+
- Serialize to vanilla JSON using the same serializer class [\#59](https://github.com/ismasan/oat/issues/59)
|
|
52
|
+
- HAL support for multiple link objects per relationship? [\#58](https://github.com/ismasan/oat/issues/58)
|
|
53
|
+
- Nested serializers: undefined method [\#56](https://github.com/ismasan/oat/issues/56)
|
|
54
|
+
- Array serialization [\#54](https://github.com/ismasan/oat/issues/54)
|
|
55
|
+
- Oat, Rails Responders and hypermedia mime types [\#50](https://github.com/ismasan/oat/issues/50)
|
|
56
|
+
- is lib/support/class\_attribute necessary? [\#44](https://github.com/ismasan/oat/issues/44)
|
|
27
57
|
|
|
28
|
-
|
|
58
|
+
**Merged pull requests:**
|
|
29
59
|
|
|
30
|
-
-
|
|
60
|
+
- HAL support for an array of linked objects [\#60](https://github.com/ismasan/oat/pull/60) ([abargnesi](https://github.com/abargnesi))
|
|
61
|
+
- Fixing Nested Serializers example [\#57](https://github.com/ismasan/oat/pull/57) ([coderdave](https://github.com/coderdave))
|
|
62
|
+
- Fix spelling in README.md [\#53](https://github.com/ismasan/oat/pull/53) ([killpack](https://github.com/killpack))
|
|
63
|
+
- provide an example of using Rails responders to support requests using a Hypermedia mime type [\#52](https://github.com/ismasan/oat/pull/52) ([apsoto](https://github.com/apsoto))
|
|
64
|
+
- Stop entities/entity from duplicating entries in linked hash. [\#49](https://github.com/ismasan/oat/pull/49) ([dpdawson](https://github.com/dpdawson))
|
|
65
|
+
- Better documentation for Oat::Adapters::JsonAPI\#collection [\#46](https://github.com/ismasan/oat/pull/46) ([emilesilvis](https://github.com/emilesilvis))
|
|
66
|
+
- add the required rel attribute for Siren sub-entities [\#45](https://github.com/ismasan/oat/pull/45) ([apsoto](https://github.com/apsoto))
|
|
31
67
|
|
|
32
|
-
## [v0.4.5](https://github.com/ismasan/oat/tree/v0.4.5)
|
|
68
|
+
## [v0.4.5](https://github.com/ismasan/oat/tree/v0.4.5) (2014-07-09)
|
|
33
69
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.4.4...v0.4.5)
|
|
34
|
-
#### 09/07/14
|
|
35
|
-
- *Merged pull-request:* Fix serializer ampersand warning [\#43](https://github.com/ismasan/oat/pull/43) ([iainbeeston](https://github.com/iainbeeston))
|
|
36
70
|
|
|
37
|
-
|
|
71
|
+
**Closed issues:**
|
|
38
72
|
|
|
39
|
-
-
|
|
73
|
+
- Thread Safety [\#39](https://github.com/ismasan/oat/issues/39)
|
|
40
74
|
|
|
41
|
-
|
|
75
|
+
**Merged pull requests:**
|
|
42
76
|
|
|
43
|
-
|
|
77
|
+
- Fix serializer ampersand warning [\#43](https://github.com/ismasan/oat/pull/43) ([iainbeeston](https://github.com/iainbeeston))
|
|
78
|
+
- Update build matrix [\#42](https://github.com/ismasan/oat/pull/42) ([iainbeeston](https://github.com/iainbeeston))
|
|
79
|
+
- Update to rspec3 [\#41](https://github.com/ismasan/oat/pull/41) ([iainbeeston](https://github.com/iainbeeston))
|
|
80
|
+
|
|
81
|
+
## [v0.4.4](https://github.com/ismasan/oat/tree/v0.4.4) (2014-05-26)
|
|
44
82
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.4.3...v0.4.4)
|
|
45
|
-
#### 26/05/14
|
|
46
|
-
- *Merged pull-request:* Add title addribute to siren action's fields [\#38](https://github.com/ismasan/oat/pull/38) ([erezesk](https://github.com/erezesk))
|
|
47
83
|
|
|
48
|
-
|
|
84
|
+
**Closed issues:**
|
|
85
|
+
|
|
86
|
+
- Top level json api meta [\#28](https://github.com/ismasan/oat/issues/28)
|
|
49
87
|
|
|
50
|
-
|
|
88
|
+
**Merged pull requests:**
|
|
89
|
+
|
|
90
|
+
- Add title addribute to siren action's fields [\#38](https://github.com/ismasan/oat/pull/38) ([erezesk](https://github.com/erezesk))
|
|
91
|
+
|
|
92
|
+
## [v0.4.3](https://github.com/ismasan/oat/tree/v0.4.3) (2014-05-01)
|
|
51
93
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.4.2...v0.4.3)
|
|
52
|
-
#### 01/05/14
|
|
53
|
-
- *Merged pull-request:* json-api: Don't add templated links to the resource [\#37](https://github.com/ismasan/oat/pull/37) ([kjg](https://github.com/kjg))
|
|
54
94
|
|
|
55
|
-
|
|
95
|
+
**Merged pull requests:**
|
|
96
|
+
|
|
97
|
+
- json-api: Don't add templated links to the resource [\#37](https://github.com/ismasan/oat/pull/37) ([kjg](https://github.com/kjg))
|
|
98
|
+
|
|
99
|
+
## [v0.4.2](https://github.com/ismasan/oat/tree/v0.4.2) (2014-04-29)
|
|
56
100
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.4.1...v0.4.2)
|
|
57
|
-
#### 29/04/14
|
|
58
|
-
- *Merged pull-request:* Add type attribute for siren actions [\#36](https://github.com/ismasan/oat/pull/36) ([erezesk](https://github.com/erezesk))
|
|
59
101
|
|
|
60
|
-
|
|
102
|
+
**Closed issues:**
|
|
61
103
|
|
|
62
|
-
|
|
104
|
+
- Errors management [\#35](https://github.com/ismasan/oat/issues/35)
|
|
105
|
+
|
|
106
|
+
**Merged pull requests:**
|
|
107
|
+
|
|
108
|
+
- Add type attribute for siren actions [\#36](https://github.com/ismasan/oat/pull/36) ([erezesk](https://github.com/erezesk))
|
|
109
|
+
|
|
110
|
+
## [v0.4.1](https://github.com/ismasan/oat/tree/v0.4.1) (2014-04-25)
|
|
63
111
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.4.0...v0.4.1)
|
|
64
|
-
#### 25/04/14
|
|
65
|
-
- *Merged pull-request:* Add meta property [\#32](https://github.com/ismasan/oat/pull/32) ([ahx](https://github.com/ahx))
|
|
66
112
|
|
|
67
|
-
|
|
113
|
+
**Merged pull requests:**
|
|
114
|
+
|
|
115
|
+
- Add meta property [\#32](https://github.com/ismasan/oat/pull/32) ([ahx](https://github.com/ahx))
|
|
116
|
+
|
|
117
|
+
## [v0.4.0](https://github.com/ismasan/oat/tree/v0.4.0) (2014-04-07)
|
|
68
118
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.3.0...v0.4.0)
|
|
69
|
-
#### 07/04/14
|
|
70
|
-
- *Merged pull-request:* Don't block NoMethodErrors from raising [\#31](https://github.com/ismasan/oat/pull/31) ([shekibobo](https://github.com/shekibobo))
|
|
71
119
|
|
|
72
|
-
|
|
120
|
+
**Closed issues:**
|
|
73
121
|
|
|
74
|
-
|
|
122
|
+
- Does this support any type of caching? [\#30](https://github.com/ismasan/oat/issues/30)
|
|
123
|
+
|
|
124
|
+
**Merged pull requests:**
|
|
125
|
+
|
|
126
|
+
- Don't block NoMethodErrors from raising [\#31](https://github.com/ismasan/oat/pull/31) ([shekibobo](https://github.com/shekibobo))
|
|
127
|
+
|
|
128
|
+
## [v0.3.0](https://github.com/ismasan/oat/tree/v0.3.0) (2014-03-25)
|
|
75
129
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.2.5...v0.3.0)
|
|
76
|
-
#### 25/03/14
|
|
77
|
-
- *Merged pull-request:* Don't allow rake 10.2 on ruby 1.8.7 [\#29](https://github.com/ismasan/oat/pull/29) ([kjg](https://github.com/kjg))
|
|
78
130
|
|
|
79
|
-
|
|
131
|
+
**Closed issues:**
|
|
80
132
|
|
|
81
|
-
-
|
|
133
|
+
- How to serialize many records? [\#24](https://github.com/ismasan/oat/issues/24)
|
|
82
134
|
|
|
83
|
-
|
|
135
|
+
**Merged pull requests:**
|
|
84
136
|
|
|
85
|
-
-
|
|
137
|
+
- Don't allow rake 10.2 on ruby 1.8.7 [\#29](https://github.com/ismasan/oat/pull/29) ([kjg](https://github.com/kjg))
|
|
138
|
+
- Json api link templates [\#27](https://github.com/ismasan/oat/pull/27) ([kjg](https://github.com/kjg))
|
|
139
|
+
- Json api attribute links [\#26](https://github.com/ismasan/oat/pull/26) ([kjg](https://github.com/kjg))
|
|
86
140
|
|
|
87
|
-
## [v0.2.5](https://github.com/ismasan/oat/tree/v0.2.5)
|
|
141
|
+
## [v0.2.5](https://github.com/ismasan/oat/tree/v0.2.5) (2014-03-20)
|
|
88
142
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.2.4...v0.2.5)
|
|
89
|
-
#### 20/03/14
|
|
90
|
-
- *Merged pull-request:* Json api nil entities [\#25](https://github.com/ismasan/oat/pull/25) ([kjg](https://github.com/kjg))
|
|
91
143
|
|
|
92
|
-
|
|
144
|
+
**Merged pull requests:**
|
|
145
|
+
|
|
146
|
+
- Json api nil entities [\#25](https://github.com/ismasan/oat/pull/25) ([kjg](https://github.com/kjg))
|
|
147
|
+
|
|
148
|
+
## [v0.2.4](https://github.com/ismasan/oat/tree/v0.2.4) (2014-02-24)
|
|
93
149
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.2.3...v0.2.4)
|
|
94
|
-
#### 24/02/14
|
|
95
|
-
- *Merged pull-request:* Allow for serializing json api resource collections into root key [\#23](https://github.com/ismasan/oat/pull/23) ([kjg](https://github.com/kjg))
|
|
96
150
|
|
|
97
|
-
|
|
151
|
+
**Merged pull requests:**
|
|
152
|
+
|
|
153
|
+
- Allow for serializing json api resource collections into root key [\#23](https://github.com/ismasan/oat/pull/23) ([kjg](https://github.com/kjg))
|
|
154
|
+
- Json api subent top linked [\#22](https://github.com/ismasan/oat/pull/22) ([kjg](https://github.com/kjg))
|
|
98
155
|
|
|
99
|
-
## [v0.2.3](https://github.com/ismasan/oat/tree/v0.2.3)
|
|
156
|
+
## [v0.2.3](https://github.com/ismasan/oat/tree/v0.2.3) (2014-02-17)
|
|
100
157
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.2.2...v0.2.3)
|
|
101
|
-
#### 17/02/14
|
|
102
|
-
- *Merged pull-request:* Json api sub behaviour [\#20](https://github.com/ismasan/oat/pull/20) ([kjg](https://github.com/kjg))
|
|
103
158
|
|
|
104
|
-
|
|
159
|
+
**Merged pull requests:**
|
|
160
|
+
|
|
161
|
+
- Json api sub behaviour [\#20](https://github.com/ismasan/oat/pull/20) ([kjg](https://github.com/kjg))
|
|
162
|
+
- Add version badge to README [\#18](https://github.com/ismasan/oat/pull/18) ([shekibobo](https://github.com/shekibobo))
|
|
105
163
|
|
|
106
|
-
## [v0.2.2](https://github.com/ismasan/oat/tree/v0.2.2)
|
|
164
|
+
## [v0.2.2](https://github.com/ismasan/oat/tree/v0.2.2) (2014-02-17)
|
|
107
165
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.1.2...v0.2.2)
|
|
108
|
-
#### 17/02/14
|
|
109
|
-
- *Merged pull-request:* Test more combinations in travis [\#17](https://github.com/ismasan/oat/pull/17) ([kjg](https://github.com/kjg))
|
|
110
166
|
|
|
111
|
-
|
|
167
|
+
**Closed issues:**
|
|
112
168
|
|
|
113
|
-
-
|
|
169
|
+
- Remove activesupport dependency [\#10](https://github.com/ismasan/oat/issues/10)
|
|
114
170
|
|
|
115
|
-
|
|
171
|
+
**Merged pull requests:**
|
|
116
172
|
|
|
117
|
-
-
|
|
173
|
+
- Test more combinations in travis [\#17](https://github.com/ismasan/oat/pull/17) ([kjg](https://github.com/kjg))
|
|
174
|
+
- Serializer from block or class update [\#16](https://github.com/ismasan/oat/pull/16) ([kjg](https://github.com/kjg))
|
|
175
|
+
- Make specs more accurate and using updated syntax [\#15](https://github.com/ismasan/oat/pull/15) ([shekibobo](https://github.com/shekibobo))
|
|
176
|
+
- Better Context [\#14](https://github.com/ismasan/oat/pull/14) ([shekibobo](https://github.com/shekibobo))
|
|
177
|
+
- Less active support [\#11](https://github.com/ismasan/oat/pull/11) ([kjg](https://github.com/kjg))
|
|
118
178
|
|
|
119
|
-
## [v0.1.2](https://github.com/ismasan/oat/tree/v0.1.2)
|
|
179
|
+
## [v0.1.2](https://github.com/ismasan/oat/tree/v0.1.2) (2014-02-13)
|
|
120
180
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.1.1...v0.1.2)
|
|
121
|
-
#### 13/02/14
|
|
122
|
-
- *Merged pull-request:* Support ruby 1.8.7 [\#12](https://github.com/ismasan/oat/pull/12) ([kjg](https://github.com/kjg))
|
|
123
181
|
|
|
124
|
-
|
|
182
|
+
**Closed issues:**
|
|
183
|
+
|
|
184
|
+
- Serializing collections [\#9](https://github.com/ismasan/oat/issues/9)
|
|
185
|
+
|
|
186
|
+
**Merged pull requests:**
|
|
125
187
|
|
|
126
|
-
|
|
188
|
+
- Support ruby 1.8.7 [\#12](https://github.com/ismasan/oat/pull/12) ([kjg](https://github.com/kjg))
|
|
189
|
+
|
|
190
|
+
## [v0.1.1](https://github.com/ismasan/oat/tree/v0.1.1) (2014-01-26)
|
|
127
191
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.1.0...v0.1.1)
|
|
128
|
-
#### 26/01/14
|
|
129
|
-
- *Merged pull-request:* Don't add invalid link relations to HAL output [\#8](https://github.com/ismasan/oat/pull/8) ([shekibobo](https://github.com/shekibobo))
|
|
130
192
|
|
|
131
|
-
|
|
193
|
+
**Merged pull requests:**
|
|
194
|
+
|
|
195
|
+
- Don't add invalid link relations to HAL output [\#8](https://github.com/ismasan/oat/pull/8) ([shekibobo](https://github.com/shekibobo))
|
|
196
|
+
|
|
197
|
+
## [v0.1.0](https://github.com/ismasan/oat/tree/v0.1.0) (2014-01-14)
|
|
132
198
|
[Full Changelog](https://github.com/ismasan/oat/compare/v0.0.1...v0.1.0)
|
|
133
|
-
#### 14/01/14
|
|
134
|
-
- *Merged pull-request:* Add Serializer#map\_properties to DRY property definitions [\#6](https://github.com/ismasan/oat/pull/6) ([shekibobo](https://github.com/shekibobo))
|
|
135
199
|
|
|
136
|
-
|
|
200
|
+
**Closed issues:**
|
|
201
|
+
|
|
202
|
+
- DRY property declaration [\#5](https://github.com/ismasan/oat/issues/5)
|
|
137
203
|
|
|
138
|
-
|
|
204
|
+
**Merged pull requests:**
|
|
139
205
|
|
|
140
|
-
-
|
|
206
|
+
- Add Serializer\#map\_properties to DRY property definitions [\#6](https://github.com/ismasan/oat/pull/6) ([shekibobo](https://github.com/shekibobo))
|
|
207
|
+
- Add action support for Siren. [\#4](https://github.com/ismasan/oat/pull/4) ([SebastianEdwards](https://github.com/SebastianEdwards))
|
|
208
|
+
- Don't try to serialize nil with an entity serializer [\#3](https://github.com/ismasan/oat/pull/3) ([shekibobo](https://github.com/shekibobo))
|
|
209
|
+
- Fix a small typo in the README [\#2](https://github.com/ismasan/oat/pull/2) ([stevenharman](https://github.com/stevenharman))
|
|
141
210
|
|
|
142
|
-
|
|
211
|
+
## [v0.0.1](https://github.com/ismasan/oat/tree/v0.0.1) (2013-11-18)
|
|
212
|
+
**Merged pull requests:**
|
|
143
213
|
|
|
144
|
-
|
|
145
|
-
#### 18/11/13
|
|
146
|
-
- *Merged pull-request:* Fix a few spelling and grammar errors [\#1](https://github.com/ismasan/oat/pull/1) ([leemachin](https://github.com/leemachin))
|
|
214
|
+
- Fix a few spelling and grammar errors [\#1](https://github.com/ismasan/oat/pull/1) ([leemachin](https://github.com/leemachin))
|
|
147
215
|
|
|
148
216
|
|
|
149
217
|
|
|
150
|
-
\* *This
|
|
218
|
+
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
data/lib/oat/adapter.rb
CHANGED
|
@@ -27,6 +27,7 @@ module Oat
|
|
|
27
27
|
if block_given?
|
|
28
28
|
serializer_class = Class.new(serializer.class)
|
|
29
29
|
serializer_class.schemas = []
|
|
30
|
+
serializer_class.schema_methods = []
|
|
30
31
|
serializer_class.adapter self.class
|
|
31
32
|
s = serializer_class.new(obj, serializer.context.merge(context_options), serializer.adapter_class, serializer.top)
|
|
32
33
|
serializer.instance_exec(obj, s, &block)
|
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
# http://jsonapi.org/format/#url-based-json-api
|
|
2
|
-
require 'active_support/inflector'
|
|
3
|
-
require 'active_support/core_ext/string/inflections'
|
|
4
|
-
unless defined?(String.new.pluralize)
|
|
5
|
-
class String
|
|
6
|
-
include ActiveSupport::CoreExtensions::String::Inflections
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
2
|
module Oat
|
|
11
3
|
module Adapters
|
|
12
4
|
|
|
@@ -24,7 +16,7 @@ module Oat
|
|
|
24
16
|
end
|
|
25
17
|
|
|
26
18
|
def type(*types)
|
|
27
|
-
@root_name = types.first.to_s.
|
|
19
|
+
@root_name = pluralize(types.first.to_s).to_sym
|
|
28
20
|
end
|
|
29
21
|
|
|
30
22
|
def link(rel, opts = {})
|
|
@@ -74,7 +66,7 @@ module Oat
|
|
|
74
66
|
if ent
|
|
75
67
|
ent_hash = ent.to_hash
|
|
76
68
|
_name = entity_name(name)
|
|
77
|
-
link_name = _name.to_s.
|
|
69
|
+
link_name = pluralize(_name.to_s).to_sym
|
|
78
70
|
data[:links][_name] = ent_hash[:id]
|
|
79
71
|
|
|
80
72
|
entity_hash[link_name] ||= []
|
|
@@ -87,7 +79,7 @@ module Oat
|
|
|
87
79
|
def entities(name, collection, serializer_class = nil, context_options = {}, &block)
|
|
88
80
|
return if collection.nil? || collection.empty?
|
|
89
81
|
_name = entity_name(name)
|
|
90
|
-
link_name = _name.to_s.
|
|
82
|
+
link_name = pluralize(_name.to_s).to_sym
|
|
91
83
|
data[:links][link_name] = []
|
|
92
84
|
|
|
93
85
|
collection.each do |obj|
|
|
@@ -155,6 +147,15 @@ module Oat
|
|
|
155
147
|
ent.to_hash.values.first.first if ent
|
|
156
148
|
end
|
|
157
149
|
|
|
150
|
+
PLURAL = /s$/
|
|
151
|
+
|
|
152
|
+
def pluralize(str)
|
|
153
|
+
if str =~ PLURAL
|
|
154
|
+
str
|
|
155
|
+
else
|
|
156
|
+
"#{str}s"
|
|
157
|
+
end
|
|
158
|
+
end
|
|
158
159
|
end
|
|
159
160
|
end
|
|
160
161
|
end
|
data/lib/oat/adapters/siren.rb
CHANGED
|
@@ -70,7 +70,7 @@ module Oat
|
|
|
70
70
|
@data = { :name => name, :class => [], :fields => [] }
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
-
def
|
|
73
|
+
def klass(value)
|
|
74
74
|
data[:class] << value
|
|
75
75
|
end
|
|
76
76
|
|
|
@@ -91,7 +91,11 @@ module Oat
|
|
|
91
91
|
attr_reader :data
|
|
92
92
|
|
|
93
93
|
def initialize(name)
|
|
94
|
-
@data = { :name => name }
|
|
94
|
+
@data = { :name => name, :class => []}
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def klass(value)
|
|
98
|
+
data[:class] << value
|
|
95
99
|
end
|
|
96
100
|
|
|
97
101
|
%w(type value title).each do |attribute|
|
data/lib/oat/serializer.rb
CHANGED
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
require 'support/class_attribute'
|
|
2
|
+
|
|
2
3
|
module Oat
|
|
3
4
|
class Serializer
|
|
4
|
-
|
|
5
|
-
class_attribute :_adapter, :logger, :schemas
|
|
5
|
+
extend ClassAttribute
|
|
6
|
+
class_attribute :_adapter, :logger, :schemas, :schema_methods
|
|
6
7
|
|
|
7
8
|
self.schemas = []
|
|
9
|
+
self.schema_methods = []
|
|
8
10
|
|
|
9
11
|
def self.schema(&block)
|
|
10
|
-
|
|
12
|
+
if block_given?
|
|
13
|
+
schema_method_name = :"schema_block_#{self.schema_methods.count}"
|
|
14
|
+
|
|
15
|
+
self.schemas += [block]
|
|
16
|
+
self.schema_methods += [schema_method_name]
|
|
17
|
+
|
|
18
|
+
define_method(schema_method_name, &block)
|
|
19
|
+
private(schema_method_name)
|
|
20
|
+
end
|
|
11
21
|
end
|
|
12
22
|
|
|
13
23
|
def self.adapter(adapter_class = nil)
|
|
@@ -34,7 +44,15 @@ module Oat
|
|
|
34
44
|
|
|
35
45
|
def method_missing(name, *args, &block)
|
|
36
46
|
if adapter.respond_to?(name)
|
|
37
|
-
|
|
47
|
+
self.class.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def #{name}(*args, &block)
|
|
51
|
+
adapter.#{name}(*args, &block)
|
|
52
|
+
end
|
|
53
|
+
RUBY
|
|
54
|
+
|
|
55
|
+
send(name, *args, &block)
|
|
38
56
|
else
|
|
39
57
|
super
|
|
40
58
|
end
|
|
@@ -52,8 +70,8 @@ module Oat
|
|
|
52
70
|
|
|
53
71
|
def to_hash
|
|
54
72
|
@to_hash ||= (
|
|
55
|
-
self.class.
|
|
56
|
-
|
|
73
|
+
self.class.schema_methods.each do |schema_method_name|
|
|
74
|
+
send(schema_method_name)
|
|
57
75
|
end
|
|
58
76
|
|
|
59
77
|
adapter.to_hash
|
data/lib/oat/version.rb
CHANGED
|
@@ -1,66 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
rescue LoadError
|
|
4
|
-
module Kernel
|
|
5
|
-
# Returns the object's singleton class.
|
|
6
|
-
def singleton_class
|
|
7
|
-
class << self
|
|
8
|
-
self
|
|
9
|
-
end
|
|
10
|
-
end unless respond_to?(:singleton_class) # exists in 1.9.2
|
|
11
|
-
|
|
12
|
-
# class_eval on an object acts like singleton_class.class_eval.
|
|
13
|
-
def class_eval(*args, &block)
|
|
14
|
-
singleton_class.class_eval(*args, &block)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
class Module
|
|
19
|
-
def remove_possible_method(method)
|
|
20
|
-
if method_defined?(method) || private_method_defined?(method)
|
|
21
|
-
remove_method(method)
|
|
22
|
-
end
|
|
23
|
-
rescue NameError
|
|
24
|
-
# If the requested method is defined on a superclass or included module,
|
|
25
|
-
# method_defined? returns true but remove_method throws a NameError.
|
|
26
|
-
# Ignore this.
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def redefine_method(method, &block)
|
|
30
|
-
remove_possible_method(method)
|
|
31
|
-
define_method(method, &block)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
class Class
|
|
1
|
+
module Oat
|
|
2
|
+
module ClassAttribute
|
|
36
3
|
def class_attribute(*attrs)
|
|
37
4
|
attrs.each do |name|
|
|
38
5
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
|
39
|
-
|
|
40
|
-
def self.#{name}?() !!#{name} end
|
|
6
|
+
def self.#{name}() nil end
|
|
41
7
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
end
|
|
8
|
+
def self.#{name}=(val)
|
|
9
|
+
singleton_class.class_eval do
|
|
10
|
+
define_method(:#{name}) { val }
|
|
11
|
+
end
|
|
47
12
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
13
|
+
if singleton_class?
|
|
14
|
+
class_eval do
|
|
15
|
+
def #{name}
|
|
16
|
+
defined?(@#{name}) ? @#{name} : singleton_class.#{name}
|
|
17
|
+
end
|
|
53
18
|
end
|
|
54
19
|
end
|
|
20
|
+
val
|
|
55
21
|
end
|
|
56
|
-
val
|
|
57
|
-
end
|
|
58
22
|
RUBY
|
|
59
23
|
|
|
60
24
|
end
|
|
61
25
|
end
|
|
62
26
|
|
|
63
27
|
private
|
|
28
|
+
|
|
29
|
+
def singleton_class
|
|
30
|
+
class << self
|
|
31
|
+
self
|
|
32
|
+
end
|
|
33
|
+
end unless respond_to?(:singleton_class) # exists in 1.9.2
|
|
34
|
+
|
|
64
35
|
def singleton_class?
|
|
65
36
|
ancestors.first != self
|
|
66
37
|
end
|
data/oat.gemspec
CHANGED
|
@@ -18,7 +18,6 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
-
spec.add_dependency "activesupport"
|
|
22
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
|
23
22
|
spec.add_development_dependency "rake"
|
|
24
23
|
spec.add_development_dependency "rspec", ">= 3.0"
|
data/spec/adapters/siren_spec.rb
CHANGED
data/spec/fixtures.rb
CHANGED
|
@@ -41,11 +41,12 @@ module Fixtures
|
|
|
41
41
|
if adapter.respond_to?(:action)
|
|
42
42
|
action :close_account do |action|
|
|
43
43
|
action.href "http://foo.bar.com/#{item.id}/close_account"
|
|
44
|
-
action.
|
|
45
|
-
action.
|
|
44
|
+
action.klass 'danger'
|
|
45
|
+
action.klass 'irreversible'
|
|
46
46
|
action.method 'DELETE'
|
|
47
47
|
action.type 'application/json'
|
|
48
48
|
action.field :current_password do |field|
|
|
49
|
+
field.klass 'string'
|
|
49
50
|
field.type :password
|
|
50
51
|
field.title 'enter password:'
|
|
51
52
|
end
|
metadata
CHANGED
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: oat
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ismael Celis
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-05-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: activesupport
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: bundler
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -95,16 +81,8 @@ files:
|
|
|
95
81
|
- CHANGELOG.md
|
|
96
82
|
- Gemfile
|
|
97
83
|
- LICENSE
|
|
98
|
-
- LICENSE.txt
|
|
99
84
|
- README.md
|
|
100
85
|
- Rakefile
|
|
101
|
-
- gemfiles/Gemfile.as-1.4.4
|
|
102
|
-
- gemfiles/Gemfile.as-2.3.x
|
|
103
|
-
- gemfiles/Gemfile.as-3.0.x
|
|
104
|
-
- gemfiles/Gemfile.as-3.1.x
|
|
105
|
-
- gemfiles/Gemfile.as-3.2.x
|
|
106
|
-
- gemfiles/Gemfile.as-4.0.x
|
|
107
|
-
- gemfiles/Gemfile.as-4.1.x
|
|
108
86
|
- lib/oat.rb
|
|
109
87
|
- lib/oat/adapter.rb
|
|
110
88
|
- lib/oat/adapters/hal.rb
|
|
@@ -141,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
141
119
|
version: '0'
|
|
142
120
|
requirements: []
|
|
143
121
|
rubyforge_project:
|
|
144
|
-
rubygems_version: 2.
|
|
122
|
+
rubygems_version: 2.7.6
|
|
145
123
|
signing_key:
|
|
146
124
|
specification_version: 4
|
|
147
125
|
summary: Adapters-based serializers with Hypermedia support
|
data/LICENSE.txt
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
Copyright (c) 2013 Ismael Celis
|
|
2
|
-
|
|
3
|
-
MIT License
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
-
a copy of this software and associated documentation files (the
|
|
7
|
-
"Software"), to deal in the Software without restriction, including
|
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
-
the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be
|
|
14
|
-
included in all copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/gemfiles/Gemfile.as-1.4.4
DELETED
data/gemfiles/Gemfile.as-2.3.x
DELETED
data/gemfiles/Gemfile.as-3.0.x
DELETED
data/gemfiles/Gemfile.as-3.1.x
DELETED
data/gemfiles/Gemfile.as-3.2.x
DELETED
data/gemfiles/Gemfile.as-4.0.x
DELETED