Sha256: 13afd51b6fe4408333e12ae3f0f0932b78f1fff1eef8b2e39f6ed2d66150023a

Contents?: true

Size: 987 Bytes

Versions: 9

Compression:

Stored size: 987 Bytes

Contents

# frozen_string_literal: true

# Argument validation.
class Args
  def self.fetch_non_empty_string(hash, key)
    value = fetch_non_nil(hash, key, String)
    raise ArgumentError, "required parameter #{key} empty" if value.strip.empty?

    value
  end

  def self.fetch_non_empty_hash(hash, key)
    value = fetch_non_nil(hash, key, Hash)
    raise ArgumentError, "required parameter #{key} empty" if value.empty?

    value
  end

  def self.fetch_non_nil(hash, key, *classes)
    raise ArgumentError, "required parameter #{key} missing" unless hash.key?(key)

    value = hash[key]
    raise ArgumentError, "required parameter #{key} null" if value.nil?

    if classes.size.positive? && !classes.find { |clazz| value.is_a?(clazz) }
      raise ArgumentError, "required parameter #{key} not a #{classes[0].to_s.downcase}" if classes.size == 1

      raise ArgumentError, "required parameter #{key} not #{classes.map(&:to_s).map(&:downcase).join(' or ')}"
    end

    value
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
sqlui-0.1.28 app/args.rb
sqlui-0.1.27 app/args.rb
sqlui-0.1.26 app/args.rb
sqlui-0.1.25 app/args.rb
sqlui-0.1.24 app/args.rb
sqlui-0.1.23 app/args.rb
sqlui-0.1.22 app/args.rb
sqlui-0.1.21 app/args.rb
sqlui-0.1.20 app/args.rb