resty 0.0.4 → 0.1.0

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.
Files changed (3) hide show
  1. data/lib/resty/attributes.rb +13 -2
  2. data/lib/resty.rb +9 -1
  3. metadata +6 -6
@@ -6,16 +6,27 @@ class Resty::Attributes
6
6
  @href = data[':href']
7
7
  @populated = !@href || data.length > 1 # a hack for now
8
8
  @data = data
9
+ @wrapped = {}
9
10
  end
10
11
 
11
12
  def key?(name)
12
13
  populate! unless populated?
13
- @data.key?(name) || @data.key?(camelize_key(name))
14
+ @data.key?(translate_key(name))
15
+ end
16
+
17
+ def translate_key(name)
18
+ populate! unless populated?
19
+ if @data.key?(name)
20
+ name
21
+ elsif @data.key?(camelized_name = camelize_key(name))
22
+ camelized_name
23
+ end
14
24
  end
15
25
 
16
26
  def [](name)
17
27
  populate! unless populated?
18
- Resty.wrap(@data[name] || @data[camelize_key(name)])
28
+ name = translate_key(name)
29
+ @wrapped[name] ||= Resty.wrap(@data[name])
19
30
  end
20
31
 
21
32
  def populated?
data/lib/resty.rb CHANGED
@@ -40,6 +40,10 @@ class Resty
40
40
  end
41
41
  end
42
42
 
43
+ def to_s
44
+ super.gsub('>', _href ? " #{_href}>" : " no-href>")
45
+ end
46
+
43
47
  def self.from(data)
44
48
  new(Resty::Attributes.new(data))
45
49
  end
@@ -66,7 +70,11 @@ class Resty
66
70
  def self.decode_param(s)
67
71
  s && Base64.urlsafe_decode64(s.to_s)
68
72
  end
69
-
73
+
74
+ def self.from_param(s)
75
+ href(decode_param(s))
76
+ end
77
+
70
78
  end
71
79
 
72
80
  %w(attributes transport actions).each do |f|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-06-08 00:00:00.000000000 +10:00
12
+ date: 2011-06-09 00:00:00.000000000 +10:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
17
- requirement: &15296280 !ruby/object:Gem::Requirement
17
+ requirement: &12942680 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.6.3
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *15296280
25
+ version_requirements: *12942680
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: json
28
- requirement: &15295800 !ruby/object:Gem::Requirement
28
+ requirement: &12942200 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: 1.5.1
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *15295800
36
+ version_requirements: *12942200
37
37
  description:
38
38
  email:
39
39
  executables: