hashie 3.4.3 → 5.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.
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