Sha256: 2307a7f8f05267b986fdd046af4a2c4113284fc1b234b29135222317f75d8681

Contents?: true

Size: 764 Bytes

Versions: 3

Compression:

Stored size: 764 Bytes

Contents

# frozen_string_literal: true

module Marameters
  # Builds a single parameter of a method's parameter signature.
  class Builder
    def initialize defaulter: Defaulter
      @defaulter = defaulter
    end

    def call kind, name = nil, default: nil
      case kind
        when :req then name
        when :opt then "#{name} = #{defaulter.call default}"
        when :rest then "*#{name}"
        when :nokey then "**nil"
        when :keyreq then "#{name}:"
        when :key then "#{name}: #{defaulter.call default}"
        when :keyrest then "**#{name}"
        when :block then "&#{name}"
        else fail ArgumentError, "Wrong kind (#{kind}), name (#{name}), or default (#{default})."
      end
    end

    private

    attr_reader :defaulter
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
marameters-3.12.0 lib/marameters/builder.rb
marameters-3.11.0 lib/marameters/builder.rb
marameters-3.10.0 lib/marameters/builder.rb