deep_hash_transformer 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e757436383ce13e17ee8e2b68e48d419e2f9f3c2e57fcfa76503e723ecde5e0
4
- data.tar.gz: 5508770653b53402c6be53f9a3b1c0ea42a899b42760c2844565c3befa4bc54c
3
+ metadata.gz: cd3cd6700a7e51238c1c16feb30a81fb8debe53c5225401f33442ef29d771c92
4
+ data.tar.gz: 93aeb34e4a4e0bdbefa97d6d946d21fc8ab87457bd8361d992aa66399100849e
5
5
  SHA512:
6
- metadata.gz: 02c165dda7044c595af36f476fe4234dfca724654e4384d971c183f14dadab6a1f9782f58dd5736f2b82962b7811a41fd51350b2a755ef62cfe684b259dd705d
7
- data.tar.gz: 41ed65816b738a755fdfbf9e97c0c6ef408fa022a16230d504b0acb4f744ef10279f98954b3eb1c22eaf7af552a9ef5a40c61b75e68cfe4f723f444ebd7e9987
6
+ metadata.gz: 515fe31abc501135498b1450e9f90820c7612161e643198f9276006095abc5eff05e5c54cb924c37ae4e801e078a9cf9f26ccb17900341b2b7f093e86f9d4c03
7
+ data.tar.gz: 4cb38f5bcfcf1265f77244e61c8d4b13f0d833a52b6ef4e334cbe43bbe157eeee4a3c467f5d08f45b2e738cfee936395cee3a073e79e2c9453a7ba8aef7ab001
@@ -2,7 +2,7 @@
2
2
 
3
3
  class DeepHashTransformer
4
4
  class Blank
5
- BLANK_STRING = /\A[[:space:]]*\z/.freeze
5
+ BLANK_STRING = /\A[[:space:]]*\z/
6
6
 
7
7
  def self.call(value)
8
8
  new(value).blank?
@@ -13,10 +13,10 @@ class DeepHashTransformer
13
13
  end
14
14
 
15
15
  def blank?
16
- return true unless value
17
- return value.blank? if value.respond_to?(:blank?)
16
+ return true unless value
17
+ return value.blank? if value.respond_to?(:blank?)
18
18
  return BLANK_STRING.match?(value) if value.is_a?(String)
19
- return value.empty? if value.respond_to?(:empty?)
19
+ return value.empty? if value.respond_to?(:empty?)
20
20
 
21
21
  false
22
22
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './blank'
3
+ require_relative "blank"
4
4
 
5
5
  class DeepHashTransformer
6
6
  module CollectionOperation
@@ -10,7 +10,7 @@ class DeepHashTransformer
10
10
 
11
11
  def dasherize(val)
12
12
  stringify(val)
13
- .tr('_', '-')
13
+ .tr("_", "-")
14
14
  end
15
15
 
16
16
  def identity(val)
@@ -34,14 +34,14 @@ class DeepHashTransformer
34
34
 
35
35
  def underscore(val)
36
36
  stringify(val)
37
- .tr('-', '_')
37
+ .tr("-", "_")
38
38
  end
39
39
 
40
40
  def snake_case(val)
41
41
  stringify(val)
42
42
  .gsub(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
43
43
  .gsub(/([a-z\d])([A-Z])/, '\1_\2')
44
- .tr('-', '_')
44
+ .tr("-", "_")
45
45
  .downcase
46
46
  end
47
47
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class DeepHashTransformer
4
- VERSION = '2.2.0'
4
+ VERSION = "2.2.1"
5
5
  end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'deep_hash_transformer/collection_operation'
4
- require 'deep_hash_transformer/element_operation'
5
- require 'deep_hash_transformer/version'
3
+ require "deep_hash_transformer/collection_operation"
4
+ require "deep_hash_transformer/element_operation"
5
+ require "deep_hash_transformer/version"
6
6
 
7
7
  class DeepHashTransformer
8
8
  ELEMENT_OPS = %i[
@@ -31,7 +31,7 @@ class DeepHashTransformer
31
31
  unknown_transformations = ops.map(&:to_s) - OPS.map(&:to_s)
32
32
  if unknown_transformations.any?
33
33
  raise(
34
- ArgumentError, "unknown transformation(s): #{unknown_transformations.join(',')}"
34
+ ArgumentError, "unknown transformation(s): #{unknown_transformations.join(",")}"
35
35
  )
36
36
  end
37
37
 
@@ -54,13 +54,13 @@ class DeepHashTransformer
54
54
 
55
55
  def transform_value(value, ops)
56
56
  collection = case value
57
- when Array
58
- value.map { |e| transform_value(e, ops) }
59
- when Hash
60
- value.map { |k, v| [transform_key(k, ops), transform_value(v, ops)] }.to_h
61
- else
62
- value
63
- end
57
+ when Array
58
+ value.map { |e| transform_value(e, ops) }
59
+ when Hash
60
+ value.map { |k, v| [transform_key(k, ops), transform_value(v, ops)] }.to_h
61
+ else
62
+ value
63
+ end
64
64
 
65
65
  transform_collection(collection, ops)
66
66
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RSpec.describe DeepHashTransformer::Blank do
4
- describe '.call' do
4
+ describe ".call" do
5
5
  subject { described_class.call(value) }
6
6
 
7
- presents = [true, 1, 0, 'any', [nil], { A: nil }]
8
- blanks = [nil, false, '', ' ', [], {}]
7
+ presents = [true, 1, 0, "any", [nil], {A: nil}]
8
+ blanks = [nil, false, "", " ", [], {}]
9
9
 
10
10
  presents.each do |value|
11
11
  context "with #{value.inspect}" do
@@ -2,28 +2,28 @@
2
2
 
3
3
  RSpec.describe DeepHashTransformer::CollectionOperation do
4
4
  examples = [
5
- { a: 'b' }, { a: nil }, { a: ' ' }, [:foo], ['', nil]
5
+ {a: "b"}, {a: nil}, {a: " "}, [:foo], ["", nil]
6
6
  ]
7
7
 
8
8
  subject do
9
9
  examples.map { |value| described_class.public_send(method, value) }
10
10
  end
11
11
 
12
- describe '.compact' do
12
+ describe ".compact" do
13
13
  let(:method) { :compact }
14
14
 
15
15
  expected_output = [
16
- { a: 'b' }, {}, { a: ' ' }, [:foo], ['']
16
+ {a: "b"}, {}, {a: " "}, [:foo], [""]
17
17
  ]
18
18
 
19
19
  it { is_expected.to eq(expected_output) }
20
20
  end
21
21
 
22
- describe '.compact_blank' do
22
+ describe ".compact_blank" do
23
23
  let(:method) { :compact_blank }
24
24
 
25
25
  expected_output = [
26
- { a: 'b' }, {}, {}, [:foo], []
26
+ {a: "b"}, {}, {}, [:foo], []
27
27
  ]
28
28
 
29
29
  it { is_expected.to eq(expected_output) }
@@ -2,7 +2,7 @@
2
2
 
3
3
  RSpec.describe DeepHashTransformer::ElementOperation do
4
4
  examples = [
5
- :symbol, 'string', 'camelCase', 'dashed-key', 'PascalCase', 'under_scored'
5
+ :symbol, "string", "camelCase", "dashed-key", "PascalCase", "under_scored"
6
6
  ]
7
7
 
8
8
  subject do
@@ -11,14 +11,14 @@ RSpec.describe DeepHashTransformer::ElementOperation do
11
11
 
12
12
  # rubocop:disable Layout/HashAlignment, Style/SymbolArray, Style/WordArray
13
13
  expected_output = {
14
- camel_case: ['symbol', 'string', 'camelCase', 'dashedKey', 'pascalCase', 'underScored'],
15
- dasherize: ['symbol', 'string', 'camelCase', 'dashed-key', 'PascalCase', 'under-scored'],
16
- identity: [:symbol, 'string', 'camelCase', 'dashed-key', 'PascalCase', 'under_scored'],
17
- pascal_case: ['Symbol', 'String', 'CamelCase', 'DashedKey', 'PascalCase', 'UnderScored'],
18
- snake_case: ['symbol', 'string', 'camel_case', 'dashed_key', 'pascal_case', 'under_scored'],
19
- stringify: ['symbol', 'string', 'camelCase', 'dashed-key', 'PascalCase', 'under_scored'],
20
- symbolize: [:symbol, :string, :camelCase, :'dashed-key', :PascalCase, :under_scored],
21
- underscore: ['symbol', 'string', 'camelCase', 'dashed_key', 'PascalCase', 'under_scored']
14
+ camel_case: ["symbol", "string", "camelCase", "dashedKey", "pascalCase", "underScored"],
15
+ dasherize: ["symbol", "string", "camelCase", "dashed-key", "PascalCase", "under-scored"],
16
+ identity: [:symbol, "string", "camelCase", "dashed-key", "PascalCase", "under_scored"],
17
+ pascal_case: ["Symbol", "String", "CamelCase", "DashedKey", "PascalCase", "UnderScored"],
18
+ snake_case: ["symbol", "string", "camel_case", "dashed_key", "pascal_case", "under_scored"],
19
+ stringify: ["symbol", "string", "camelCase", "dashed-key", "PascalCase", "under_scored"],
20
+ symbolize: [:symbol, :string, :camelCase, :"dashed-key", :PascalCase, :under_scored],
21
+ underscore: ["symbol", "string", "camelCase", "dashed_key", "PascalCase", "under_scored"]
22
22
  }
23
23
  # rubocop:enable Layout/HashAlignment, Style/SymbolArray, Style/WordArray
24
24
 
@@ -3,9 +3,9 @@
3
3
  RSpec.describe DeepHashTransformer do
4
4
  subject(:operation) { described_class.new(example) }
5
5
 
6
- let(:example) { { foo: 'bar' } }
6
+ let(:example) { {foo: "bar"} }
7
7
 
8
- describe 'autogenerated methods' do
8
+ describe "autogenerated methods" do
9
9
  DeepHashTransformer::ELEMENT_OPS.each do |method|
10
10
  describe ".#{method}" do
11
11
  it "delegates to `Operation.#{method}`" do
@@ -19,37 +19,37 @@ RSpec.describe DeepHashTransformer do
19
19
  end
20
20
  end
21
21
 
22
- describe '#tr' do
23
- context 'with `:snake_case, :symbolize`' do
22
+ describe "#tr" do
23
+ context "with `:snake_case, :symbolize`" do
24
24
  subject { super().tr(:snake_case, :symbolize) }
25
25
 
26
- let(:example) { { 'FooBar' => 'baz' } }
26
+ let(:example) { {"FooBar" => "baz"} }
27
27
 
28
- it { is_expected.to eq(foo_bar: 'baz') }
28
+ it { is_expected.to eq(foo_bar: "baz") }
29
29
  end
30
30
 
31
- context 'with an unknown transformation' do
31
+ context "with an unknown transformation" do
32
32
  subject(:unknown_ops) { operation.tr(:unknown) }
33
33
 
34
- it 'raise an exception' do
34
+ it "raise an exception" do
35
35
  expect { unknown_ops }.to raise_error(ArgumentError, /unknown/)
36
36
  end
37
37
  end
38
38
 
39
- context 'with a complex, nested example' do
39
+ context "with a complex, nested example" do
40
40
  subject { super().tr(:camel_case, :symbolize) }
41
41
 
42
42
  let(:example) do
43
43
  {
44
44
  Integer => 123,
45
- :symbol => { foo_bar: 'bar' },
46
- 'string' => { 'foo_bar' => 123 },
47
- 'nested-array' => [
45
+ :symbol => {foo_bar: "bar"},
46
+ "string" => {"foo_bar" => 123},
47
+ "nested-array" => [
48
48
  {
49
- 'camelCased' => 'camelCased',
50
- 'dashed-key' => 'dashed-key',
51
- 'PascalCased' => 'PascalCased',
52
- 'under_scored' => 'under_scored'
49
+ "camelCased" => "camelCased",
50
+ "dashed-key" => "dashed-key",
51
+ "PascalCased" => "PascalCased",
52
+ "under_scored" => "under_scored"
53
53
  }
54
54
  ]
55
55
  }
@@ -58,71 +58,71 @@ RSpec.describe DeepHashTransformer do
58
58
  it do # rubocop:disable RSpec/ExampleLength
59
59
  is_expected.to eq( # rubocop:disable RSpec/ImplicitSubject
60
60
  Integer => 123,
61
- :symbol => { fooBar: 'bar' },
62
- :string => { fooBar: 123 },
61
+ :symbol => {fooBar: "bar"},
62
+ :string => {fooBar: 123},
63
63
  :nestedArray => [
64
64
  {
65
- camelCased: 'camelCased',
66
- dashedKey: 'dashed-key',
67
- pascalCased: 'PascalCased',
68
- underScored: 'under_scored'
65
+ camelCased: "camelCased",
66
+ dashedKey: "dashed-key",
67
+ pascalCased: "PascalCased",
68
+ underScored: "under_scored"
69
69
  }
70
70
  ]
71
71
  )
72
72
  end
73
73
  end
74
74
 
75
- context 'with nil values' do
75
+ context "with nil values" do
76
76
  subject { super().tr(:compact, :stringify) }
77
77
 
78
78
  let(:example) do
79
- { a: { b: ['', nil, :value], c: '', d: nil, e: true, f: false, g: 123, h: [''] } }
79
+ {a: {b: ["", nil, :value], c: "", d: nil, e: true, f: false, g: 123, h: [""]}}
80
80
  end
81
81
 
82
82
  it do # rubocop:disable RSpec/ExampleLength
83
83
  is_expected.to eq( # rubocop:disable RSpec/ImplicitSubject
84
- 'a' => {
85
- 'b' => ['', :value],
86
- 'c' => '',
87
- 'e' => true,
88
- 'f' => false,
89
- 'g' => 123,
90
- 'h' => ['']
84
+ "a" => {
85
+ "b" => ["", :value],
86
+ "c" => "",
87
+ "e" => true,
88
+ "f" => false,
89
+ "g" => 123,
90
+ "h" => [""]
91
91
  }
92
92
  )
93
93
  end
94
94
  end
95
95
 
96
- context 'with blank values' do
96
+ context "with blank values" do
97
97
  subject { super().tr(:compact_blank, :stringify) }
98
98
 
99
99
  let(:example) do
100
- { a: { b: ['', nil, :value], c: '', d: nil, e: true, f: false, g: 123, h: [''] } }
100
+ {a: {b: ["", nil, :value], c: "", d: nil, e: true, f: false, g: 123, h: [""]}}
101
101
  end
102
102
 
103
103
  it do # rubocop:disable RSpec/ExampleLength
104
104
  is_expected.to eq( # rubocop:disable RSpec/ImplicitSubject
105
- 'a' => {
106
- 'b' => [:value],
107
- 'e' => true,
108
- 'g' => 123
105
+ "a" => {
106
+ "b" => [:value],
107
+ "e" => true,
108
+ "g" => 123
109
109
  }
110
110
  )
111
111
  end
112
112
  end
113
113
 
114
- context 'with deeply nested blank values' do
114
+ context "with deeply nested blank values" do
115
115
  subject { super().tr(:compact_blank) }
116
116
 
117
117
  let(:example) do
118
- { a: { b: [nil, { c: nil }] } }
118
+ {a: {b: [nil, {c: nil}]}}
119
119
  end
120
120
 
121
121
  it { is_expected.to eq({}) }
122
122
  end
123
123
  end
124
124
 
125
- it 'has a version number' do
125
+ it "has a version number" do
126
126
  expect(DeepHashTransformer::VERSION).not_to be_nil
127
127
  end
128
128
  end
data/spec/spec_helper.rb CHANGED
@@ -1,22 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bundler/setup'
4
- require 'deep_hash_transformer'
5
- require 'deep_hash_transformer/blank'
6
- require 'deep_hash_transformer/collection_operation'
7
- require 'deep_hash_transformer/element_operation'
8
- require 'simplecov'
3
+ require "bundler/setup"
4
+ require "deep_hash_transformer"
5
+ require "deep_hash_transformer/blank"
6
+ require "deep_hash_transformer/collection_operation"
7
+ require "deep_hash_transformer/element_operation"
8
+
9
+ require "simplecov"
9
10
 
10
11
  SimpleCov.start do
11
- if ENV['CI']
12
- require 'simplecov-lcov'
12
+ if ENV["CI"]
13
+ require "simplecov_json_formatter"
14
+ require "simplecov-lcov"
13
15
 
14
16
  SimpleCov::Formatter::LcovFormatter.config do |c|
15
17
  c.report_with_single_file = true
16
- c.single_report_path = 'coverage/lcov.info'
18
+ c.single_report_path = "coverage/lcov.info"
17
19
  end
18
20
 
19
- formatter SimpleCov::Formatter::LcovFormatter
21
+ formatter SimpleCov::Formatter::MultiFormatter.new [
22
+ SimpleCov::Formatter::JSONFormatter, SimpleCov::Formatter::LcovFormatter
23
+ ]
20
24
  end
21
25
 
22
26
  add_filter %w[version.rb initializer.rb]
@@ -24,7 +28,7 @@ end
24
28
 
25
29
  RSpec.configure do |config|
26
30
  # Enable flags like --only-failures and --next-failure
27
- config.example_status_persistence_file_path = '.rspec_status'
31
+ config.example_status_persistence_file_path = ".rspec_status"
28
32
 
29
33
  config.expect_with :rspec do |c|
30
34
  c.syntax = :expect
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deep_hash_transformer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Spickermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-16 00:00:00.000000000 Z
11
+ date: 2023-12-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: " DeepHashTransformer helps to transform keys in deeply nested hash
14
14
  structures\n"
@@ -42,14 +42,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
42
42
  requirements:
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
- version: 2.5.0
45
+ version: 3.0.0
46
46
  required_rubygems_version: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0'
51
51
  requirements: []
52
- rubygems_version: 3.4.10
52
+ rubygems_version: 3.5.3
53
53
  signing_key:
54
54
  specification_version: 4
55
55
  summary: Transforms deeply nested hash structure