Sha256: 8575bff7856b0b3a4a501427051fd62e2f2cd07fa948fe5d09155f9d651bd62a

Contents?: true

Size: 560 Bytes

Versions: 2

Compression:

Stored size: 560 Bytes

Contents

module Fear
  module Utils
    extend self

    def assert_arg_or_block!(method_name, *args)
      unless block_given? ^ args.any?
        fail ArgumentError, "##{method_name} accepts either one argument or block"
      end
    end

    def assert_type!(value, *types)
      if types.none? { |type| value.is_a?(type) }
        fail TypeError, "expected `#{value}` to be of #{types.join(', ')} class"
      end
    end

    def return_or_call_proc(value)
      if value.respond_to?(:call)
        value.call
      else
        value
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fear-0.1.0 lib/fear/utils.rb
fear-0.0.1 lib/fear/utils.rb