strong_presenter 0.2.0 → 0.2.1
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 +7 -0
- data/CHANGELOG.md +4 -0
- data/README.md +1 -1
- data/lib/strong_presenter/presenter.rb +1 -1
- data/lib/strong_presenter/version.rb +1 -1
- data/spec/strong_presenter/associable_spec.rb +7 -0
- metadata +94 -58
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6444649230265391d72546b3298782db1383abc4
|
4
|
+
data.tar.gz: 8ed272da88fb418034afe94c7fa8b20ee52139f5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4a5aef2eea1880590b28c89643e7900df4a19862bbcb9da51077f17dae5b476fb2dec9b1c220e74b1a22ae1f011cb0911b1aec626dee12c91f881e1252316715
|
7
|
+
data.tar.gz: eae1b941dcd897be3ff945636f327d0b2832541df05d6c93c10f461d7bdea334a199313ec54f2c9ef5ececda6d4f90e827e06b8d561a4982dc393480f5755a1e
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -45,7 +45,7 @@ Or to use the edge version, add this to your Gemfile:
|
|
45
45
|
|
46
46
|
### Writing Presenters
|
47
47
|
|
48
|
-
Presenters are stored in `app/presenters`, they inherit from `StrongPresenter::
|
48
|
+
Presenters are stored in `app/presenters`, they inherit from `StrongPresenter::Presenter` and are named based on the model they present. We also recommend you create an `ApplicationPresenter`.
|
49
49
|
|
50
50
|
```ruby
|
51
51
|
# app/presenters/user_presenter.rb
|
@@ -86,7 +86,7 @@ module StrongPresenter
|
|
86
86
|
select_permitted(*attributes).map do |args|
|
87
87
|
args = Array(args)
|
88
88
|
obj = self # drill into associations
|
89
|
-
while (args.size > 1) &&
|
89
|
+
while (args.size > 1) && obj.class.respond_to?(:presenter_associations, true) && obj.class.send(:presenter_associations).include?(args[0]) do
|
90
90
|
obj = obj.public_send args.slice!(0)
|
91
91
|
end
|
92
92
|
value = obj.public_send *args # call final method with args
|
@@ -14,6 +14,8 @@ module StrongPresenter
|
|
14
14
|
Product.send(:define_method, :manufacturer) { @manufacturer ||= Manufacturer.new }
|
15
15
|
Product.send(:define_method, :name) { "Product" }
|
16
16
|
ProductPresenter.presents_association :manufacturer
|
17
|
+
ManufacturerPresenter.presents_association :source
|
18
|
+
Manufacturer.send(:define_method, :source) { @manufacturer ||= Manufacturer.new }
|
17
19
|
|
18
20
|
@product_presenter = ProductPresenter.new(Product.new)
|
19
21
|
end
|
@@ -34,6 +36,11 @@ module StrongPresenter
|
|
34
36
|
expect(@product_presenter.manufacturer.presents :name).to be_empty
|
35
37
|
end
|
36
38
|
|
39
|
+
it 'presents nested assocations' do
|
40
|
+
@product_presenter.permit! :**
|
41
|
+
expect(@product_presenter.present [:manufacturer, :source, :name]).to eq "Presented Factory"
|
42
|
+
end
|
43
|
+
|
37
44
|
context 'with association methods permitted' do
|
38
45
|
before(:each) do
|
39
46
|
@product_presenter.permit! [:manufacturer, :*]
|
metadata
CHANGED
@@ -1,159 +1,197 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: strong_presenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ronald Chan
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-25 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activesupport
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '3.0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: actionpack
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - '>='
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '3.0'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: request_store
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
45
|
- - ~>
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: 1.0.3
|
44
48
|
type: :runtime
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.3
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: activemodel
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '3.0'
|
55
62
|
type: :runtime
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: ammeter
|
60
|
-
requirement:
|
61
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
62
72
|
requirements:
|
63
|
-
- -
|
73
|
+
- - '>='
|
64
74
|
- !ruby/object:Gem::Version
|
65
75
|
version: '0'
|
66
76
|
type: :development
|
67
77
|
prerelease: false
|
68
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rake
|
71
|
-
requirement:
|
72
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
73
86
|
requirements:
|
74
|
-
- -
|
87
|
+
- - '>='
|
75
88
|
- !ruby/object:Gem::Version
|
76
89
|
version: 0.9.2
|
77
90
|
type: :development
|
78
91
|
prerelease: false
|
79
|
-
version_requirements:
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.9.2
|
80
97
|
- !ruby/object:Gem::Dependency
|
81
98
|
name: rspec
|
82
|
-
requirement:
|
83
|
-
none: false
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
84
100
|
requirements:
|
85
101
|
- - ~>
|
86
102
|
- !ruby/object:Gem::Version
|
87
103
|
version: '2.12'
|
88
104
|
type: :development
|
89
105
|
prerelease: false
|
90
|
-
version_requirements:
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.12'
|
91
111
|
- !ruby/object:Gem::Dependency
|
92
112
|
name: rspec-mocks
|
93
|
-
requirement:
|
94
|
-
none: false
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
95
114
|
requirements:
|
96
|
-
- -
|
115
|
+
- - '>='
|
97
116
|
- !ruby/object:Gem::Version
|
98
117
|
version: 2.12.1
|
99
118
|
type: :development
|
100
119
|
prerelease: false
|
101
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 2.12.1
|
102
125
|
- !ruby/object:Gem::Dependency
|
103
126
|
name: rspec-rails
|
104
|
-
requirement:
|
105
|
-
none: false
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
106
128
|
requirements:
|
107
129
|
- - ~>
|
108
130
|
- !ruby/object:Gem::Version
|
109
131
|
version: '2.12'
|
110
132
|
type: :development
|
111
133
|
prerelease: false
|
112
|
-
version_requirements:
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ~>
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2.12'
|
113
139
|
- !ruby/object:Gem::Dependency
|
114
140
|
name: minitest-rails
|
115
|
-
requirement:
|
116
|
-
none: false
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
117
142
|
requirements:
|
118
143
|
- - ~>
|
119
144
|
- !ruby/object:Gem::Version
|
120
145
|
version: '0.2'
|
121
146
|
type: :development
|
122
147
|
prerelease: false
|
123
|
-
version_requirements:
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ~>
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0.2'
|
124
153
|
- !ruby/object:Gem::Dependency
|
125
154
|
name: capybara
|
126
|
-
requirement:
|
127
|
-
none: false
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
128
156
|
requirements:
|
129
|
-
- -
|
157
|
+
- - '>='
|
130
158
|
- !ruby/object:Gem::Version
|
131
159
|
version: '0'
|
132
160
|
type: :development
|
133
161
|
prerelease: false
|
134
|
-
version_requirements:
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
135
167
|
- !ruby/object:Gem::Dependency
|
136
168
|
name: active_model_serializers
|
137
|
-
requirement:
|
138
|
-
none: false
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
139
170
|
requirements:
|
140
|
-
- -
|
171
|
+
- - '>='
|
141
172
|
- !ruby/object:Gem::Version
|
142
173
|
version: '0'
|
143
174
|
type: :development
|
144
175
|
prerelease: false
|
145
|
-
version_requirements:
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - '>='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
146
181
|
- !ruby/object:Gem::Dependency
|
147
182
|
name: activerecord
|
148
|
-
requirement:
|
149
|
-
none: false
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
150
184
|
requirements:
|
151
|
-
- -
|
185
|
+
- - '>='
|
152
186
|
- !ruby/object:Gem::Version
|
153
187
|
version: '3.0'
|
154
188
|
type: :development
|
155
189
|
prerelease: false
|
156
|
-
version_requirements:
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - '>='
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '3.0'
|
157
195
|
description: strong_presenter adds a layer of presentation logic to your application,
|
158
196
|
and gives you strong_parameters-like logic to determine which attributes are visible
|
159
197
|
email:
|
@@ -300,27 +338,26 @@ files:
|
|
300
338
|
- strong_presenter.gemspec
|
301
339
|
homepage: https://github.com/ronalchn/strong_presenter
|
302
340
|
licenses: []
|
341
|
+
metadata: {}
|
303
342
|
post_install_message:
|
304
343
|
rdoc_options: []
|
305
344
|
require_paths:
|
306
345
|
- lib
|
307
346
|
required_ruby_version: !ruby/object:Gem::Requirement
|
308
|
-
none: false
|
309
347
|
requirements:
|
310
|
-
- -
|
348
|
+
- - '>='
|
311
349
|
- !ruby/object:Gem::Version
|
312
350
|
version: '0'
|
313
351
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
314
|
-
none: false
|
315
352
|
requirements:
|
316
|
-
- -
|
353
|
+
- - '>='
|
317
354
|
- !ruby/object:Gem::Version
|
318
355
|
version: '0'
|
319
356
|
requirements: []
|
320
357
|
rubyforge_project:
|
321
|
-
rubygems_version:
|
358
|
+
rubygems_version: 2.0.3
|
322
359
|
signing_key:
|
323
|
-
specification_version:
|
360
|
+
specification_version: 4
|
324
361
|
summary: strong_presenter adds a layer of presentation logic to your application,
|
325
362
|
and gives you strong_parameters-like logic to determine which attributes are visible
|
326
363
|
test_files:
|
@@ -411,4 +448,3 @@ test_files:
|
|
411
448
|
- spec/support/models.rb
|
412
449
|
- spec/support/schema.rb
|
413
450
|
- spec/support/shared_examples/view_helpers.rb
|
414
|
-
has_rdoc:
|