hashie 3.4.2 → 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 +518 -122
  3. data/CONTRIBUTING.md +24 -7
  4. data/LICENSE +1 -1
  5. data/README.md +455 -48
  6. data/Rakefile +18 -1
  7. data/UPGRADING.md +157 -7
  8. data/hashie.gemspec +14 -7
  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 +91 -52
  15. data/lib/hashie/extensions/dash/coercion.rb +25 -0
  16. data/lib/hashie/extensions/dash/indifferent_access.rb +30 -1
  17. data/lib/hashie/extensions/dash/predefined_values.rb +88 -0
  18. data/lib/hashie/extensions/dash/property_translation.rb +59 -30
  19. data/lib/hashie/extensions/deep_fetch.rb +5 -3
  20. data/lib/hashie/extensions/deep_find.rb +14 -5
  21. data/lib/hashie/extensions/deep_locate.rb +40 -21
  22. data/lib/hashie/extensions/deep_merge.rb +28 -10
  23. data/lib/hashie/extensions/ignore_undeclared.rb +6 -4
  24. data/lib/hashie/extensions/indifferent_access.rb +49 -8
  25. data/lib/hashie/extensions/key_conflict_warning.rb +55 -0
  26. data/lib/hashie/extensions/mash/define_accessors.rb +90 -0
  27. data/lib/hashie/extensions/mash/keep_original_keys.rb +53 -0
  28. data/lib/hashie/extensions/mash/permissive_respond_to.rb +61 -0
  29. data/lib/hashie/extensions/mash/safe_assignment.rb +3 -1
  30. data/lib/hashie/extensions/mash/symbolize_keys.rb +38 -0
  31. data/lib/hashie/extensions/method_access.rb +77 -19
  32. data/lib/hashie/extensions/parsers/yaml_erb_parser.rb +29 -5
  33. data/lib/hashie/extensions/ruby_version.rb +60 -0
  34. data/lib/hashie/extensions/ruby_version_check.rb +21 -0
  35. data/lib/hashie/extensions/strict_key_access.rb +77 -0
  36. data/lib/hashie/extensions/stringify_keys.rb +8 -5
  37. data/lib/hashie/extensions/symbolize_keys.rb +21 -7
  38. data/lib/hashie/hash.rb +18 -11
  39. data/lib/hashie/logger.rb +18 -0
  40. data/lib/hashie/mash.rb +196 -55
  41. data/lib/hashie/railtie.rb +21 -0
  42. data/lib/hashie/rash.rb +7 -7
  43. data/lib/hashie/utils.rb +44 -0
  44. data/lib/hashie/version.rb +1 -1
  45. data/lib/hashie.rb +34 -16
  46. metadata +30 -79
  47. data/spec/hashie/clash_spec.rb +0 -48
  48. data/spec/hashie/dash_spec.rb +0 -513
  49. data/spec/hashie/extensions/autoload_spec.rb +0 -24
  50. data/spec/hashie/extensions/coercion_spec.rb +0 -625
  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 -45
  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 -23
  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/stringify_keys_spec.rb +0 -101
  64. data/spec/hashie/extensions/symbolize_keys_spec.rb +0 -106
  65. data/spec/hashie/hash_spec.rb +0 -84
  66. data/spec/hashie/mash_spec.rb +0 -683
  67. data/spec/hashie/parsers/yaml_erb_parser_spec.rb +0 -29
  68. data/spec/hashie/rash_spec.rb +0 -77
  69. data/spec/hashie/trash_spec.rb +0 -268
  70. data/spec/hashie/version_spec.rb +0 -7
  71. data/spec/spec_helper.rb +0 -15
  72. data/spec/support/module_context.rb +0 -11
  73. data/spec/support/ruby_version.rb +0 -10
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.2
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-06-02 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,20 +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
28
  description: Hashie is a collection of classes and mixins that make hashes more powerful.
43
29
  email:
44
30
  - michael@intridea.com
@@ -56,10 +42,15 @@ files:
56
42
  - UPGRADING.md
57
43
  - hashie.gemspec
58
44
  - lib/hashie.rb
45
+ - lib/hashie/array.rb
59
46
  - lib/hashie/clash.rb
60
47
  - lib/hashie/dash.rb
48
+ - lib/hashie/extensions/active_support/core_ext/hash.rb
49
+ - lib/hashie/extensions/array/pretty_inspect.rb
61
50
  - lib/hashie/extensions/coercion.rb
51
+ - lib/hashie/extensions/dash/coercion.rb
62
52
  - lib/hashie/extensions/dash/indifferent_access.rb
53
+ - lib/hashie/extensions/dash/predefined_values.rb
63
54
  - lib/hashie/extensions/dash/property_translation.rb
64
55
  - lib/hashie/extensions/deep_fetch.rb
65
56
  - lib/hashie/extensions/deep_find.rb
@@ -67,51 +58,39 @@ files:
67
58
  - lib/hashie/extensions/deep_merge.rb
68
59
  - lib/hashie/extensions/ignore_undeclared.rb
69
60
  - lib/hashie/extensions/indifferent_access.rb
61
+ - lib/hashie/extensions/key_conflict_warning.rb
70
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
71
66
  - lib/hashie/extensions/mash/safe_assignment.rb
67
+ - lib/hashie/extensions/mash/symbolize_keys.rb
72
68
  - lib/hashie/extensions/merge_initializer.rb
73
69
  - lib/hashie/extensions/method_access.rb
74
70
  - lib/hashie/extensions/parsers/yaml_erb_parser.rb
75
71
  - lib/hashie/extensions/pretty_inspect.rb
72
+ - lib/hashie/extensions/ruby_version.rb
73
+ - lib/hashie/extensions/ruby_version_check.rb
74
+ - lib/hashie/extensions/strict_key_access.rb
76
75
  - lib/hashie/extensions/stringify_keys.rb
77
76
  - lib/hashie/extensions/symbolize_keys.rb
78
77
  - lib/hashie/hash.rb
78
+ - lib/hashie/logger.rb
79
79
  - lib/hashie/mash.rb
80
+ - lib/hashie/railtie.rb
80
81
  - lib/hashie/rash.rb
81
82
  - lib/hashie/trash.rb
83
+ - lib/hashie/utils.rb
82
84
  - lib/hashie/version.rb
83
- - spec/hashie/clash_spec.rb
84
- - spec/hashie/dash_spec.rb
85
- - spec/hashie/extensions/autoload_spec.rb
86
- - spec/hashie/extensions/coercion_spec.rb
87
- - spec/hashie/extensions/dash/indifferent_access_spec.rb
88
- - spec/hashie/extensions/deep_fetch_spec.rb
89
- - spec/hashie/extensions/deep_find_spec.rb
90
- - spec/hashie/extensions/deep_locate_spec.rb
91
- - spec/hashie/extensions/deep_merge_spec.rb
92
- - spec/hashie/extensions/ignore_undeclared_spec.rb
93
- - spec/hashie/extensions/indifferent_access_spec.rb
94
- - spec/hashie/extensions/indifferent_access_with_rails_hwia_spec.rb
95
- - spec/hashie/extensions/key_conversion_spec.rb
96
- - spec/hashie/extensions/mash/safe_assignment_spec.rb
97
- - spec/hashie/extensions/merge_initializer_spec.rb
98
- - spec/hashie/extensions/method_access_spec.rb
99
- - spec/hashie/extensions/stringify_keys_spec.rb
100
- - spec/hashie/extensions/symbolize_keys_spec.rb
101
- - spec/hashie/hash_spec.rb
102
- - spec/hashie/mash_spec.rb
103
- - spec/hashie/parsers/yaml_erb_parser_spec.rb
104
- - spec/hashie/rash_spec.rb
105
- - spec/hashie/trash_spec.rb
106
- - spec/hashie/version_spec.rb
107
- - spec/spec_helper.rb
108
- - spec/support/module_context.rb
109
- - spec/support/ruby_version.rb
110
- homepage: https://github.com/intridea/hashie
85
+ homepage: https://github.com/hashie/hashie
111
86
  licenses:
112
87
  - MIT
113
- metadata: {}
114
- 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:
115
94
  rdoc_options: []
116
95
  require_paths:
117
96
  - lib
@@ -126,36 +105,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
105
  - !ruby/object:Gem::Version
127
106
  version: '0'
128
107
  requirements: []
129
- rubyforge_project:
130
- rubygems_version: 2.4.5
131
- signing_key:
108
+ rubygems_version: 3.1.3
109
+ signing_key:
132
110
  specification_version: 4
133
111
  summary: Your friendly neighborhood hash library.
134
- test_files:
135
- - spec/spec_helper.rb
136
- - spec/support/ruby_version.rb
137
- - spec/support/module_context.rb
138
- - spec/hashie/parsers/yaml_erb_parser_spec.rb
139
- - spec/hashie/version_spec.rb
140
- - spec/hashie/rash_spec.rb
141
- - spec/hashie/dash_spec.rb
142
- - spec/hashie/hash_spec.rb
143
- - spec/hashie/clash_spec.rb
144
- - spec/hashie/mash_spec.rb
145
- - spec/hashie/trash_spec.rb
146
- - spec/hashie/extensions/deep_fetch_spec.rb
147
- - spec/hashie/extensions/method_access_spec.rb
148
- - spec/hashie/extensions/key_conversion_spec.rb
149
- - spec/hashie/extensions/deep_locate_spec.rb
150
- - spec/hashie/extensions/deep_merge_spec.rb
151
- - spec/hashie/extensions/indifferent_access_with_rails_hwia_spec.rb
152
- - spec/hashie/extensions/symbolize_keys_spec.rb
153
- - spec/hashie/extensions/mash/safe_assignment_spec.rb
154
- - spec/hashie/extensions/deep_find_spec.rb
155
- - spec/hashie/extensions/ignore_undeclared_spec.rb
156
- - spec/hashie/extensions/autoload_spec.rb
157
- - spec/hashie/extensions/stringify_keys_spec.rb
158
- - spec/hashie/extensions/indifferent_access_spec.rb
159
- - spec/hashie/extensions/coercion_spec.rb
160
- - spec/hashie/extensions/merge_initializer_spec.rb
161
- - spec/hashie/extensions/dash/indifferent_access_spec.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