Sha256: a16c2629d9cf463639d8a9eaf7fc2ee76ff543f009c3dea8556b60ea1c21404f

Contents?: true

Size: 631 Bytes

Versions: 1

Compression:

Stored size: 631 Bytes

Contents

require "taking/version"

module Taking
  MATCH_METHODS = %i(deconstruct deconstruct_keys)

  # Unfolds Array arguments
  #
  # @param *args [Array[Any]]
  #
  # @return [Array[Any]]
  def self.from(lead = nil, *args, **kwargs)
    if args.empty? && kwargs.empty?
      return can_deconstruct?(lead) ? lead : nil
    end

    kwargs.empty? ? [lead, *args] : kwargs
  end

  def self.from_list(*args) = args

  # Unfolds Keyword arguments
  #
  # @param **args [Hash[Any, Any]]
  #
  # @return [Hash[Any, Any]]
  def self.from_kw(**args) = args

  def self.can_deconstruct?(o)
    MATCH_METHODS.any? { o.respond_to?(_1) }
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
taking-0.1.0 lib/taking.rb