Completed
Push — master ( 6923c1...f0f5ed )
by Marcelo
01:21
created

Boolean   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 33
rs 10
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A append_true_value() 0 4 1
A coerce() 0 5 3
A initialize() 0 7 1
A append_false_value() 0 4 1
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 coerce(value)
17
          return true if true_values.include?(value)
18
          return false if false_values.include?(value)
19
          raise ArgumentError, "Invalid argument '#{value}'"
20
        end
21
22
        def append_true_value(value)
23
          true_values << value
24
          self
25
        end
26
27
        def append_false_value(value)
28
          false_values << value
29
          self
30
        end
31
32
        protected
33
34
        attr_reader :true_values
35
        attr_reader :false_values
36
      end
37
    end
38
  end
39
end
40