Completed
Push — master ( 681fa7...7087b8 )
by Marcelo
01:12
created

Base.coerce()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
1
module Koine
2
  module Attributes
3
    module Adapter
4
      class Base
5
        def coerce(*_values)
6
          raise NotImplementedError
7
        end
8
9
        def default_value
10
          @default_value.respond_to?(:call) &&
11
            @default_value.call ||
12
            @default_value
13
        end
14
15
        def with_default_value(value = nil, &block)
16
          @default_value = value
17
          @default_value = block if block
18
          self
19
        end
20
21
        protected
22
23
        # duplicates if possible and freezes object
24
        def secure
25
          value = yield
26
          value = value.dup if value.respond_to?(:dup)
27
          value.freeze
28
        end
29
      end
30
    end
31
  end
32
end
33