Sha256: 1f71ca9259e9f8a853252b4c1b4eb442ab0239d38a12d7eccf5d9fa3e3fbc9f2
Contents?: true
Size: 887 Bytes
Versions: 1
Compression:
Stored size: 887 Bytes
Contents
# frozen_string_literal: true require "set" module Speculation # @private module Utils def self.itself(x) x end def self.constantly(x) ->(*) { x } end def self.ident?(x) x.is_a?(Symbol) || x.is_a?(MethodIdentifier) end def self.method?(x) x.is_a?(Method) || x.is_a?(UnboundMethod) end def self.empty(coll) coll.class.new end def self.into(to, from) from.reduce(to) { |memo, obj| conj(memo, obj) } end def self.conj(a, b) case a when Array, Set a + [b] when Hash case b when Array then a.merge(b[0] => b[1]) else a.merge(b) end else raise ArgumentError, "#{a}: must be an Array, Set or Hash" end end def self.sort_descending(coll) coll.sort { |a, b| yield(b) <=> yield(a) } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
speculation-0.4.2 | lib/speculation/utils.rb |