Code Duplication    Length = 18-29 lines in 2 locations

lib/koine/attributes/adapter/hash_of.rb 1 location

@@ 4-32 (lines=29) @@
1
module Koine
2
  module Attributes
3
    module Adapter
4
      class HashOf < Base
5
        def initialize(key_adapter, value_adapter)
6
          @key_adapter = key_adapter || raise(ArgumentError, 'Invalid key adapter')
7
          @value_adapter = value_adapter || raise(ArgumentError, 'Invalid value adapter')
8
          with_default_value({})
9
        end
10
11
        def for_keys
12
          @key_adapter
13
        end
14
15
        def for_values
16
          @value_adapter
17
        end
18
19
        private
20
21
        def coerce_not_nil(hash)
22
          secure do
23
            {}.tap do |new_hash|
24
              hash.each do |key, value|
25
                key = @key_adapter.coerce(key)
26
                value = @value_adapter.coerce(value)
27
                new_hash[key] = value
28
              end
29
            end
30
          end
31
        end
32
      end
33
    end
34
  end
35
end

lib/koine/attributes/adapter/array_of.rb 1 location

@@ 4-21 (lines=18) @@
1
module Koine
2
  module Attributes
3
    module Adapter
4
      class ArrayOf < Base
5
        def initialize(adapter)
6
          @adapter = adapter
7
          with_default_value([])
8
        end
9
10
        def for_values
11
          @adapter
12
        end
13
14
        private
15
16
        def coerce_not_nil(collectionOfValues)
17
          secure do
18
            collectionOfValues.map { |value| @adapter.coerce(value) }
19
          end
20
        end
21
      end
22
    end
23
  end
24
end