pragma-decorator 2.2.3 → 2.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/README.md +31 -8
- data/lib/pragma/decorator/association/bond.rb +2 -6
- data/lib/pragma/decorator/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a95d2a912a1328c91c7ba4bd2cb023ebe3772bf67900fed17e7e6119a0e4a1a
|
4
|
+
data.tar.gz: 6fe2f0c3e0a87767d25f31e06b4fa8d3dd00fa420456c98f9b47ddb3ee0185a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4764e283b3fc8f3d5528f648096a4684dba6f322c0fb59f6a6da32399cfe7bf1c1d56ab9b57e0c6dffa5f658f3dfc17a5509d988adcea15091fb439f0be29101
|
7
|
+
data.tar.gz: 1fd589f81ff1e00d7e01ba98fb19ef10a812096ac10e471fe707000f7b71d7feb3604298889b8013503cc418d6c86fcd321578ee9a290cf064d989be0c1ebbc7
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [2.2.4]
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
|
14
|
+
- Fixed an issue where expanding a property would expand properties with the same name in associated objects
|
15
|
+
|
10
16
|
## [2.2.3]
|
11
17
|
|
12
18
|
### Fixed
|
@@ -74,7 +80,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
74
80
|
|
75
81
|
First Pragma 2 release.
|
76
82
|
|
77
|
-
[Unreleased]: https://github.com/pragmarb/pragma-decorator/compare/v2.2.
|
83
|
+
[Unreleased]: https://github.com/pragmarb/pragma-decorator/compare/v2.2.4...HEAD
|
84
|
+
[2.2.4]: https://github.com/pragmarb/pragma-decorator/compare/v2.2.3...v2.2.4
|
78
85
|
[2.2.3]: https://github.com/pragmarb/pragma-decorator/compare/v2.2.2...v2.2.3
|
79
86
|
[2.2.2]: https://github.com/pragmarb/pragma-decorator/compare/v2.2.1...v2.2.2
|
80
87
|
[2.2.1]: https://github.com/pragmarb/pragma-decorator/compare/v2.2.0...v2.2.1
|
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Pragma::Decorator
|
2
2
|
|
3
3
|
[![Build Status](https://travis-ci.org/pragmarb/pragma-decorator.svg?branch=master)](https://travis-ci.org/pragmarb/pragma-decorator)
|
4
|
-
[![Dependency Status](https://gemnasium.com/badges/github.com/pragmarb/pragma-decorator.svg)](https://gemnasium.com/github.com/pragmarb/pragma-decorator)
|
5
4
|
[![Coverage Status](https://coveralls.io/repos/github/pragmarb/pragma-decorator/badge.svg?branch=master)](https://coveralls.io/github/pragmarb/pragma-decorator?branch=master)
|
6
5
|
[![Maintainability](https://api.codeclimate.com/v1/badges/e51e8d7489eb72ab97ba/maintainability)](https://codeclimate.com/github/pragmarb/pragma-decorator/maintainability)
|
7
6
|
|
@@ -184,7 +183,7 @@ Rendering an invoice will now create the following representation:
|
|
184
183
|
}
|
185
184
|
```
|
186
185
|
|
187
|
-
You can pass `expand[]=customer` as a request parameter and have the `customer` property expanded
|
186
|
+
You can pass `expand[]=customer` as a request parameter and have the `customer` property expanded
|
188
187
|
into a full object!
|
189
188
|
|
190
189
|
```json
|
@@ -197,7 +196,7 @@ into a full object!
|
|
197
196
|
```
|
198
197
|
|
199
198
|
This also works for nested associations. For instance, if the customer decorator had a `company`
|
200
|
-
association, you could pass `expand[]=customer&expand[]=customer.company` to get the company
|
199
|
+
association, you could pass `expand[]=customer&expand[]=customer.company` to get the company
|
201
200
|
expanded too.
|
202
201
|
|
203
202
|
Note that you will have to pass the associations to expand as a user option when rendering:
|
@@ -227,9 +226,9 @@ module API
|
|
227
226
|
class Collection < Pragma::Decorator::Base
|
228
227
|
include Pragma::Decorator::Collection
|
229
228
|
decorate_with Instance # specify the instance decorator
|
230
|
-
|
229
|
+
|
231
230
|
property :total_cents, exec_context: :decorator
|
232
|
-
|
231
|
+
|
233
232
|
def total_cents
|
234
233
|
represented.sum(:total_cents)
|
235
234
|
end
|
@@ -266,7 +265,7 @@ about the entire collection (not just the current page) in the response.
|
|
266
265
|
|
267
266
|
### Pagination
|
268
267
|
|
269
|
-
Speaking of pagination, you can use `Pragma::Decorator::Pagination` in combination with
|
268
|
+
Speaking of pagination, you can use `Pragma::Decorator::Pagination` in combination with
|
270
269
|
`Collection` to include pagination data in your response:
|
271
270
|
|
272
271
|
```ruby
|
@@ -277,7 +276,7 @@ module API
|
|
277
276
|
class Collection < Pragma::Decorator::Base
|
278
277
|
include Pragma::Decorator::Collection
|
279
278
|
include Pragma::Decorator::Pagination
|
280
|
-
|
279
|
+
|
281
280
|
decorate_with Instance
|
282
281
|
end
|
283
282
|
end
|
@@ -312,9 +311,33 @@ Which will produce the following JSON:
|
|
312
311
|
}
|
313
312
|
```
|
314
313
|
|
315
|
-
It works with both [will_paginate](https://github.com/mislav/will_paginate) and
|
314
|
+
It works with both [will_paginate](https://github.com/mislav/will_paginate) and
|
316
315
|
[Kaminari](https://github.com/kaminari/kaminari)!
|
317
316
|
|
317
|
+
### Restricting property visibility
|
318
|
+
|
319
|
+
If you want to show or hide certain properties programmatically, you can do it with the `if` option:
|
320
|
+
|
321
|
+
```ruby
|
322
|
+
module API
|
323
|
+
module V1
|
324
|
+
module User
|
325
|
+
module Decorator
|
326
|
+
class Instance < Pragma::Decorator::Base
|
327
|
+
property :id
|
328
|
+
property :first_name
|
329
|
+
property :last_name
|
330
|
+
property :email, if: -> (user_options:, decorated:, **) {
|
331
|
+
# Only show the email to admins or to the same user.
|
332
|
+
user_options[:current_user].admin? || user_options[:current_user] == decorated
|
333
|
+
}
|
334
|
+
end
|
335
|
+
end
|
336
|
+
end
|
337
|
+
end
|
338
|
+
end
|
339
|
+
```
|
340
|
+
|
318
341
|
## Contributing
|
319
342
|
|
320
343
|
Bug reports and pull requests are welcome on GitHub at https://github.com/pragmarb/pragma-decorator.
|
@@ -106,12 +106,8 @@ module Pragma
|
|
106
106
|
|
107
107
|
expected_beginning = "#{reflection.property}."
|
108
108
|
|
109
|
-
expand.
|
110
|
-
|
111
|
-
value.sub(expected_beginning, '')
|
112
|
-
else
|
113
|
-
value
|
114
|
-
end
|
109
|
+
expand.select { |value| value.start_with?(expected_beginning) }.map do |value|
|
110
|
+
value.sub(expected_beginning, '')
|
115
111
|
end
|
116
112
|
end
|
117
113
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pragma-decorator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alessandro Desantis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: roar
|
@@ -194,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
194
|
version: '0'
|
195
195
|
requirements: []
|
196
196
|
rubyforge_project:
|
197
|
-
rubygems_version: 2.7.
|
197
|
+
rubygems_version: 2.7.5
|
198
198
|
signing_key:
|
199
199
|
specification_version: 4
|
200
200
|
summary: Convert your API resources into JSON with minimum hassle.
|