navigable_hash 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ repo_token: 0r24ERdqRyaWZ5GjVaqJXl2K9vnXsgTia
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  *.gem
2
2
  *.rbc
3
+ .rbenv-gemsets
3
4
  .bundle
4
5
  .config
5
6
  .yardoc
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+ rvm:
3
+ # Rubies 2.0.0
4
+ - 2.0.0
5
+
6
+ # Rubies 1.9.x
7
+ - 1.9.3
8
+ - 1.9.2
9
+ - jruby-19mode
10
+ - rbx-19mode
11
+
12
+ # Rubies 1.8.7
13
+ - 1.8.7
14
+ - rbx-18mode
15
+ - jruby-18mode
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # NavigableHash
2
2
 
3
- TODO: Write a gem description
3
+ [![Build Status](https://travis-ci.org/jwaldrip/navigable_hash.png?branch=master)](https://travis-ci.org/jwaldrip/navigable_hash)
4
+ [![Coverage Status](https://coveralls.io/repos/jwaldrip/navigable_hash/badge.png?branch=master)](https://coveralls.io/r/jwaldrip/navigable_hash)
5
+ [![Code Climate](https://codeclimate.com/github/jwaldrip/navigable_hash.png)](https://codeclimate.com/github/jwaldrip/navigable_hash)
6
+ [![Dependency Status](https://gemnasium.com/jwaldrip/navigable_hash.png)](https://gemnasium.com/jwaldrip/navigable_hash)
7
+
8
+ NavigableHash was built as lightweight and quick way to navigate through a hash or array object using the familiar ruby dot notation. See 'Usage' below for examples. Keys as strings or symbols don't matter, its all included.
4
9
 
5
10
  ## Installation
6
11
 
@@ -18,7 +23,41 @@ Or install it yourself as:
18
23
 
19
24
  ## Usage
20
25
 
21
- TODO: Write usage instructions here
26
+ (Check out the rspec tests for coverage examples)
27
+
28
+ Most basic usage:
29
+ ```ruby
30
+ test_hash = { :example_key => 'example value' }
31
+ navigable_hash = NavigableHash.new(test_hash)
32
+
33
+ navigable_hash.example_key
34
+ # => 'example_value'
35
+ ```
36
+
37
+
38
+ More:
39
+ ```ruby
40
+ new_hash = { :second_key => { :inner_key => true }, :array_item => [{}, "string", :symbol] }
41
+ navigable_hash = NavigableHash.new(new_hash)
42
+
43
+ navigable_hash.second_key.inner_key
44
+ # => true
45
+
46
+ navigable_hash.array_item.last
47
+ # => :symbol
48
+ ```
49
+
50
+
51
+ Call Agnostic (key as a string, symbol or dot notation):
52
+ ```ruby
53
+ new_hash = { "first_key" => "value 1" }
54
+ navigable_hash = NavigableHash.new(new_hash)
55
+
56
+ navigable_hash.first_key
57
+ navigable_hash[:first_key]
58
+ navigable_hash["first_key"]
59
+ # => "value 1"
60
+ ```
22
61
 
23
62
  ## Contributing
24
63
 
data/Rakefile CHANGED
@@ -1 +1,5 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+ RSpec::Core::RakeTask.new(:spec)
4
+
5
+ task :default => :spec
@@ -1,29 +1,152 @@
1
- require "navigable_hash/version"
2
- require 'active_support/core_ext/hash'
3
- require "active_support/hash_with_indifferent_access"
1
+ class NavigableHash < Hash
4
2
 
5
- class NavigableHash < HashWithIndifferentAccess
3
+ def initialize(constructor = {})
4
+ if constructor.is_a?(Hash)
5
+ super()
6
+ update(constructor)
7
+ else
8
+ super(constructor)
9
+ end
10
+ end
11
+
12
+ alias_method :get_value, :[] unless method_defined?(:get_value)
13
+ alias_method :set_value, :[]= unless method_defined?(:set_value)
14
+
15
+ def ==(other_hash)
16
+ to_hash == self.class.new(other_hash).to_hash
17
+ end
18
+
19
+ # Assigns a new value to the hash:
20
+ #
21
+ # hash = NavigableHash.new
22
+ # hash[:key] = "value"
23
+ #
24
+ def []=(key, value)
25
+ set_value convert_key(key), navigate(value)
26
+ end
27
+
28
+ alias :store :[]=
6
29
 
7
30
  def [](key)
8
- navigate super(key)
31
+ get_value convert_key(key)
9
32
  end
10
33
 
11
- def method_missing(m, *args, &block)
12
- self[m]
34
+ # Removes a specified key from the hash.
35
+ def delete(key)
36
+ super(convert_key(key))
37
+ end
38
+
39
+ # Returns an exact copy of the hash.
40
+ def dup
41
+ self.class.new to_hash
42
+ end
43
+
44
+ # Same as <tt>Hash#fetch</tt> where the key passed as argument can be
45
+ # either a string or a symbol:
46
+ #
47
+ # counters = HashWithIndifferentAccess.new
48
+ # counters[:foo] = 1
49
+ #
50
+ # counters.fetch("foo") # => 1
51
+ # counters.fetch(:bar, 0) # => 0
52
+ # counters.fetch(:bar) {|key| 0} # => 0
53
+ # counters.fetch(:zoo) # => KeyError: key not found: "zoo"
54
+ #
55
+ def fetch(key, *extras)
56
+ super(convert_key(key), *extras)
13
57
  end
14
58
 
15
- def respond_to_missing?(m, include_private = false)
59
+ # Checks the hash for a key matching the argument passed in:
60
+ #
61
+ # hash = HashWithIndifferentAccess.new
62
+ # hash["key"] = "value"
63
+ # hash.key? :key # => true
64
+ # hash.key? "key" # => true
65
+ #
66
+ def key?(key)
67
+ super(convert_key(key))
68
+ end
69
+
70
+ alias_method :include?, :key?
71
+ alias_method :has_key?, :key?
72
+ alias_method :member?, :key?
73
+
74
+ # Merges the instantiated and the specified hashes together, giving precedence to the values from the second hash.
75
+ # Does not overwrite the existing hash.
76
+ def merge(hash)
77
+ self.dup.update(hash)
78
+ end
79
+
80
+ def respond_to?(m, include_private = false)
16
81
  true
17
82
  end
18
83
 
19
- def ==(other_hash)
20
- to_hash == self.class.new(other_hash).to_hash
84
+ def to_hash
85
+ reduce({}) do |hash, (key, value)|
86
+ hash.merge key => convert_for_to_hash(value)
87
+ end
21
88
  end
22
89
 
23
- private
90
+ # Updates the instantized hash with values from the second:
91
+ #
92
+ # hash_1 = NavigableHash.new
93
+ # hash_1[:key] = "value"
94
+ #
95
+ # hash_2 = NavigableHash.new
96
+ # hash_2[:key] = "New Value!"
97
+ #
98
+ # hash_1.update(hash_2) # => {"key"=>"New Value!"}
99
+ #
100
+ def update(other_hash)
101
+ other_hash.reduce(self) { |hash, (k, v)| hash[k] = navigate(v) ; hash }
102
+ end
103
+
104
+ alias_method :merge!, :update
105
+
106
+ # Returns an array of the values at the specified indices:
107
+ #
108
+ # hash = HashWithIndifferentAccess.new
109
+ # hash[:a] = "x"
110
+ # hash[:b] = "y"
111
+ # hash.values_at("a", "b") # => ["x", "y"]
112
+ #
113
+ def values_at(*indices)
114
+ indices.collect {|key| self[convert_key(key)]}
115
+ end
116
+
117
+ protected :get_value, :set_value
118
+
119
+ def convert_for_to_hash(value)
120
+ case value
121
+ when NavigableHash
122
+ convert_navigable_hash_for_to_hash value
123
+ when Array
124
+ convert_array_for_to_hash value
125
+ else
126
+ convert_value_for_to_hash value
127
+ end
128
+ end
129
+
130
+ def convert_key(key)
131
+ key.kind_of?(Symbol) ? key.to_s : key
132
+ end
133
+
134
+ def convert_navigable_hash_for_to_hash(value)
135
+ value.to_hash
136
+ end
137
+
138
+ def convert_array_for_to_hash(value)
139
+ value.map { |item| convert_for_to_hash item }
140
+ end
141
+
142
+ def convert_value_for_to_hash(value)
143
+ value
144
+ end
24
145
 
25
146
  def navigate value
26
147
  case value
148
+ when NavigableHash
149
+ value
27
150
  when Hash
28
151
  navigate_hash value
29
152
  when Array
@@ -45,4 +168,17 @@ class NavigableHash < HashWithIndifferentAccess
45
168
  value
46
169
  end
47
170
 
171
+ private
172
+
173
+ def method_missing(m, *args, &block)
174
+ m = m.to_s
175
+ if args.size == 1 && m.gsub!(/(.+)=$/, '\1')
176
+ self.send :[]=, m, args.first
177
+ elsif args.size == 0
178
+ self.send :[], m
179
+ else
180
+ raise ArgumentError, "wrong number of arguments(#{args.size} for 0)"
181
+ end
182
+ end
183
+
48
184
  end
@@ -1,15 +1,14 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'navigable_hash/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
6
  spec.name = "navigable_hash"
8
- spec.version = NavigableHash::VERSION
7
+ spec.version = "1.0.0"
9
8
  spec.authors = ["Jason Waldrip", "Kevin Wanek"]
10
9
  spec.email = ["jason@waldrip.net", "k@dmcy.us"]
11
- spec.description = %q{Allows a hash to be navigated with dot notation or indifferent access}
12
- spec.summary = %q{Allows a hash to be navigated with dot notation or indifferent access}
10
+ spec.description = %q{Allows a hash to be navigated with dot notation or indifferent access.}
11
+ spec.summary = %q{Allows a hash to be navigated with dot notation or indifferent access.}
13
12
  spec.homepage = "http://github.com/jwaldrip/navigable_hash"
14
13
  spec.license = "MIT"
15
14
 
@@ -18,12 +17,11 @@ Gem::Specification.new do |spec|
18
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
18
  spec.require_paths = ["lib"]
20
19
 
21
- spec.add_dependency "activesupport"
22
-
23
20
  spec.add_development_dependency "bundler", "~> 1.3"
24
21
  spec.add_development_dependency "rake"
25
22
  spec.add_development_dependency "rspec"
26
23
  spec.add_development_dependency "pry"
27
- spec.add_development_dependency "simplecov"
24
+ spec.add_development_dependency "coveralls"
25
+ spec.add_development_dependency "simplecov-multi"
28
26
 
29
27
  end
@@ -0,0 +1,54 @@
1
+ module NavigableHash::HelperMethods
2
+
3
+ def test_key_with_dot_notation(key, hash)
4
+ case (value = hash[key])
5
+ when Hash
6
+ value.keys.each { |key| test_key_with_dot_notation key, hash }
7
+ end
8
+ describe "##{key}" do
9
+ it "should call navigate" do
10
+ navigable.should_receive(:navigate).any_number_of_times
11
+ navigable.send(key)
12
+ end
13
+
14
+ it "should have a valid value" do
15
+ navigable.send(key).should == hash[key]
16
+ end
17
+ end
18
+ end
19
+
20
+ def test_key_with_symbol_notation(key, hash)
21
+ case (value = hash[key])
22
+ when Hash
23
+ value.keys.each { |key| test_key_with_dot_notation key, hash }
24
+ end
25
+ describe "##{key}" do
26
+ it "should call navigate" do
27
+ navigable.should_receive(:navigate).any_number_of_times
28
+ navigable[key.to_sym]
29
+ end
30
+
31
+ it "should have a valid value" do
32
+ navigable[key.to_sym].should == hash[key]
33
+ end
34
+ end
35
+ end
36
+
37
+ def test_key_with_string_notation(key, hash)
38
+ case (value = hash[key])
39
+ when Hash
40
+ value.keys.each { |key| test_key_with_dot_notation key, hash }
41
+ end
42
+ describe "##{key}" do
43
+ it "should call navigate" do
44
+ navigable.should_receive(:navigate).any_number_of_times
45
+ navigable[key.to_s]
46
+ end
47
+
48
+ it "should have a valid value" do
49
+ navigable[key.to_s].should == hash[key]
50
+ end
51
+ end
52
+ end
53
+
54
+ end
@@ -1,57 +1,237 @@
1
1
  require 'spec_helper'
2
2
  require 'pry'
3
+ require 'helpers/helper_methods'
4
+
5
+ RSpec.configure do |c|
6
+ c.extend NavigableHash::HelperMethods
7
+ end
3
8
 
4
9
  describe NavigableHash do
5
10
 
6
- TEST_HASH = { symbol_key: 'symbol_key_value', 'string_key' => 'string_key_value', hash_item: { inner_value: true }, array: [ {}, 'string', :symbol ] , nil_value: nil, object: Object.new }
11
+ TEST_HASH = { :symbol_key => 'symbol_key_value', 'string_key' => 'string_key_value', :hash_item => { :inner_value => true }, :array => [ {}, 'string', :symbol ] , :nil_value => nil, :object => Object.new }
12
+
13
+ describe ".new" do
14
+ context "given an array" do
15
+ it "should not raise an error" do
16
+ expect { NavigableHash.new([:a, 1]) }.to_not raise_error
17
+ end
18
+ end
19
+
20
+ context "given a hash" do
21
+ it "should not raise an error" do
22
+ expect { NavigableHash.new({:a => 1}) }.to_not raise_error
23
+ end
24
+ end
25
+ end
26
+
27
+ describe ".new(TEST_HASH)" do
28
+ context "with dot notation" do
29
+ TEST_HASH.keys.each do |key_name|
30
+ test_key_with_dot_notation(key_name, TEST_HASH)
31
+ end
32
+ end
33
+
34
+ context "with symbol notation" do
35
+ TEST_HASH.keys.each do |key_name|
36
+ test_key_with_symbol_notation(key_name, TEST_HASH)
37
+ end
38
+ end
39
+
40
+ context "with string notation" do
41
+ TEST_HASH.keys.each do |key_name|
42
+ test_key_with_string_notation(key_name, TEST_HASH)
43
+ end
44
+ end
45
+ end
7
46
 
8
47
  let(:hash){ TEST_HASH }
9
48
  let(:navigable){ NavigableHash.new(hash) }
10
49
 
50
+ context "with a deep setter" do
51
+ let(:hash){ {} }
52
+ it "should be able to set and get a deep value" do
53
+ value = "world"
54
+ navigable.foo = {}
55
+ navigable.foo.bar = {}
56
+ navigable.foo.bar.baz = value
57
+ navigable.foo.bar.baz.should == value
58
+ end
59
+ end
60
+
61
+ describe "#__any_method__" do
62
+ it "should not raise an error" do
63
+ expect { navigable.__any_method__ }.to_not raise_error
64
+ end
65
+
66
+ it "should get a value" do
67
+ navigable.__any_method__ = "foo"
68
+ navigable.__any_method__.should == "foo"
69
+ end
70
+
71
+ it "should raise an error with arguments" do
72
+ expect { navigable.__any_method__ :foo }.to raise_error
73
+ end
74
+ end
75
+
76
+ describe "#__any_method__=" do
77
+ it "should not raise an error" do
78
+ expect { navigable.__any_method__ = 'value' }.to_not raise_error
79
+ end
80
+
81
+ it "should set a value" do
82
+ expect { navigable.__any_method__ = 'value' }.to change { navigable.__any_method__ }
83
+ end
84
+
85
+ it "should raise an error with more than one argument" do
86
+ expect { navigable.send :__any_method__, :foo, :bar }.to raise_error
87
+ end
88
+ end
89
+
11
90
  describe "#[]" do
12
91
 
13
92
  context "given a hash" do
14
93
  it "should return a new instance of navigable hash" do
15
- navigable[:hash_item].should be_a NavigableHash
94
+ navigable[:hash_item].should be_an_instance_of NavigableHash
16
95
  end
17
96
  end
18
97
 
19
98
  context "given an array" do
20
99
  it "should call #navigate with each value" do
21
- size = hash[:array].size
22
- navigable.should_receive(:navigate_array).with(hash[:array])
23
- navigable[:array]
100
+ navigable[:array].should be_a Array
24
101
  end
25
102
  end
26
103
 
27
104
  context "given any object" do
28
105
  it "should return a value" do
29
- navigable.should_receive(:navigate_value).with(hash[:object]).any_number_of_times.and_call_original
30
- navigable[:object].should == hash[:object]
106
+ navigable[:object].should be_an_instance_of Object
31
107
  end
32
108
  end
33
109
 
34
110
  context "given nil" do
35
111
  it "should return a value" do
36
- navigable.should_receive(:navigate_value).with(hash[:nil_value]).any_number_of_times.and_call_original
37
- navigable[:nil_value].should == hash[:nil_value]
38
112
  navigable[:nil_value].should be_nil
39
113
  end
40
114
  end
41
115
 
42
116
  end
43
117
 
118
+ describe "#[]=" do
119
+ it "should set a value" do
120
+ expect { navigable[:new_key] = 'value' }.to change { navigable[:new_key] }
121
+ end
122
+
123
+ context "given a hash" do
124
+ it "should return a new instance of navigable hash" do
125
+ hash = {:a => 1, :b => 2, :c => 3}
126
+ navigable.should_receive(:navigate_hash).with(hash)
127
+ navigable[:hash] = hash
128
+ end
129
+ end
130
+
131
+ context "given an array" do
132
+ it "should call #navigate with each value" do
133
+ array = [1, 2, 3]
134
+ navigable.should_receive(:navigate_array).with(array)
135
+ navigable[:array] = array
136
+ end
137
+ end
138
+
139
+ context "given any object" do
140
+ it "should return a value" do
141
+ object = Object.new
142
+ navigable.should_receive(:navigate_value).with(object)
143
+ navigable[:object] = object
144
+ end
145
+ end
146
+
147
+ context "given nil" do
148
+ it "should return a value" do
149
+ navigable.should_receive(:navigate_value).with(nil)
150
+ navigable[:nil_value] = nil
151
+ end
152
+ end
153
+ end
154
+
44
155
  describe "#==" do
45
156
  it "should be equal to a hash" do
46
157
  navigable.should == hash
47
158
  end
48
159
  end
49
160
 
50
- TEST_HASH.keys.each do |key_name|
51
- describe "##{key_name}" do
52
- it "should call navigate" do
53
- navigable.should_receive(:navigate).any_number_of_times.and_call_original
54
- navigable.send(key_name).should == TEST_HASH[key_name]
161
+ describe "#delete" do
162
+ context "given a string as the key" do
163
+ it "should delete a value" do
164
+ expect { navigable.delete('hash_item') }.to change { navigable[:hash_item] }.to(nil)
165
+ end
166
+ end
167
+
168
+ context "given a symbol as the key" do
169
+ it "should delete a value" do
170
+ expect { navigable.delete(:hash_item) }.to change { navigable[:hash_item] }.to(nil)
171
+ end
172
+ end
173
+ end
174
+
175
+
176
+ describe "#dup" do
177
+ it "should return a copy of navigable hash" do
178
+ navigable.dup.should be_an_instance_of NavigableHash
179
+ end
180
+
181
+ it "should be equal to its original" do
182
+ navigable.dup.should == navigable
183
+ end
184
+ end
185
+
186
+ describe "#key?" do
187
+ context "if a key exists" do
188
+ it "should be true" do
189
+ navigable[:present_key] = 'value'
190
+ navigable.key?(:present_key).should be_true
191
+ end
192
+ end
193
+
194
+ context "if a key does not exist" do
195
+ it "should be false" do
196
+ navigable.key?(:no_key).should be_false
197
+ end
198
+ end
199
+ end
200
+
201
+ describe "#fetch" do
202
+ context "given a hash" do
203
+ let(:hash){ { :hash => {} } }
204
+ it "should return an instance of NavigableHash" do
205
+ navigable.fetch(:hash).should be_an_instance_of NavigableHash
206
+ end
207
+ end
208
+ end
209
+
210
+ describe "#merge" do
211
+ context "given a hash" do
212
+ it "should have a navigable hash" do
213
+ merged = navigable.merge({ :some_hash => {}})
214
+ merged[:some_hash].should be_an_instance_of NavigableHash
215
+ end
216
+ end
217
+ end
218
+
219
+ describe "#to_hash" do
220
+ it "should be an instance of Hash" do
221
+ navigable.to_hash.should be_an_instance_of Hash
222
+ end
223
+
224
+ it "inner hash should be an instance of hash" do
225
+ navigable[:hash_item].should be_an_instance_of NavigableHash
226
+ navigable.to_hash['hash_item'].should be_an_instance_of Hash
227
+ end
228
+ end
229
+
230
+ describe "#update" do
231
+ context "given a hash" do
232
+ it "should have a navigable hash" do
233
+ navigable.update({ :some_hash => {}})
234
+ navigable[:some_hash].should be_an_instance_of NavigableHash
55
235
  end
56
236
  end
57
237
  end
@@ -62,6 +242,13 @@ describe NavigableHash do
62
242
  end
63
243
  end
64
244
 
245
+ describe "#values_at" do
246
+ let (:hash){ { :foo => "foo_value", :bar => "bar_value", :baz => "baz_value" } }
247
+ it "should have the correct values" do
248
+ navigable.values_at(:foo, :bar).should == [hash[:foo], hash[:bar]]
249
+ end
250
+ end
251
+
65
252
  describe "#method_missing" do
66
253
  it "should return nil" do
67
254
  navigable.this_is_not_a_method.should be_nil
data/spec/spec_helper.rb CHANGED
@@ -5,7 +5,14 @@
5
5
  #
6
6
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
7
  require 'simplecov'
8
+ require 'coveralls'
9
+
10
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
11
+ SimpleCov::Formatter::HTMLFormatter,
12
+ Coveralls::SimpleCov::Formatter
13
+ ]
8
14
  SimpleCov.start
15
+
9
16
  require 'navigable_hash'
10
17
 
11
18
  RSpec.configure do |config|
@@ -17,5 +24,5 @@ RSpec.configure do |config|
17
24
  # order dependency and want to debug it, you can fix the order by providing
18
25
  # the seed, which is printed after each run.
19
26
  # --seed 1234
20
- config.order = 'random'
27
+ # config.order = 'random'
21
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: navigable_hash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,42 +10,42 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-03-28 00:00:00.000000000 Z
13
+ date: 2013-03-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: activesupport
16
+ name: bundler
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ! '>='
20
+ - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: '0'
23
- type: :runtime
22
+ version: '1.3'
23
+ type: :development
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  none: false
27
27
  requirements:
28
- - - ! '>='
28
+ - - ~>
29
29
  - !ruby/object:Gem::Version
30
- version: '0'
30
+ version: '1.3'
31
31
  - !ruby/object:Gem::Dependency
32
- name: bundler
32
+ name: rake
33
33
  requirement: !ruby/object:Gem::Requirement
34
34
  none: false
35
35
  requirements:
36
- - - ~>
36
+ - - ! '>='
37
37
  - !ruby/object:Gem::Version
38
- version: '1.3'
38
+ version: '0'
39
39
  type: :development
40
40
  prerelease: false
41
41
  version_requirements: !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
- - - ~>
44
+ - - ! '>='
45
45
  - !ruby/object:Gem::Version
46
- version: '1.3'
46
+ version: '0'
47
47
  - !ruby/object:Gem::Dependency
48
- name: rake
48
+ name: rspec
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
@@ -61,7 +61,7 @@ dependencies:
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  - !ruby/object:Gem::Dependency
64
- name: rspec
64
+ name: pry
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  none: false
67
67
  requirements:
@@ -77,7 +77,7 @@ dependencies:
77
77
  - !ruby/object:Gem::Version
78
78
  version: '0'
79
79
  - !ruby/object:Gem::Dependency
80
- name: pry
80
+ name: coveralls
81
81
  requirement: !ruby/object:Gem::Requirement
82
82
  none: false
83
83
  requirements:
@@ -93,7 +93,7 @@ dependencies:
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  - !ruby/object:Gem::Dependency
96
- name: simplecov
96
+ name: simplecov-multi
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  none: false
99
99
  requirements:
@@ -108,7 +108,7 @@ dependencies:
108
108
  - - ! '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
- description: Allows a hash to be navigated with dot notation or indifferent access
111
+ description: Allows a hash to be navigated with dot notation or indifferent access.
112
112
  email:
113
113
  - jason@waldrip.net
114
114
  - k@dmcy.us
@@ -116,15 +116,17 @@ executables: []
116
116
  extensions: []
117
117
  extra_rdoc_files: []
118
118
  files:
119
+ - .coveralls.yml
119
120
  - .gitignore
120
121
  - .rspec
122
+ - .travis.yml
121
123
  - Gemfile
122
124
  - LICENSE.txt
123
125
  - README.md
124
126
  - Rakefile
125
127
  - lib/navigable_hash.rb
126
- - lib/navigable_hash/version.rb
127
128
  - navigable_hash.gemspec
129
+ - spec/helpers/helper_methods.rb
128
130
  - spec/lib/navigable_hash_spec.rb
129
131
  - spec/spec_helper.rb
130
132
  homepage: http://github.com/jwaldrip/navigable_hash
@@ -148,10 +150,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
150
  version: '0'
149
151
  requirements: []
150
152
  rubyforge_project:
151
- rubygems_version: 1.8.23
153
+ rubygems_version: 1.8.25
152
154
  signing_key:
153
155
  specification_version: 3
154
- summary: Allows a hash to be navigated with dot notation or indifferent access
156
+ summary: Allows a hash to be navigated with dot notation or indifferent access.
155
157
  test_files:
158
+ - spec/helpers/helper_methods.rb
156
159
  - spec/lib/navigable_hash_spec.rb
157
160
  - spec/spec_helper.rb
@@ -1,5 +0,0 @@
1
- require 'active_support/hash_with_indifferent_access'
2
-
3
- class NavigableHash < HashWithIndifferentAccess
4
- VERSION = "0.0.1"
5
- end