diaspora/diaspora_federation

View on GitHub
lib/diaspora_federation/validators/rules/boolean.rb

Summary

Maintainability
A
25 mins
Test Coverage
A
100%
# frozen_string_literal: true

module Validation
  module Rule
    # Boolean validation rule
    #
    # Valid is:
    # * a +String+: "true", "false", "t", "f", "yes", "no", "y", "n", "1", "0"
    # * a +Integer+: 1 or 0
    # * a +Boolean+: true or false
    class Boolean
      # The error key for this rule
      # @return [Symbol] error key
      def error_key
        :boolean
      end

      # Determines if value is a valid +boolean+
      def valid_value?(value)
        return false if value.nil?

        case value
        when String
          true if value =~ /\A(true|false|t|f|yes|no|y|n|1|0)\z/i
        when Integer
          true if [1, 0].include?(value)
        else
          [true, false].include?(value)
        end
      end

      # This rule has no params.
      # @return [Hash] params
      def params
        {}
      end
    end
  end
end