hashie 2.1.2 → 3.0.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.
- checksums.yaml +7 -0
- data/.travis.yml +3 -2
- data/CHANGELOG.md +11 -3
- data/Gemfile +1 -1
- data/README.md +72 -79
- data/UPGRADING.md +93 -0
- data/hashie.gemspec +8 -8
- data/lib/hashie.rb +18 -11
- data/lib/hashie/dash.rb +8 -9
- data/lib/hashie/extensions/coercion.rb +1 -1
- data/lib/hashie/extensions/dash/indifferent_access.rb +21 -0
- data/lib/hashie/extensions/deep_fetch.rb +1 -1
- data/lib/hashie/extensions/ignore_undeclared.rb +5 -1
- data/lib/hashie/extensions/key_conversion.rb +0 -82
- data/lib/hashie/extensions/pretty_inspect.rb +19 -0
- data/lib/hashie/extensions/stringify_keys.rb +44 -0
- data/lib/hashie/extensions/symbolize_keys.rb +44 -0
- data/lib/hashie/hash.rb +17 -5
- data/lib/hashie/mash.rb +24 -13
- data/lib/hashie/rash.rb +1 -1
- data/lib/hashie/trash.rb +9 -10
- data/lib/hashie/version.rb +1 -1
- data/spec/hashie/dash_spec.rb +69 -24
- data/spec/hashie/extensions/dash/indifferent_access_spec.rb +58 -0
- data/spec/hashie/extensions/deep_fetch_spec.rb +27 -0
- data/spec/hashie/extensions/ignore_undeclared_spec.rb +36 -13
- data/spec/hashie/extensions/indifferent_access_spec.rb +2 -2
- data/spec/hashie/hash_spec.rb +15 -23
- data/spec/hashie/mash_spec.rb +41 -29
- data/spec/hashie/trash_spec.rb +5 -2
- data/spec/spec_helper.rb +0 -1
- metadata +20 -28
- data/lib/hashie/hash_extensions.rb +0 -47
- data/spec/spec.opts +0 -3
data/spec/hashie/hash_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Hash do
|
4
4
|
it 'is convertible to a Hashie::Mash' do
|
5
5
|
mash = Hashie::Hash[some: 'hash'].to_mash
|
6
|
-
expect(mash.is_a?(Hashie::Mash)).to
|
6
|
+
expect(mash.is_a?(Hashie::Mash)).to be_truthy
|
7
7
|
expect(mash.some).to eq 'hash'
|
8
8
|
end
|
9
9
|
|
@@ -13,6 +13,12 @@ describe Hash do
|
|
13
13
|
expect(hash).to eq Hashie::Hash['a' => 'hey', '123' => 'bob']
|
14
14
|
end
|
15
15
|
|
16
|
+
it '#stringify_keys! turns all keys into strings non-recursively' do
|
17
|
+
hash = Hashie::Hash[:a => 'hey', 123 => { 345 => 'hey' }]
|
18
|
+
hash.stringify_keys!
|
19
|
+
expect(hash).to eq Hashie::Hash['a' => 'hey', '123' => { 345 => 'hey' }]
|
20
|
+
end
|
21
|
+
|
16
22
|
it '#stringify_keys returns a hash with stringified keys' do
|
17
23
|
hash = Hashie::Hash[:a => 'hey', 123 => 'bob']
|
18
24
|
stringified_hash = hash.stringify_keys
|
@@ -20,10 +26,16 @@ describe Hash do
|
|
20
26
|
expect(stringified_hash).to eq Hashie::Hash['a' => 'hey', '123' => 'bob']
|
21
27
|
end
|
22
28
|
|
23
|
-
it '#to_hash returns a hash with
|
29
|
+
it '#to_hash returns a hash with same keys' do
|
24
30
|
hash = Hashie::Hash['a' => 'hey', 123 => 'bob', 'array' => [1, 2, 3]]
|
25
31
|
stringified_hash = hash.to_hash
|
26
|
-
expect(stringified_hash).to eq('a' => 'hey',
|
32
|
+
expect(stringified_hash).to eq('a' => 'hey', 123 => 'bob', 'array' => [1, 2, 3])
|
33
|
+
end
|
34
|
+
|
35
|
+
it '#to_hash with stringify_keys set to true returns a hash with stringified_keys' do
|
36
|
+
hash = Hashie::Hash['a' => 'hey', 123 => 'bob', 'array' => [1, 2, 3]]
|
37
|
+
symbolized_hash = hash.to_hash(stringify_keys: true)
|
38
|
+
expect(symbolized_hash).to eq('a' => 'hey', '123' => 'bob', 'array' => [1, 2, 3])
|
27
39
|
end
|
28
40
|
|
29
41
|
it '#to_hash with symbolize_keys set to true returns a hash with symbolized keys' do
|
@@ -43,24 +55,4 @@ describe Hash do
|
|
43
55
|
h[:key] = BareCustomMash.new
|
44
56
|
expect { h.to_hash }.not_to raise_error
|
45
57
|
end
|
46
|
-
|
47
|
-
describe 'when the value is an object that respond_to to_hash' do
|
48
|
-
class ClassRespondsToHash
|
49
|
-
def to_hash(options = {})
|
50
|
-
Hashie::Hash['a' => 'hey', b: 'bar', 123 => 'bob', 'array' => [1, 2, 3]].to_hash(options)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
it '#to_hash with stringify_keys set to true returns a hash with stringified_keys' do
|
55
|
-
hash = Hashie::Hash['a' => 'hey', 123 => 'bob', 'array' => [1, 2, 3], subhash: ClassRespondsToHash.new]
|
56
|
-
symbolized_hash = hash.to_hash(stringify_keys: true)
|
57
|
-
expect(symbolized_hash).to eq('a' => 'hey', '123' => 'bob', 'array' => [1, 2, 3], 'subhash' => { 'a' => 'hey', 'b' => 'bar', '123' => 'bob', 'array' => [1, 2, 3] })
|
58
|
-
end
|
59
|
-
|
60
|
-
it '#to_hash with symbolize_keys set to true returns a hash with symbolized keys' do
|
61
|
-
hash = Hashie::Hash['a' => 'hey', 123 => 'bob', 'array' => [1, 2, 3], subhash: ClassRespondsToHash.new]
|
62
|
-
symbolized_hash = hash.to_hash(symbolize_keys: true)
|
63
|
-
expect(symbolized_hash).to eq(:a => 'hey', :"123" => 'bob', :array => [1, 2, 3], subhash: { :a => 'hey', :b => 'bar', :'123' => 'bob', :array => [1, 2, 3] })
|
64
|
-
end
|
65
|
-
end
|
66
58
|
end
|
data/spec/hashie/mash_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe Hashie::Mash do
|
|
5
5
|
subject { Hashie::Mash.new }
|
6
6
|
|
7
7
|
it 'inherits from Hash' do
|
8
|
-
expect(subject.is_a?(Hash)).to
|
8
|
+
expect(subject.is_a?(Hash)).to be_truthy
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'sets hash values through method= calls' do
|
@@ -33,9 +33,9 @@ describe Hashie::Mash do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'tests for already set values when passed a ? method' do
|
36
|
-
expect(subject.test?).to
|
36
|
+
expect(subject.test?).to be_falsy
|
37
37
|
subject.test = 'abc'
|
38
|
-
expect(subject.test?).to
|
38
|
+
expect(subject.test?).to be_truthy
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'returns false on a ? method if a value has been set to nil or false' do
|
@@ -47,7 +47,7 @@ describe Hashie::Mash do
|
|
47
47
|
|
48
48
|
it 'makes all [] and []= into strings for consistency' do
|
49
49
|
subject['abc'] = 123
|
50
|
-
expect(subject.key?('abc')).to
|
50
|
+
expect(subject.key?('abc')).to be_truthy
|
51
51
|
expect(subject['abc']).to eq 123
|
52
52
|
end
|
53
53
|
|
@@ -72,7 +72,7 @@ describe Hashie::Mash do
|
|
72
72
|
end
|
73
73
|
|
74
74
|
it 'returns a Hashie::Mash when passed a bang method to a non-existenct key' do
|
75
|
-
expect(subject.abc!.is_a?(Hashie::Mash)).to
|
75
|
+
expect(subject.abc!.is_a?(Hashie::Mash)).to be_truthy
|
76
76
|
end
|
77
77
|
|
78
78
|
it 'returns the existing value when passed a bang method for an existing key' do
|
@@ -81,7 +81,7 @@ describe Hashie::Mash do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
it 'returns a Hashie::Mash when passed an under bang method to a non-existenct key' do
|
84
|
-
expect(subject.abc_.is_a?(Hashie::Mash)).to
|
84
|
+
expect(subject.abc_.is_a?(Hashie::Mash)).to be_truthy
|
85
85
|
end
|
86
86
|
|
87
87
|
it 'returns the existing value when passed an under bang method for an existing key' do
|
@@ -90,7 +90,7 @@ describe Hashie::Mash do
|
|
90
90
|
end
|
91
91
|
|
92
92
|
it '#initializing_reader returns a Hashie::Mash when passed a non-existent key' do
|
93
|
-
expect(subject.initializing_reader(:abc).is_a?(Hashie::Mash)).to
|
93
|
+
expect(subject.initializing_reader(:abc).is_a?(Hashie::Mash)).to be_truthy
|
94
94
|
end
|
95
95
|
|
96
96
|
it 'allows for multi-level assignment through bang methods' do
|
@@ -176,7 +176,7 @@ describe Hashie::Mash do
|
|
176
176
|
|
177
177
|
# http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-update
|
178
178
|
it 'accepts a block' do
|
179
|
-
duped = subject.merge(details: { address: 'Pasadena CA' }) { |
|
179
|
+
duped = subject.merge(details: { address: 'Pasadena CA' }) { |_, oldv, newv| [oldv, newv].join(', ') }
|
180
180
|
expect(duped.details.address).to eq 'Nowhere road, Pasadena CA'
|
181
181
|
end
|
182
182
|
end
|
@@ -218,18 +218,18 @@ describe Hashie::Mash do
|
|
218
218
|
end
|
219
219
|
|
220
220
|
it 'sets all specified keys to their corresponding values' do
|
221
|
-
expect(subject.middle_name?).to
|
222
|
-
expect(subject.details?).to
|
221
|
+
expect(subject.middle_name?).to be_truthy
|
222
|
+
expect(subject.details?).to be_truthy
|
223
223
|
expect(subject.middle_name).to eq 'Cain'
|
224
|
-
expect(subject.details.city?).to
|
224
|
+
expect(subject.details.city?).to be_truthy
|
225
225
|
expect(subject.details.city).to eq 'Imagination'
|
226
226
|
end
|
227
227
|
|
228
228
|
it 'leaves only specified keys' do
|
229
229
|
expect(subject.keys.sort).to eq %w(details middle_name)
|
230
|
-
expect(subject.first_name?).to
|
230
|
+
expect(subject.first_name?).to be_falsy
|
231
231
|
expect(subject).not_to respond_to(:first_name)
|
232
|
-
expect(subject.last_name?).to
|
232
|
+
expect(subject.last_name?).to be_falsy
|
233
233
|
expect(subject).not_to respond_to(:last_name)
|
234
234
|
end
|
235
235
|
end
|
@@ -314,32 +314,36 @@ describe Hashie::Mash do
|
|
314
314
|
end
|
315
315
|
|
316
316
|
describe '#respond_to?' do
|
317
|
+
subject do
|
318
|
+
Hashie::Mash.new(abc: 'def')
|
319
|
+
end
|
320
|
+
|
317
321
|
it 'responds to a normal method' do
|
318
|
-
expect(
|
322
|
+
expect(subject).to be_respond_to(:key?)
|
319
323
|
end
|
320
324
|
|
321
325
|
it 'responds to a set key' do
|
322
|
-
expect(
|
326
|
+
expect(subject).to be_respond_to(:abc)
|
327
|
+
expect(subject.method(:abc)).to_not be_nil
|
323
328
|
end
|
324
329
|
|
325
330
|
it 'responds to a set key with a suffix' do
|
326
331
|
%w(= ? ! _).each do |suffix|
|
327
|
-
expect(
|
332
|
+
expect(subject).to be_respond_to(:"abc#{suffix}")
|
333
|
+
expect(subject.method(:"abc#{suffix}")).to_not be_nil
|
328
334
|
end
|
329
335
|
end
|
330
336
|
|
331
|
-
it '
|
337
|
+
it 'responds to an unknown key with a suffix' do
|
332
338
|
%w(= ? ! _).each do |suffix|
|
333
|
-
expect(
|
339
|
+
expect(subject).to be_respond_to(:"xyz#{suffix}")
|
340
|
+
expect(subject.method(:"xyz#{suffix}")).to_not be_nil
|
334
341
|
end
|
335
342
|
end
|
336
343
|
|
337
344
|
it 'does not respond to an unknown key without a suffix' do
|
338
|
-
expect(
|
339
|
-
|
340
|
-
|
341
|
-
it 'does not respond to permitted?' do
|
342
|
-
expect(Hashie::Mash.new).not_to be_respond_to(:permitted?)
|
345
|
+
expect(subject).not_to be_respond_to(:xyz)
|
346
|
+
expect { subject.method(:xyz) }.to raise_error(NameError)
|
343
347
|
end
|
344
348
|
end
|
345
349
|
|
@@ -352,7 +356,7 @@ describe Hashie::Mash do
|
|
352
356
|
|
353
357
|
it 'converts hashes recursively into Hashie::Mashes' do
|
354
358
|
converted = Hashie::Mash.new(a: { b: 1, c: { d: 23 } })
|
355
|
-
expect(converted.a.is_a?(Hashie::Mash)).to
|
359
|
+
expect(converted.a.is_a?(Hashie::Mash)).to be_truthy
|
356
360
|
expect(converted.a.b).to eq 1
|
357
361
|
expect(converted.a.c.d).to eq 23
|
358
362
|
end
|
@@ -379,15 +383,15 @@ describe Hashie::Mash do
|
|
379
383
|
expect(initial.default_proc).not_to be_nil
|
380
384
|
expect(initial.default).to be_nil
|
381
385
|
expect(initial.test).to eq []
|
382
|
-
expect(initial.test?).to
|
386
|
+
expect(initial.test?).to be_truthy
|
383
387
|
end
|
384
388
|
|
385
389
|
it 'converts Hashie::Mashes within Arrays back to Hashes' do
|
386
390
|
initial_hash = { 'a' => [{ 'b' => 12, 'c' => ['d' => 50, 'e' => 51] }, 23] }
|
387
391
|
converted = Hashie::Mash.new(initial_hash)
|
388
|
-
expect(converted.to_hash['a'].first.is_a?(Hashie::Mash)).to
|
389
|
-
expect(converted.to_hash['a'].first.is_a?(Hash)).to
|
390
|
-
expect(converted.to_hash['a'].first['c'].first.is_a?(Hashie::Mash)).to
|
392
|
+
expect(converted.to_hash['a'].first.is_a?(Hashie::Mash)).to be_falsy
|
393
|
+
expect(converted.to_hash['a'].first.is_a?(Hash)).to be_truthy
|
394
|
+
expect(converted.to_hash['a'].first['c'].first.is_a?(Hashie::Mash)).to be_falsy
|
391
395
|
end
|
392
396
|
end
|
393
397
|
|
@@ -429,7 +433,7 @@ describe Hashie::Mash do
|
|
429
433
|
|
430
434
|
context 'with block given' do
|
431
435
|
it 'returns default value' do
|
432
|
-
expect(mash.fetch(:two) do
|
436
|
+
expect(mash.fetch(:two) do
|
433
437
|
'block default value'
|
434
438
|
end).to eql('block default value')
|
435
439
|
end
|
@@ -464,4 +468,12 @@ describe Hashie::Mash do
|
|
464
468
|
expect(mash.to_hash(symbolize_keys: true)[:outer].keys).not_to include('inner')
|
465
469
|
end
|
466
470
|
end
|
471
|
+
|
472
|
+
describe '#stringify_keys' do
|
473
|
+
it 'turns all keys into strings recursively' do
|
474
|
+
hash = Hashie::Mash[:a => 'hey', 123 => { 345 => 'hey' }]
|
475
|
+
hash.stringify_keys!
|
476
|
+
expect(hash).to eq Hashie::Hash['a' => 'hey', '123' => { '345' => 'hey' }]
|
477
|
+
end
|
478
|
+
end
|
467
479
|
end
|
data/spec/hashie/trash_spec.rb
CHANGED
@@ -57,11 +57,14 @@ describe Hashie::Trash do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
it 'writes to an existing property using []=' do
|
60
|
-
expect { trash[
|
60
|
+
expect { trash[:first_name] = 'Bob' }.not_to raise_error
|
61
|
+
expect(trash.first_name).to eq('Bob')
|
62
|
+
expect { trash['first_name'] = 'John' }.to raise_error(NoMethodError)
|
61
63
|
end
|
62
64
|
|
63
65
|
it 'writes to a translated property using []=' do
|
64
|
-
expect { trash[
|
66
|
+
expect { trash[:firstName] = 'Bob' }.not_to raise_error
|
67
|
+
expect { trash['firstName'] = 'Bob' }.to raise_error(NoMethodError)
|
65
68
|
end
|
66
69
|
|
67
70
|
it 'reads/writes to an existing property using a method call' do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hashie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 3.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Michael Bleigh
|
@@ -10,40 +9,36 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2014-06-
|
12
|
+
date: 2014-06-03 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: rake
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - '>='
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '0'
|
23
21
|
type: :development
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- -
|
25
|
+
- - '>='
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: '0'
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: rspec
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
|
-
- -
|
32
|
+
- - ~>
|
37
33
|
- !ruby/object:Gem::Version
|
38
|
-
version: '0'
|
34
|
+
version: '3.0'
|
39
35
|
type: :development
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
|
-
- -
|
39
|
+
- - ~>
|
45
40
|
- !ruby/object:Gem::Version
|
46
|
-
version: '0'
|
41
|
+
version: '3.0'
|
47
42
|
description: Hashie is a collection of classes and mixins that make hashes more powerful.
|
48
43
|
email:
|
49
44
|
- michael@intridea.com
|
@@ -64,11 +59,13 @@ files:
|
|
64
59
|
- LICENSE
|
65
60
|
- README.md
|
66
61
|
- Rakefile
|
62
|
+
- UPGRADING.md
|
67
63
|
- hashie.gemspec
|
68
64
|
- lib/hashie.rb
|
69
65
|
- lib/hashie/clash.rb
|
70
66
|
- lib/hashie/dash.rb
|
71
67
|
- lib/hashie/extensions/coercion.rb
|
68
|
+
- lib/hashie/extensions/dash/indifferent_access.rb
|
72
69
|
- lib/hashie/extensions/deep_fetch.rb
|
73
70
|
- lib/hashie/extensions/deep_merge.rb
|
74
71
|
- lib/hashie/extensions/ignore_undeclared.rb
|
@@ -76,8 +73,10 @@ files:
|
|
76
73
|
- lib/hashie/extensions/key_conversion.rb
|
77
74
|
- lib/hashie/extensions/merge_initializer.rb
|
78
75
|
- lib/hashie/extensions/method_access.rb
|
76
|
+
- lib/hashie/extensions/pretty_inspect.rb
|
77
|
+
- lib/hashie/extensions/stringify_keys.rb
|
78
|
+
- lib/hashie/extensions/symbolize_keys.rb
|
79
79
|
- lib/hashie/hash.rb
|
80
|
-
- lib/hashie/hash_extensions.rb
|
81
80
|
- lib/hashie/mash.rb
|
82
81
|
- lib/hashie/rash.rb
|
83
82
|
- lib/hashie/trash.rb
|
@@ -85,6 +84,7 @@ files:
|
|
85
84
|
- spec/hashie/clash_spec.rb
|
86
85
|
- spec/hashie/dash_spec.rb
|
87
86
|
- spec/hashie/extensions/coercion_spec.rb
|
87
|
+
- spec/hashie/extensions/dash/indifferent_access_spec.rb
|
88
88
|
- spec/hashie/extensions/deep_fetch_spec.rb
|
89
89
|
- spec/hashie/extensions/deep_merge_spec.rb
|
90
90
|
- spec/hashie/extensions/ignore_undeclared_spec.rb
|
@@ -97,43 +97,36 @@ files:
|
|
97
97
|
- spec/hashie/rash_spec.rb
|
98
98
|
- spec/hashie/trash_spec.rb
|
99
99
|
- spec/hashie/version_spec.rb
|
100
|
-
- spec/spec.opts
|
101
100
|
- spec/spec_helper.rb
|
102
101
|
homepage: https://github.com/intridea/hashie
|
103
102
|
licenses:
|
104
103
|
- MIT
|
104
|
+
metadata: {}
|
105
105
|
post_install_message:
|
106
106
|
rdoc_options: []
|
107
107
|
require_paths:
|
108
108
|
- lib
|
109
109
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
-
none: false
|
111
110
|
requirements:
|
112
|
-
- -
|
111
|
+
- - '>='
|
113
112
|
- !ruby/object:Gem::Version
|
114
113
|
version: '0'
|
115
|
-
segments:
|
116
|
-
- 0
|
117
|
-
hash: 775336832915500848
|
118
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
115
|
requirements:
|
121
|
-
- -
|
116
|
+
- - '>='
|
122
117
|
- !ruby/object:Gem::Version
|
123
118
|
version: '0'
|
124
|
-
segments:
|
125
|
-
- 0
|
126
|
-
hash: 775336832915500848
|
127
119
|
requirements: []
|
128
120
|
rubyforge_project:
|
129
|
-
rubygems_version:
|
121
|
+
rubygems_version: 2.0.14
|
130
122
|
signing_key:
|
131
|
-
specification_version:
|
123
|
+
specification_version: 4
|
132
124
|
summary: Your friendly neighborhood hash library.
|
133
125
|
test_files:
|
134
126
|
- spec/hashie/clash_spec.rb
|
135
127
|
- spec/hashie/dash_spec.rb
|
136
128
|
- spec/hashie/extensions/coercion_spec.rb
|
129
|
+
- spec/hashie/extensions/dash/indifferent_access_spec.rb
|
137
130
|
- spec/hashie/extensions/deep_fetch_spec.rb
|
138
131
|
- spec/hashie/extensions/deep_merge_spec.rb
|
139
132
|
- spec/hashie/extensions/ignore_undeclared_spec.rb
|
@@ -146,5 +139,4 @@ test_files:
|
|
146
139
|
- spec/hashie/rash_spec.rb
|
147
140
|
- spec/hashie/trash_spec.rb
|
148
141
|
- spec/hashie/version_spec.rb
|
149
|
-
- spec/spec.opts
|
150
142
|
- spec/spec_helper.rb
|
@@ -1,47 +0,0 @@
|
|
1
|
-
module Hashie
|
2
|
-
module HashExtensions
|
3
|
-
def self.included(base)
|
4
|
-
# Don't tread on existing extensions of Hash by
|
5
|
-
# adding methods that are likely to exist.
|
6
|
-
%w(stringify_keys stringify_keys!).each do |hashie_method|
|
7
|
-
base.send :alias_method, hashie_method, "hashie_#{hashie_method}" unless base.instance_methods.include?(hashie_method)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
# Destructively convert all of the keys of a Hash
|
12
|
-
# to their string representations.
|
13
|
-
def hashie_stringify_keys!
|
14
|
-
keys.each do |k|
|
15
|
-
self[k.to_s] = delete(k) unless String === k
|
16
|
-
end
|
17
|
-
self
|
18
|
-
end
|
19
|
-
|
20
|
-
# Convert all of the keys of a Hash
|
21
|
-
# to their string representations.
|
22
|
-
def hashie_stringify_keys
|
23
|
-
dup.stringify_keys!
|
24
|
-
end
|
25
|
-
|
26
|
-
# Convert this hash into a Mash
|
27
|
-
def to_mash
|
28
|
-
::Hashie::Mash.new(self)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
module PrettyInspect
|
33
|
-
def self.included(base)
|
34
|
-
base.send :alias_method, :hash_inspect, :inspect
|
35
|
-
base.send :alias_method, :inspect, :hashie_inspect
|
36
|
-
end
|
37
|
-
|
38
|
-
def hashie_inspect
|
39
|
-
ret = "#<#{self.class}"
|
40
|
-
stringify_keys.keys.sort.each do |key|
|
41
|
-
ret << " #{key}=#{self[key].inspect}"
|
42
|
-
end
|
43
|
-
ret << '>'
|
44
|
-
ret
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|