roar 0.12.5 → 0.12.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07ecc948debf57f733cbd0afa35239bee7c3690d
4
- data.tar.gz: 4595104d851b4a1acee53c2968e610c035fd25d1
3
+ metadata.gz: db7cda8e7774438e2c12828c256a93501719b176
4
+ data.tar.gz: 2f61956f6ea000358e40713d958af2e8c58219a6
5
5
  SHA512:
6
- metadata.gz: e84a209d661459eaf5f4c666367112c45cb821ce5469e32536ff9a30714e45f8deb06b7b164f4684d27bbcc82906c98f12bccf935f4a72f8018e23c40b251dc1
7
- data.tar.gz: eac108c9d10735a92ff60d38e21affa0465ef850ed1245084285f33fe7648000e8e68718672abd3da8838781892aef0e66eee9d119118524f23597bb0af4ed39
6
+ metadata.gz: 5b04289bf9e1b07ff13ffe52dea647c0c82b6154d49d5ac2e2b657498a031bf24574751a546ecce8dd76fb9511a3ded0eb2f3131eb3c1e16306849f115335da2
7
+ data.tar.gz: 28a0c35f6240627b1fe1b5924e2f7e8d8ca27761c4f56a12138fabd8768394dfe3ea63517892bdbb9f83f36ee5222c003d3d16a00cfc63e6ab1af3c03c87cad7
data/.travis.yml CHANGED
@@ -4,5 +4,9 @@ matrix:
4
4
  gemfile: gemfiles/Gemfile.representable-1.7
5
5
  - rvm: 2.0.0
6
6
  gemfile: gemfiles/Gemfile.representable-1.7
7
+ - rvm: 1.9.3
8
+ gemfile: gemfiles/Gemfile.representable-1.8
9
+ - rvm: 2.0.0
10
+ gemfile: gemfiles/Gemfile.representable-1.8
7
11
  notifications:
8
12
  irc: "irc.freenode.org#cells"
data/CHANGES.markdown CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.12.6
2
+
3
+ * Remove deprecations (most of 'em) from representable-1.8. Sorry for that.
4
+
1
5
  # 0.12.5
2
6
 
3
7
  * Roar runs with representable <= 1.8.
data/Gemfile CHANGED
@@ -3,5 +3,5 @@ source "http://rubygems.org"
3
3
  # Specify your gem's dependencies in roar.gemspec
4
4
  gemspec
5
5
 
6
- gem "representable", :path => "../representable"
6
+ #gem "representable", :path => "../representable"
7
7
  gem "sinatra-contrib", :git => "git@github.com:apotonick/sinatra-contrib.git", :branch => "runner"
data/TODO.markdown CHANGED
@@ -3,4 +3,9 @@
3
3
  * alias Roar::Representer to Representer
4
4
  * remove #before_serialize and just overwrite #serialize
5
5
  * abstract ::links_definition_options and move them out of the generic representers (JSON, XML).
6
- * make 1.8 tests work, again (hash ordering!)
6
+ * make 1.8 tests work, again (hash ordering!)
7
+
8
+ * release 1.0
9
+ * representable 1.8, only.
10
+ * revise Hypermedia
11
+ * work on HAL-Object
@@ -0,0 +1,6 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec path: '../'
4
+
5
+ gem 'representable', '~> 1.8.0'
6
+ gem "sinatra-contrib", :git => "git@github.com:apotonick/sinatra-contrib.git", :branch => "runner"
@@ -137,7 +137,15 @@ module Roar
137
137
  private
138
138
  def create_links_definition
139
139
  return if representable_attrs.find { |d| d.is_a?(LinksDefinition) }
140
- representable_attrs << LinksDefinition.new(*links_definition_options)
140
+
141
+ options = links_definition_options # TODO: remove in 1.0.
142
+ if Roar.representable_1_8?
143
+ opt = options.last
144
+ opt[:exec_context] = :decorator
145
+ opt.delete(:decorator_scope)
146
+ end
147
+
148
+ representable_attrs << LinksDefinition.new(*options)
141
149
  end
142
150
  end
143
151
 
@@ -3,6 +3,11 @@ require 'roar/representer/feature/hypermedia'
3
3
  require 'representable/json'
4
4
 
5
5
  module Roar
6
+ require 'representable/version'
7
+ def self.representable_1_8? # TODO: remove me in 1.0.
8
+ Representable::VERSION =~ /^1.8/
9
+ end
10
+
6
11
  module Representer
7
12
  module JSON
8
13
  def self.included(base)
@@ -60,12 +60,14 @@ module Roar::Representer
60
60
  module Resources
61
61
  # Write the property to the +_embedded+ hash when it's a resource.
62
62
  def compile_fragment(bin, doc)
63
- return super unless bin.options[:embedded]
63
+ embedded = ::Roar.representable_1_8? ? bin[:embedded] : bin.options[:embedded]
64
+ return super unless embedded
64
65
  super(bin, doc[:_embedded] ||= {})
65
66
  end
66
67
 
67
68
  def uncompile_fragment(bin, doc)
68
- return super unless bin.options[:embedded]
69
+ embedded = Roar.representable_1_8? ? bin[:embedded] : bin.options[:embedded]
70
+ return super unless embedded
69
71
  super(bin, doc["_embedded"] || {})
70
72
  end
71
73
  end
@@ -132,7 +134,7 @@ module Roar::Representer
132
134
  include Representable::JSON::Hash
133
135
 
134
136
  values :extend => lambda { |item, *| item.is_a?(Array) ? LinkArrayRepresenter : Roar::Representer::JSON::HyperlinkRepresenter },
135
- :class => lambda { |hsh, *| hsh.is_a?(LinkArray) ? nil : Roar::Representer::Feature::Hypermedia::Hyperlink }
137
+ :instance => lambda { |fragment, *| fragment.is_a?(LinkArray) ? fragment : Roar::Representer::Feature::Hypermedia::Hyperlink.new }
136
138
 
137
139
  def to_hash(options)
138
140
  super.tap do |hsh| # TODO: cool: super(:exclude => [:rel]).
data/lib/roar/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Roar
2
- VERSION = "0.12.5"
2
+ VERSION = "0.12.6"
3
3
  end
data/roar.gemspec CHANGED
@@ -1,4 +1,3 @@
1
- # -*- encoding: utf-8 -*-
2
1
  $:.push File.expand_path("../lib", __FILE__)
3
2
  require "roar/version"
4
3
 
@@ -12,7 +11,6 @@ Gem::Specification.new do |s|
12
11
  s.summary = %q{Resource-oriented architectures in Ruby.}
13
12
  s.description = %q{Streamlines the development of RESTful, resource-oriented architectures in Ruby.}
14
13
  s.license = 'MIT'
15
- s.rubyforge_project = "roar"
16
14
 
17
15
  s.files = `git ls-files`.split("\n")
18
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -108,12 +108,12 @@ class CollectionJsonTest < MiniTest::Spec
108
108
  song = subject.items.first
109
109
  song.title.must_equal "scarifice"
110
110
  song.length.must_equal 43
111
- song.links.must_equal("download" => link({:rel=>:download, :href=>"//songs/scarifice.mp3"}), "stats" => link({:rel=>:stats, :href=>"//songs/scarifice/stats"}))
111
+ song.links.must_equal("download" => link({:rel=>"download", :href=>"//songs/scarifice.mp3"}), "stats" => link({:rel=>"stats", :href=>"//songs/scarifice/stats"}))
112
112
  song.href.must_equal link(:href => "//songs/scarifice")
113
113
  end
114
114
 
115
115
  it "provides #links" do
116
- subject.links.must_equal({"feed" => link(:rel => :feed, :href => "//songs/feed")})
116
+ subject.links.must_equal({"feed" => link(:rel => "feed", :href => "//songs/feed")})
117
117
  end
118
118
  end
119
119
 
@@ -78,7 +78,7 @@ class DecoratorTest < MiniTest::Spec
78
78
 
79
79
  it "sets links on decorator" do
80
80
  decorator.from_xml(%{<song><link rel="self" href="http://next"/></song>})
81
- decorator.links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
81
+ decorator.links.must_equal("self"=>link(:rel=>"self", :href=>"http://next"))
82
82
  end
83
83
  end
84
84
 
@@ -100,7 +100,7 @@ class DecoratorTest < MiniTest::Spec
100
100
 
101
101
  it "sets links on decorator" do
102
102
  decorator.from_hash({"_links"=>{"self"=>{:href=>"http://next"}}})
103
- decorator.links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
103
+ decorator.links.must_equal("self"=>link(:rel=>"self", :href=>"http://next"))
104
104
  end
105
105
 
106
106
  describe "Decorator::HypermediaClient" do
@@ -112,7 +112,7 @@ class DecoratorTest < MiniTest::Spec
112
112
 
113
113
  it "propagates links to represented" do
114
114
  decorator.new(model_with_links).from_hash("_links"=>{"self"=>{:href=>"http://self"}})
115
- model_with_links.links[:self].must_equal(link(:rel=>:self, :href=>"http://self"))
115
+ model_with_links.links[:self].must_equal(link(:rel=>"self", :href=>"http://self"))
116
116
  end
117
117
  end
118
118
  end
@@ -24,17 +24,17 @@ class HalJsonTest < MiniTest::Spec
24
24
  describe "parsing" do
25
25
  it "parses link array" do # TODO: remove me.
26
26
  obj = subject.from_json("{\"_links\":{\"self\":[{\"lang\":\"en\",\"href\":\"http://en.hit\"},{\"lang\":\"de\",\"href\":\"http://de.hit\"}]}}")
27
- obj.links.must_equal "self" => [link(:rel => :self, :href => "http://en.hit", :lang => :en), link(:rel => :self, :href => "http://de.hit", :lang => :de)]
27
+ obj.links.must_equal "self" => [link("rel" => "self", "href" => "http://en.hit", "lang" => "en"), link("rel" => "self", "href" => "http://de.hit", "lang" => "de")]
28
28
  end
29
29
 
30
30
  it "parses single links" do # TODO: remove me.
31
31
  obj = subject.from_json("{\"_links\":{\"next\":{\"href\":\"http://next\"}}}")
32
- obj.links.must_equal "next" => link(:rel => :next, :href => "http://next")
32
+ obj.links.must_equal "next" => link("rel" => "next", "href" => "http://next")
33
33
  end
34
34
 
35
35
  it "parses link and link array" do
36
36
  obj = subject.from_json("{\"_links\":{\"next\":{\"href\":\"http://next\"}, \"self\":[{\"lang\":\"en\",\"href\":\"http://en.hit\"},{\"lang\":\"de\",\"href\":\"http://de.hit\"}]}}")
37
- obj.links.must_equal "next" => link(:rel => :next, :href => "http://next"), "self" => [link(:rel => :self, :href => "http://en.hit", :lang => :en), link(:rel => :self, :href => "http://de.hit", :lang => :de)]
37
+ obj.links.must_equal "next" => link("rel" => "next", "href" => "http://next"), "self" => [link("rel" => "self", "href" => "http://en.hit", "lang" => "en"), link("rel" => "self", "href" => "http://de.hit", "lang" => "de")]
38
38
  end
39
39
 
40
40
  it "parses empty link array" do
@@ -73,7 +73,7 @@ class HalJsonTest < MiniTest::Spec
73
73
  describe "#prepare_links!" do
74
74
  it "should map link arrays correctly" do
75
75
  subject.send :prepare_links!
76
- subject.links.must_equal "self" => [link(:rel => :self, :href => "http://en.hit", :lang => "en"),link(:rel => :self, :href => "http://de.hit", :lang => "de")], "next" => link(:href => "http://next", :rel => :next)
76
+ subject.links.must_equal "self" => [link("rel" => :self, "href" => "http://en.hit", "lang" => "en"),link("rel" => :self, "href" => "http://de.hit", "lang" => "de")], "next" => link("href" => "http://next", "rel" => :next)
77
77
  end
78
78
  end
79
79
 
@@ -24,7 +24,7 @@ class HalLinkTest < MiniTest::Spec
24
24
 
25
25
  describe "#from_json" do
26
26
  it "uses 'links' key" do
27
- subject.from_json("{\"links\":{\"self\":{\"href\":\"//lifer\"}}}").links.values.must_equal [link(:href => "//lifer", :rel => :self)]
27
+ subject.from_json("{\"links\":{\"self\":{\"href\":\"//lifer\"}}}").links.values.must_equal [link("href" => "//lifer", "rel" => "self")]
28
28
  end
29
29
  end
30
30
  end
@@ -56,7 +56,7 @@ class HypermediaTest < MiniTest::Spec
56
56
  describe "#from_json" do
57
57
  it "parses" do
58
58
  subject.from_json "{\"links\":[{\"rel\":\"self\",\"href\":\"//self\"}]}"
59
- subject.links.must_equal({"self" => link(:rel => :self, :href => "//self")})
59
+ subject.links.must_equal({"self" => link("rel" => "self", "href" => "//self")})
60
60
  end
61
61
  end
62
62
 
data/test/test_helper.rb CHANGED
@@ -51,15 +51,3 @@ MiniTest::Spec.class_eval do
51
51
  %w(get post put delete).each(&block)
52
52
  end
53
53
  end
54
-
55
- Roar::Representer::Feature::Hypermedia::Hyperlink.class_eval do
56
- def ==(other)
57
- stringify_hash(table) == stringify_hash(other.table)
58
- end
59
-
60
- def stringify_hash(hash)
61
- hash.collect do |k,v|
62
- [k.to_s, v.to_s]
63
- end.sort
64
- end
65
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.5
4
+ version: 0.12.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-09 00:00:00.000000000 Z
11
+ date: 2014-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: representable
@@ -141,6 +141,7 @@ files:
141
141
  - examples/example.rb
142
142
  - examples/example_server.rb
143
143
  - gemfiles/Gemfile.representable-1.7
144
+ - gemfiles/Gemfile.representable-1.8
144
145
  - lib/roar.rb
145
146
  - lib/roar/decorator.rb
146
147
  - lib/roar/representer.rb
@@ -195,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
196
  - !ruby/object:Gem::Version
196
197
  version: '0'
197
198
  requirements: []
198
- rubyforge_project: roar
199
+ rubyforge_project:
199
200
  rubygems_version: 2.2.1
200
201
  signing_key:
201
202
  specification_version: 4
@@ -221,3 +222,4 @@ test_files:
221
222
  - test/representer_test.rb
222
223
  - test/test_helper.rb
223
224
  - test/xml_representer_test.rb
225
+ has_rdoc: