hyperresource 0.1.1 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e9844c60b0fe8e4e88935179b8adac2484267087
4
- data.tar.gz: ba30d1358140c121509ff9ccbdca0c7b1f09fe72
3
+ metadata.gz: 92ee4348030a36d83d74cb0b71bb4b70d1ae6ce0
4
+ data.tar.gz: 53aaa0253140cb08399407294b1e469c34e72bef
5
5
  SHA512:
6
- metadata.gz: 5b81b62a0f28580101f4e3bce8b5db8bde5081d31874ca549ea06e2158a29ab60bfccc20aabd44c39da1672d83aed82793dfd171b83e206865fdf08c69df88f0
7
- data.tar.gz: bc318b9f9231913ac6cf40401a590755fc76f91baa9cafbfa46960d2f8baf4e66905664a52e2f2aaacbfb584716d426cede5035a32241b6e0f5e02c9efa033d8
6
+ metadata.gz: 6600ac1ca86877604297185f1be5e769540dcae149ad36e8cde685d959adc6ce93de86a684450d08fe694f5aac8cc8c39484fa7c80d71f8d0658f760ec5765d9
7
+ data.tar.gz: 51289b56ed95a5818a7a6fbe392dc7cec68565451fd94a1838fb83f6647550b11862b03870b394b3767a3dfedaa19c129662d5bf6bb4d4e8a7b94cb0bb68779a
@@ -10,9 +10,9 @@ class HyperResource::Link
10
10
 
11
11
  def initialize(resource=nil, link_spec={})
12
12
  self.parent_resource = resource || HyperResource.new
13
- self.base_href = link_spec['href']
14
- self.templated = !!link_spec['templated']
15
- self.params = link_spec['params'] || {}
13
+ self.base_href = link_spec['href']
14
+ self.templated = !!link_spec['templated']
15
+ self.params = link_spec['params'] || {}
16
16
  end
17
17
 
18
18
  ## Returns this link's href, applying any URI template params.
@@ -1,22 +1,31 @@
1
1
  class HyperResource
2
- class Links < Hash
3
- attr_accessor :resource
2
+ class Links < Hash
3
+ attr_accessor :resource
4
4
 
5
- def initialize(resource=nil)
5
+ def initialize(resource=nil)
6
6
  self.resource = resource || HyperResource.new
7
- end
7
+ end
8
8
 
9
9
  # Initialize links from a HAL response.
10
10
  def init_from_hal(hal_resp)
11
11
  return unless hal_resp['_links']
12
12
  hal_resp['_links'].each do |rel, link_spec|
13
- self[rel] = HyperResource::Link.new(resource, link_spec)
14
- unless self.respond_to?(rel.to_sym)
15
- define_singleton_method(rel.to_sym) { self[rel] }
16
- end
17
- unless self.resource.respond_to?(rel.to_sym)
18
- self.resource.define_singleton_method(rel.to_sym) {self.links[rel]}
19
- end
13
+ self[rel] = new_link_from_spec(link_spec)
14
+ create_methods_for_link_rel(rel) unless self.respond_to?(rel.to_sym)
15
+ end
16
+ end
17
+
18
+ protected
19
+
20
+ def new_link_from_spec(link_spec) # :nodoc:
21
+ HyperResource::Link.new(resource, link_spec)
22
+ end
23
+
24
+ def create_methods_for_link_rel(rel) # :nodoc:
25
+ link = self[rel]
26
+ define_singleton_method(rel.to_sym) do |*args|
27
+ return link if args.empty?
28
+ link.where(*args)
20
29
  end
21
30
  end
22
31
 
@@ -1,4 +1,4 @@
1
1
  class HyperResource
2
- VERSION = '0.1.1'
3
- VERSION_DATE = '2013-04-08'
2
+ VERSION = '0.1.2'
3
+ VERSION_DATE = '2013-04-12'
4
4
  end
@@ -126,6 +126,7 @@ public
126
126
  ## if self.class != HyperResource, instance-wide otherwise.
127
127
  def method_missing(method, *args)
128
128
  self.get unless self.loaded
129
+
129
130
  [:attributes, :objects, :links].each do |field|
130
131
  if self.send(field).respond_to?(method)
131
132
  if self.class == HyperResource
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyperresource
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Gamache
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-08 00:00:00.000000000 Z
11
+ date: 2013-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: uri_template
@@ -121,8 +121,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  version: '0'
122
122
  requirements: []
123
123
  rubyforge_project:
124
- rubygems_version: 2.0.3
124
+ rubygems_version: 2.0.2
125
125
  signing_key:
126
126
  specification_version: 4
127
127
  summary: Extensible hypermedia client for Ruby
128
128
  test_files: []
129
+ has_rdoc: true