Module: Xqsr3::Conversion::BoolParser

Defined in:
lib/xqsr3/conversion/bool_parser.rb

Overview

+include-able module that provides Boolean parsing

Constant Summary collapse

DEFAULT_TRUE_VALUES =

Recognised truey values

[ /true/i, '1' ]
DEFAULT_FALSE_VALUES =

Recognised falsey values

[ /false/i, '0' ]

Class Method Summary collapse

Class Method Details

.matches_to_(s, expr) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/xqsr3/conversion/bool_parser.rb', line 58

def self.matches_to_ s, expr

  case expr
  when ::Regexp
    return expr =~ s
  else
    return s == expr
  end
end

.to_bool(s, **options) ⇒ Object

Attempts to parse the given string s to a Boolean value, based on the given options

Signature

  • Parameters:

    • s The string to be parsed;
    • options (+Hash+) Options that control the behaviour of the method;
  • Options:

    • :false_values (+Array+) An array of strings or regular expressions against which to match for false value. Defaults to DEFAULT_FALSE_VALUES;
    • :true_values (+Array+) An array of strings or regular expressions against which to match for true value. Defaults to DEFAULT_TRUE_VALUES;
    • :default_value An object to be returned if matching fails. Defaults to nil;
    • :false_value An object to be returned if matching succeeds to match against :false_values. Defaults to false;
    • :true_value An object to be returned if matching succeeds to match against :true_values. Defaults to true;


90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/xqsr3/conversion/bool_parser.rb', line 90

def self.to_bool s, **options

  true_values   = options[:true_values] || DEFAULT_TRUE_VALUES
  true_values   = [ true_values ] unless true_values.is_a? ::Array
  false_values  = options[:false_values] || DEFAULT_FALSE_VALUES
  false_values  = [ false_values ] unless false_values.is_a? ::Array
  default_value = options[:default] || nil
  true_value    = options[:true] || true
  false_value   = options[:false] || false

  return true_value if true_values.any? { |v| self.matches_to_ s, v }
  return false_value if false_values.any? { |v| self.matches_to_ s, v }

  return default_value
end