halogen 0.0.1 → 0.0.2
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 +4 -4
- data/README.md +2 -2
- data/lib/halogen/embeds.rb +4 -1
- data/lib/halogen/version.rb +1 -1
- data/spec/halogen/embeds_spec.rb +16 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ecf269aadcd3040623710454934d01055e58f022
|
4
|
+
data.tar.gz: c389775b46ff5daabf1bb4ccaae8b4967f4eaf89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9ae4d73ca13c7ad45c68c718a527111b522adcc9b02772d641403edb9e642c564afd0a5172b2cb6908c034a35059a03f143555af0a812ad2a97e488529d67c9
|
7
|
+
data.tar.gz: a36c479ad935f1f2d74df13f14afb7652630dc6a9ca37b652cbf64499f2198b3afc839889f4c7328f0eb154b3265180b26799f065c60827ac4a447a4e767f256
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Halogen
|
2
2
|
|
3
|
-
[](https://codeclimate.com/repos/552430af695680100500b659/feed)
|
4
4
|
|
5
5
|
This library provides a framework-agnostic interface for generating
|
6
6
|
[HAL+JSON](http://stateless.co/hal_specification.html)
|
@@ -192,7 +192,7 @@ link(:find, :templated) { '/goats/{?id}' }
|
|
192
192
|
# => { _links: { find: { href: '/goats/{?id}', templated: true } } ... }
|
193
193
|
```
|
194
194
|
|
195
|
-
|
195
|
+
#### Embedded resources
|
196
196
|
|
197
197
|
Embedded resources are not rendered by default. They will be included if both
|
198
198
|
of the following conditions are met:
|
data/lib/halogen/embeds.rb
CHANGED
@@ -76,7 +76,10 @@ module Halogen
|
|
76
76
|
def render_child(repr, opts)
|
77
77
|
return unless repr.class.included_modules.include?(Halogen)
|
78
78
|
|
79
|
-
repr.options
|
79
|
+
repr.options[:embed] ||= {}
|
80
|
+
repr.options[:embed].merge!(opts)
|
81
|
+
|
82
|
+
repr.options[:parent] = self
|
80
83
|
|
81
84
|
repr.render
|
82
85
|
end
|
data/lib/halogen/version.rb
CHANGED
data/spec/halogen/embeds_spec.rb
CHANGED
@@ -147,29 +147,35 @@ describe Halogen::Embeds do
|
|
147
147
|
|
148
148
|
describe '#render_child' do
|
149
149
|
let :representer do
|
150
|
-
|
150
|
+
Class.new do
|
151
|
+
include Halogen
|
152
|
+
|
153
|
+
property(:verify_parent) { parent.object_id }
|
154
|
+
property(:verify_opts) { options[:embed] }
|
155
|
+
end.new
|
151
156
|
end
|
152
157
|
|
153
158
|
it 'returns nil if child is not a representer' do
|
154
159
|
[nil, 1, ''].each do |child|
|
155
|
-
expect(
|
160
|
+
expect(klass.new.render_child(child, {})).to be_nil
|
156
161
|
end
|
157
162
|
end
|
158
163
|
|
159
164
|
it 'renders child representer with correct parent and options' do
|
160
|
-
|
161
|
-
include Halogen
|
162
|
-
|
163
|
-
property(:verify_parent) { parent.object_id }
|
164
|
-
property(:verify_opts) { options[:embed] }
|
165
|
-
end.new
|
166
|
-
|
167
|
-
result = representer.render_child(child, foo: 'bar')
|
165
|
+
result = representer.render_child(representer, foo: 'bar')
|
168
166
|
|
169
167
|
expect(result).to eq(
|
170
168
|
verify_parent: representer.object_id,
|
171
169
|
verify_opts: { foo: 'bar' })
|
172
170
|
end
|
171
|
+
|
172
|
+
it 'merges child options if already present' do
|
173
|
+
representer.options[:embed] = { bar: 'bar' }
|
174
|
+
|
175
|
+
result = representer.render_child(representer, foo: 'foo')
|
176
|
+
|
177
|
+
expect(result[:verify_opts]).to eq(foo: 'foo', bar: 'bar')
|
178
|
+
end
|
173
179
|
end
|
174
180
|
|
175
181
|
describe '#embed_options' do
|