hash_path 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module HashPath
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/hash_path.rb CHANGED
@@ -13,7 +13,7 @@ module HashPath
13
13
  current_value = self
14
14
 
15
15
  path_keys.each do |key|
16
- return nil unless ::Hash === current_value
16
+ return nil unless current_value.respond_to?(:[])
17
17
  current_value = current_value[key]
18
18
  end
19
19
  current_value
@@ -22,17 +22,18 @@ module HashPath
22
22
  # Same as at_path but raises when a path is not found
23
23
  # The raise will give a delimited path of where the path went dead
24
24
  # @example
25
- # f = { 'foo' => {'bar' => {'baz' => 'hai'} } }
25
+ # f = { 'foo' => {'bar' => {'baz' => 'hai'}, "baz" => [1,2] } }
26
26
  # f.at_path!('foo.not.baz') # Raises, message == 'foo.not'
27
27
  # f.at_path!('not.here.yo') # Raises, message == 'not'
28
28
  # f.at_path!('foo.bar.not') # Raises, message == 'foo.bar.not'
29
+ # f.at_path!("baz.1") # => 2
29
30
  # @see HashPath#at_path
30
31
  def at_path!(path)
31
32
  path_keys = normalize_path(path)
32
33
  the_keys, current_value = [], self
33
34
 
34
35
  path_keys.each do |key|
35
- raise(PathNotFound, the_keys.join(DELIMITER))unless ::Hash === current_value
36
+ raise(PathNotFound, the_keys.join(DELIMITER)) unless current_value.respond_to?(:[])
36
37
  the_keys << key
37
38
  current_value = current_value[key]
38
39
  end
@@ -46,7 +47,7 @@ module HashPath
46
47
  path
47
48
  when String, Symbol
48
49
  path.to_s.split(DELIMITER)
49
- end
50
+ end.map{|key| key =~ /^\d+$/ ? key.to_i : key }
50
51
  end
51
52
  end
52
53
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hash_path
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-19 00:00:00.000000000 Z
12
+ date: 2012-08-21 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Easy path navigation for hashes
15
15
  email: