Sha256: 69db69eedf0c85cf9a1d8490357890d89164f694a9a0689135371f0411f5acd3
Contents?: true
Size: 970 Bytes
Versions: 1
Compression:
Stored size: 970 Bytes
Contents
# frozen_string_literal: true module Fear # @private module Utils UNDEFINED = Object.new.freeze class << self def assert_arg_or_block!(method_name, *args) unless block_given? ^ !args.empty? raise ArgumentError, "##{method_name} accepts either one argument or block" end end def with_block_or_argument(method_name, arg = UNDEFINED, block = nil) if block.nil? ^ arg.equal?(UNDEFINED) yield(block || arg) else raise ArgumentError, "#{method_name} accepts either block or partial function" end end def assert_type!(value, *types) if types.none? { |type| value.is_a?(type) } raise TypeError, "expected `#{value.inspect}` to be of #{types.join(", ")} class" end end def return_or_call_proc(value) if value.respond_to?(:call) value.() else value end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fear-1.1.0 | lib/fear/utils.rb |