Sha256: 80ae138eaae22ccd2e55b2a5796b76e2756cbbc69f9050d6f3d68b4f045bfa79
Contents?: true
Size: 1.99 KB
Versions: 1
Compression:
Stored size: 1.99 KB
Contents
module EnsureIt TRUE_NAMES = %w(true y yes 1) patch Object do def ensure_boolean(default: nil, **opts) default end def ensure_boolean!(**opts) EnsureIt.raise_error(:ensure_boolean!, **EnsureIt::ensure_boolean_error(**opts)) end end patch String do def ensure_boolean(default: nil, strings: false, **opts) return TRUE_NAMES.include?(downcase) if strings == true default end def ensure_boolean!(strings: false, **opts) return TRUE_NAMES.include?(downcase) if strings == true EnsureIt.raise_error(:ensure_boolean!, **EnsureIt::ensure_boolean_error(**opts)) end end patch Symbol do def ensure_boolean(default: nil, strings: false, **opts) return TRUE_NAMES.include?(to_s.downcase) if strings == true default end def ensure_boolean!(strings: false, **opts) return TRUE_NAMES.include?(to_s.downcase) if strings == true EnsureIt.raise_error(:ensure_boolean!, **EnsureIt::ensure_boolean_error(**opts)) end end patch Numeric do def ensure_boolean(default: nil, numbers: true, positive: false, **opts) return positive == true ? self > 0 : self != 0 if numbers == true default end def ensure_boolean!(numbers: true, positive: false, **opts) return positive == true ? self > 0 : self != 0 if numbers == true EnsureIt.raise_error(:ensure_boolean!, **EnsureIt::ensure_boolean_error(**opts)) end end patch TrueClass do def ensure_boolean(**opts) self end alias_method :ensure_boolean!, :ensure_boolean end patch FalseClass do def ensure_boolean(**opts) self end alias_method :ensure_boolean!, :ensure_boolean end def self.ensure_boolean_error(**opts) unless opts.key?(:message) opts[:message] = '#{subject} should be a boolean or be able' \ ' to convert to it' end opts end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ensure_it-1.0.0 | lib/ensure_it/ensure_boolean.rb |