halogen 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: 491dfa5f8eb8f51c4973205d1fbab6e883ce40db
4
- data.tar.gz: 79c6b3b9b20ba7e86b6684daa38440b60b34460c
3
+ metadata.gz: ecf269aadcd3040623710454934d01055e58f022
4
+ data.tar.gz: c389775b46ff5daabf1bb4ccaae8b4967f4eaf89
5
5
  SHA512:
6
- metadata.gz: a69872769a3355f338b642ff0ae66dcbbc37a76edb9e74f7826e3abf7c53d8525ef8399a042db3d4d38b971d3bd7851984395779af628cd1df99e10983224024
7
- data.tar.gz: d6ba44f85ce1d6b5bf1108975aa3426354f8f1b32d3cfc62bd16d91d9f894ac14e8186d8ca6121a561d0e5659cef16b7a81c9421ea386328421329c98c5b4b06
6
+ metadata.gz: f9ae4d73ca13c7ad45c68c718a527111b522adcc9b02772d641403edb9e642c564afd0a5172b2cb6908c034a35059a03f143555af0a812ad2a97e488529d67c9
7
+ data.tar.gz: a36c479ad935f1f2d74df13f14afb7652630dc6a9ca37b652cbf64499f2198b3afc839889f4c7328f0eb154b3265180b26799f065c60827ac4a447a4e767f256
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Halogen
2
2
 
3
- [![Build Status](https://travis-ci.org/mode/halogen.svg)](https://travis-ci.org/mode/halogen)
3
+ [![Code Climate](https://codeclimate.com/repos/552430af695680100500b659/badges/cdae8d5a10147d135be9/gpa.svg)](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
- ### Embedded resources
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:
@@ -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.merge!(embed: opts, parent: self)
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
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
  #
3
3
  module Halogen
4
- VERSION = '0.0.1' # :nodoc:
4
+ VERSION = '0.0.2' # :nodoc:
5
5
  end
@@ -147,29 +147,35 @@ describe Halogen::Embeds do
147
147
 
148
148
  describe '#render_child' do
149
149
  let :representer do
150
- klass.new
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(representer.render_child(child, {})).to be_nil
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
- child = Class.new do
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: halogen
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
  - Heather Rivers