roar 0.11.6 → 0.11.7

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.
@@ -1,3 +1,7 @@
1
+ ## 0.11.7
2
+
3
+ * Maintenance release: Fixing the horrible bug fix from 0.11.6 and make it a bit less horrible.
4
+
1
5
  ## 0.11.6
2
6
 
3
7
  * "Fixing" a bug where `links_definition_option` was missing when no link was set in a representer. Note that this is a quick and horrible bugfix and will soon be cleaned up.
@@ -39,20 +39,6 @@ module Roar
39
39
  base.extend ClassMethods
40
40
  end
41
41
 
42
- # TODO: the whole declarative setup in representable should happen on instance level so we don't need to share methods between class and instance.
43
- module LinksDefinitionMethods
44
- private
45
- def create_links_definition
46
- representable_attrs << links = LinksDefinition.new(*links_definition_options)
47
- links
48
- end
49
-
50
- def links_definition
51
- representable_attrs.find { |d| d.is_a?(LinksDefinition) } or create_links_definition
52
- end
53
- end
54
- include LinksDefinitionMethods
55
-
56
42
  def before_serialize(options={})
57
43
  prepare_links!(options) unless options[:links] == false # DISCUSS: doesn't work when links are already setup (e.g. from #deserialize).
58
44
  super # Representer::Base
@@ -77,6 +63,10 @@ module Roar
77
63
  end
78
64
 
79
65
  private
66
+ def links_definition
67
+ representable_attrs.find { |d| d.is_a?(LinksDefinition) } or [] # FIXME: this is a bug as soon as #links_definition is used somewhere else beside #prepare_links.
68
+ end
69
+
80
70
  # Setup hypermedia links by invoking their blocks. Usually called by #serialize.
81
71
  def prepare_links!(*args)
82
72
  links_definition.each do |config| # config is [{..}, block]
@@ -110,7 +100,6 @@ module Roar
110
100
 
111
101
 
112
102
  module ClassMethods
113
- include LinksDefinitionMethods
114
103
  # Declares a hypermedia link in the document.
115
104
  #
116
105
  # Example:
@@ -125,6 +114,16 @@ module Roar
125
114
  options = {:rel => options} if options.is_a?(Symbol)
126
115
  links_definition << [options, block]
127
116
  end
117
+
118
+ private
119
+ def create_links_definition
120
+ representable_attrs << links = LinksDefinition.new(*links_definition_options)
121
+ links
122
+ end
123
+
124
+ def links_definition
125
+ representable_attrs.find { |d| d.is_a?(LinksDefinition) } or create_links_definition
126
+ end
128
127
  end
129
128
 
130
129
 
@@ -49,9 +49,6 @@ module Roar
49
49
  end
50
50
  end
51
51
 
52
- def links_definition_options # FIXME: remove me ASAP!
53
- [:links_array, {:from => :links, :class => Feature::Hypermedia::Hyperlink, :extend => HyperlinkRepresenter, :collection => true}]
54
- end
55
52
 
56
53
  require "representable/json/hash"
57
54
  # Represents a hyperlink in standard roar+json hash representation.
@@ -47,10 +47,6 @@ module Roar
47
47
  end
48
48
  end
49
49
 
50
- def links_definition_options # FIXME: remove me ASAP!
51
- [:links_array, {:from => :link, :class => Feature::Hypermedia::Hyperlink, :collection => true, :extend => XML::HyperlinkRepresenter}]
52
- end
53
-
54
50
 
55
51
  require 'representable/xml/hash'
56
52
  module HyperlinkRepresenter
@@ -1,3 +1,3 @@
1
1
  module Roar
2
- VERSION = "0.11.6"
2
+ VERSION = "0.11.7"
3
3
  end
@@ -59,7 +59,7 @@ class HypermediaTest < MiniTest::Spec
59
59
  representer_for {}
60
60
 
61
61
  it "still allows rendering" do
62
- subject.to_json.must_equal "{\"links\":[]}"
62
+ subject.to_json.must_equal "{}"
63
63
  end
64
64
  end
65
65
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.6
4
+ version: 0.11.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: