hashie 3.4.3 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +516 -129
  3. data/CONTRIBUTING.md +24 -7
  4. data/LICENSE +1 -1
  5. data/README.md +408 -50
  6. data/Rakefile +18 -1
  7. data/UPGRADING.md +157 -7
  8. data/hashie.gemspec +14 -8
  9. data/lib/hashie/array.rb +21 -0
  10. data/lib/hashie/clash.rb +24 -12
  11. data/lib/hashie/dash.rb +56 -31
  12. data/lib/hashie/extensions/active_support/core_ext/hash.rb +14 -0
  13. data/lib/hashie/extensions/array/pretty_inspect.rb +19 -0
  14. data/lib/hashie/extensions/coercion.rb +30 -17
  15. data/lib/hashie/extensions/dash/indifferent_access.rb +30 -1
  16. data/lib/hashie/extensions/dash/predefined_values.rb +88 -0
  17. data/lib/hashie/extensions/dash/property_translation.rb +59 -28
  18. data/lib/hashie/extensions/deep_fetch.rb +5 -3
  19. data/lib/hashie/extensions/deep_find.rb +14 -5
  20. data/lib/hashie/extensions/deep_locate.rb +40 -21
  21. data/lib/hashie/extensions/deep_merge.rb +26 -10
  22. data/lib/hashie/extensions/ignore_undeclared.rb +6 -4
  23. data/lib/hashie/extensions/indifferent_access.rb +49 -8
  24. data/lib/hashie/extensions/key_conflict_warning.rb +55 -0
  25. data/lib/hashie/extensions/mash/define_accessors.rb +90 -0
  26. data/lib/hashie/extensions/mash/keep_original_keys.rb +53 -0
  27. data/lib/hashie/extensions/mash/permissive_respond_to.rb +61 -0
  28. data/lib/hashie/extensions/mash/safe_assignment.rb +3 -1
  29. data/lib/hashie/extensions/mash/symbolize_keys.rb +38 -0
  30. data/lib/hashie/extensions/method_access.rb +77 -19
  31. data/lib/hashie/extensions/parsers/yaml_erb_parser.rb +29 -5
  32. data/lib/hashie/extensions/ruby_version.rb +60 -0
  33. data/lib/hashie/extensions/ruby_version_check.rb +21 -0
  34. data/lib/hashie/extensions/strict_key_access.rb +16 -13
  35. data/lib/hashie/extensions/stringify_keys.rb +1 -1
  36. data/lib/hashie/extensions/symbolize_keys.rb +13 -2
  37. data/lib/hashie/hash.rb +18 -11
  38. data/lib/hashie/logger.rb +18 -0
  39. data/lib/hashie/mash.rb +177 -43
  40. data/lib/hashie/railtie.rb +21 -0
  41. data/lib/hashie/rash.rb +7 -7
  42. data/lib/hashie/utils.rb +44 -0
  43. data/lib/hashie/version.rb +1 -1
  44. data/lib/hashie.rb +33 -17
  45. metadata +28 -95
  46. data/spec/hashie/clash_spec.rb +0 -48
  47. data/spec/hashie/dash_spec.rb +0 -513
  48. data/spec/hashie/extensions/autoload_spec.rb +0 -24
  49. data/spec/hashie/extensions/coercion_spec.rb +0 -625
  50. data/spec/hashie/extensions/dash/coercion_spec.rb +0 -13
  51. data/spec/hashie/extensions/dash/indifferent_access_spec.rb +0 -84
  52. data/spec/hashie/extensions/deep_fetch_spec.rb +0 -97
  53. data/spec/hashie/extensions/deep_find_spec.rb +0 -45
  54. data/spec/hashie/extensions/deep_locate_spec.rb +0 -124
  55. data/spec/hashie/extensions/deep_merge_spec.rb +0 -65
  56. data/spec/hashie/extensions/ignore_undeclared_spec.rb +0 -46
  57. data/spec/hashie/extensions/indifferent_access_spec.rb +0 -219
  58. data/spec/hashie/extensions/indifferent_access_with_rails_hwia_spec.rb +0 -208
  59. data/spec/hashie/extensions/key_conversion_spec.rb +0 -12
  60. data/spec/hashie/extensions/mash/safe_assignment_spec.rb +0 -50
  61. data/spec/hashie/extensions/merge_initializer_spec.rb +0 -23
  62. data/spec/hashie/extensions/method_access_spec.rb +0 -184
  63. data/spec/hashie/extensions/strict_key_access_spec.rb +0 -110
  64. data/spec/hashie/extensions/stringify_keys_spec.rb +0 -124
  65. data/spec/hashie/extensions/symbolize_keys_spec.rb +0 -129
  66. data/spec/hashie/hash_spec.rb +0 -84
  67. data/spec/hashie/mash_spec.rb +0 -680
  68. data/spec/hashie/parsers/yaml_erb_parser_spec.rb +0 -29
  69. data/spec/hashie/rash_spec.rb +0 -77
  70. data/spec/hashie/trash_spec.rb +0 -268
  71. data/spec/hashie/version_spec.rb +0 -7
  72. data/spec/spec_helper.rb +0 -16
  73. data/spec/support/module_context.rb +0 -11
metadata CHANGED
@@ -1,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hashie
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.3
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
8
8
  - Jerry Cheung
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-10-25 00:00:00.000000000 Z
12
+ date: 2021-11-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
15
+ name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ">="
@@ -25,34 +25,6 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
- - !ruby/object:Gem::Dependency
29
- name: rspec
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: '3.0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '3.0'
42
- - !ruby/object:Gem::Dependency
43
- name: rspec-pending_for
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: '0.1'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: '0.1'
56
28
  description: Hashie is a collection of classes and mixins that make hashes more powerful.
57
29
  email:
58
30
  - michael@intridea.com
@@ -70,11 +42,15 @@ files:
70
42
  - UPGRADING.md
71
43
  - hashie.gemspec
72
44
  - lib/hashie.rb
45
+ - lib/hashie/array.rb
73
46
  - lib/hashie/clash.rb
74
47
  - lib/hashie/dash.rb
48
+ - lib/hashie/extensions/active_support/core_ext/hash.rb
49
+ - lib/hashie/extensions/array/pretty_inspect.rb
75
50
  - lib/hashie/extensions/coercion.rb
76
51
  - lib/hashie/extensions/dash/coercion.rb
77
52
  - lib/hashie/extensions/dash/indifferent_access.rb
53
+ - lib/hashie/extensions/dash/predefined_values.rb
78
54
  - lib/hashie/extensions/dash/property_translation.rb
79
55
  - lib/hashie/extensions/deep_fetch.rb
80
56
  - lib/hashie/extensions/deep_find.rb
@@ -82,53 +58,39 @@ files:
82
58
  - lib/hashie/extensions/deep_merge.rb
83
59
  - lib/hashie/extensions/ignore_undeclared.rb
84
60
  - lib/hashie/extensions/indifferent_access.rb
61
+ - lib/hashie/extensions/key_conflict_warning.rb
85
62
  - lib/hashie/extensions/key_conversion.rb
63
+ - lib/hashie/extensions/mash/define_accessors.rb
64
+ - lib/hashie/extensions/mash/keep_original_keys.rb
65
+ - lib/hashie/extensions/mash/permissive_respond_to.rb
86
66
  - lib/hashie/extensions/mash/safe_assignment.rb
67
+ - lib/hashie/extensions/mash/symbolize_keys.rb
87
68
  - lib/hashie/extensions/merge_initializer.rb
88
69
  - lib/hashie/extensions/method_access.rb
89
70
  - lib/hashie/extensions/parsers/yaml_erb_parser.rb
90
71
  - lib/hashie/extensions/pretty_inspect.rb
72
+ - lib/hashie/extensions/ruby_version.rb
73
+ - lib/hashie/extensions/ruby_version_check.rb
91
74
  - lib/hashie/extensions/strict_key_access.rb
92
75
  - lib/hashie/extensions/stringify_keys.rb
93
76
  - lib/hashie/extensions/symbolize_keys.rb
94
77
  - lib/hashie/hash.rb
78
+ - lib/hashie/logger.rb
95
79
  - lib/hashie/mash.rb
80
+ - lib/hashie/railtie.rb
96
81
  - lib/hashie/rash.rb
97
82
  - lib/hashie/trash.rb
83
+ - lib/hashie/utils.rb
98
84
  - lib/hashie/version.rb
99
- - spec/hashie/clash_spec.rb
100
- - spec/hashie/dash_spec.rb
101
- - spec/hashie/extensions/autoload_spec.rb
102
- - spec/hashie/extensions/coercion_spec.rb
103
- - spec/hashie/extensions/dash/coercion_spec.rb
104
- - spec/hashie/extensions/dash/indifferent_access_spec.rb
105
- - spec/hashie/extensions/deep_fetch_spec.rb
106
- - spec/hashie/extensions/deep_find_spec.rb
107
- - spec/hashie/extensions/deep_locate_spec.rb
108
- - spec/hashie/extensions/deep_merge_spec.rb
109
- - spec/hashie/extensions/ignore_undeclared_spec.rb
110
- - spec/hashie/extensions/indifferent_access_spec.rb
111
- - spec/hashie/extensions/indifferent_access_with_rails_hwia_spec.rb
112
- - spec/hashie/extensions/key_conversion_spec.rb
113
- - spec/hashie/extensions/mash/safe_assignment_spec.rb
114
- - spec/hashie/extensions/merge_initializer_spec.rb
115
- - spec/hashie/extensions/method_access_spec.rb
116
- - spec/hashie/extensions/strict_key_access_spec.rb
117
- - spec/hashie/extensions/stringify_keys_spec.rb
118
- - spec/hashie/extensions/symbolize_keys_spec.rb
119
- - spec/hashie/hash_spec.rb
120
- - spec/hashie/mash_spec.rb
121
- - spec/hashie/parsers/yaml_erb_parser_spec.rb
122
- - spec/hashie/rash_spec.rb
123
- - spec/hashie/trash_spec.rb
124
- - spec/hashie/version_spec.rb
125
- - spec/spec_helper.rb
126
- - spec/support/module_context.rb
127
- homepage: https://github.com/intridea/hashie
85
+ homepage: https://github.com/hashie/hashie
128
86
  licenses:
129
87
  - MIT
130
- metadata: {}
131
- post_install_message:
88
+ metadata:
89
+ bug_tracker_uri: https://github.com/hashie/hashie/issues
90
+ changelog_uri: https://github.com/hashie/hashie/blob/master/CHANGELOG.md
91
+ documentation_uri: https://www.rubydoc.info/gems/hashie
92
+ source_code_uri: https://github.com/hashie/hashie
93
+ post_install_message:
132
94
  rdoc_options: []
133
95
  require_paths:
134
96
  - lib
@@ -143,37 +105,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
105
  - !ruby/object:Gem::Version
144
106
  version: '0'
145
107
  requirements: []
146
- rubyforge_project:
147
- rubygems_version: 2.4.8
148
- signing_key:
108
+ rubygems_version: 3.1.3
109
+ signing_key:
149
110
  specification_version: 4
150
111
  summary: Your friendly neighborhood hash library.
151
- test_files:
152
- - spec/hashie/clash_spec.rb
153
- - spec/hashie/dash_spec.rb
154
- - spec/hashie/extensions/autoload_spec.rb
155
- - spec/hashie/extensions/coercion_spec.rb
156
- - spec/hashie/extensions/dash/coercion_spec.rb
157
- - spec/hashie/extensions/dash/indifferent_access_spec.rb
158
- - spec/hashie/extensions/deep_fetch_spec.rb
159
- - spec/hashie/extensions/deep_find_spec.rb
160
- - spec/hashie/extensions/deep_locate_spec.rb
161
- - spec/hashie/extensions/deep_merge_spec.rb
162
- - spec/hashie/extensions/ignore_undeclared_spec.rb
163
- - spec/hashie/extensions/indifferent_access_spec.rb
164
- - spec/hashie/extensions/indifferent_access_with_rails_hwia_spec.rb
165
- - spec/hashie/extensions/key_conversion_spec.rb
166
- - spec/hashie/extensions/mash/safe_assignment_spec.rb
167
- - spec/hashie/extensions/merge_initializer_spec.rb
168
- - spec/hashie/extensions/method_access_spec.rb
169
- - spec/hashie/extensions/strict_key_access_spec.rb
170
- - spec/hashie/extensions/stringify_keys_spec.rb
171
- - spec/hashie/extensions/symbolize_keys_spec.rb
172
- - spec/hashie/hash_spec.rb
173
- - spec/hashie/mash_spec.rb
174
- - spec/hashie/parsers/yaml_erb_parser_spec.rb
175
- - spec/hashie/rash_spec.rb
176
- - spec/hashie/trash_spec.rb
177
- - spec/hashie/version_spec.rb
178
- - spec/spec_helper.rb
179
- - spec/support/module_context.rb
112
+ test_files: []
@@ -1,48 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hashie::Clash do
4
- subject { Hashie::Clash.new }
5
-
6
- it 'is able to set an attribute via method_missing' do
7
- subject.foo('bar')
8
- expect(subject[:foo]).to eq 'bar'
9
- end
10
-
11
- it 'is able to set multiple attributes' do
12
- subject.foo('bar').baz('wok')
13
- expect(subject).to eq(foo: 'bar', baz: 'wok')
14
- end
15
-
16
- it 'converts multiple arguments into an array' do
17
- subject.foo(1, 2, 3)
18
- expect(subject[:foo]).to eq [1, 2, 3]
19
- end
20
-
21
- it 'is able to use bang notation to create a new Clash on a key' do
22
- subject.foo!
23
- expect(subject[:foo]).to be_kind_of(Hashie::Clash)
24
- end
25
-
26
- it 'is able to chain onto the new Clash when using bang notation' do
27
- subject.foo!.bar('abc').baz(123)
28
- expect(subject).to eq(foo: { bar: 'abc', baz: 123 })
29
- end
30
-
31
- it 'is able to jump back up to the parent in the chain with #_end!' do
32
- subject.foo!.bar('abc')._end!.baz(123)
33
- expect(subject).to eq(foo: { bar: 'abc' }, baz: 123)
34
- end
35
-
36
- it 'merges rather than replaces existing keys' do
37
- subject.where(abc: 'def').where(hgi: 123)
38
- expect(subject).to eq(where: { abc: 'def', hgi: 123 })
39
- end
40
-
41
- it 'is able to replace all of its own keys with #replace' do
42
- subject.foo(:bar).hello(:world)
43
- expect(subject.replace(baz: 123, hgi: 123)).to eq(baz: 123, hgi: 123)
44
- expect(subject).to eq(baz: 123, hgi: 123)
45
- expect(subject[:foo]).to be_nil
46
- expect(subject[:hello]).to be_nil
47
- end
48
- end