Completed
Push — master ( c24669...17b1aa )
by Marcelo
37s
created

Boolean.coerce()   A

Complexity

Conditions 3

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
c 1
b 0
f 0
dl 0
loc 5
rs 9.4285
1
module Koine
2
  module Attributes
3
    module Adapter
4
      class Boolean < Base
5
        DEFAULT_TRUE_VALUES = [1, '1', true, 'true'].freeze
6
        DEFAULT_FALSE_VALUES = [0, '0', false, 'false'].freeze
7
8
        def initialize(
9
          true_values: DEFAULT_TRUE_VALUES.dup,
10
          false_values: DEFAULT_FALSE_VALUES.dup
11
        )
12
          @true_values = true_values
13
          @false_values = false_values
14
        end
15
16
        def append_true_value(value)
17
          true_values << value
18
          self
19
        end
20
21
        def append_false_value(value)
22
          false_values << value
23
          self
24
        end
25
26
        private
27
28
        attr_reader :true_values
29
        attr_reader :false_values
30
31
        def coerce_not_nil(value)
32
          return true if true_values.include?(value)
33
          return false if false_values.include?(value)
34
          raise ArgumentError, "Invalid argument '#{value}'"
35
        end
36
      end
37
    end
38
  end
39
end
40