roar 0.12.5 → 0.12.6

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: 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: