hashie 3.4.2 → 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 +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