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