Sha256: e587b2306b3e2a94e9a723d29669558a036ebb092437b7bef978cbf626c573a3

Contents?: true

Size: 1.41 KB

Versions: 15

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

# Some argument check methods.
module Checks
  def check_non_nil(hash)
    hash.each do |key, value|
      raise "invalid #{key}: #{value.nil? ? 'nil' : value}" if value.nil?
    end

    hash.size == 1 ? hash.values.first : hash.values
  end

  def check_is_a(hash)
    hash.each do |key, (clazz, value)|
      raise "invalid #{key} #{clazz}: #{value.nil? ? 'nil' : value} (#{value.class})" unless value.is_a?(clazz)
    end

    hash.size == 1 ? hash.values.first[1] : hash.values.map { |(_clazz, value)| value }
  end

  def check_boolean(hash)
    hash.each do |key, value|
      raise "invalid #{key}: #{value.nil? ? 'nil' : value}" unless value.is_a?(TrueClass) || value.is_a?(FalseClass)
    end

    hash.size == 1 ? hash.values.first : hash.values
  end

  def check_non_empty_string(hash)
    hash.each do |key, value|
      raise "invalid #{key}: #{value.nil? ? 'nil' : value}" unless value.is_a?(String) && !value.empty?
    end

    hash.size == 1 ? hash.values.first : hash.values
  end

  def check_positive_integer(hash)
    hash.each do |key, value|
      raise "invalid #{key}: #{value.nil? ? 'nil' : value}" unless value.is_a?(Integer) && value.positive?
    end

    hash.size == 1 ? hash.values.first : hash.values
  end

  def check_enumerable_of(enumerable, clazz)
    check_is_a(enumerable: [Enumerable, enumerable])
    enumerable.each { |value| check_is_a(value: [clazz, value]) }
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
sqlui-0.1.84 app/checks.rb
sqlui-0.1.83 app/checks.rb
sqlui-0.1.82 app/checks.rb
sqlui-0.1.81 app/checks.rb
sqlui-0.1.80 app/checks.rb
sqlui-0.1.79 app/checks.rb
sqlui-0.1.78 app/checks.rb
sqlui-0.1.77 app/checks.rb
sqlui-0.1.76 app/checks.rb
sqlui-0.1.75 app/checks.rb
sqlui-0.1.74 app/checks.rb
sqlui-0.1.73 app/checks.rb
sqlui-0.1.72 app/checks.rb
sqlui-0.1.71 app/checks.rb
sqlui-0.1.70 app/checks.rb