Sha256: 0fac3cb83d37720cbbb50312571ab7c71e62cf83828222ef04745ba516523c9c

Contents?: true

Size: 725 Bytes

Versions: 23

Compression:

Stored size: 725 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, default: nil
      case kind
        when :req then name
        when :opt then "#{name} = #{defaulter.call default}"
        when :rest then "*#{name}"
        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

23 entries across 23 versions & 1 rubygems

Version Path
marameters-0.9.0 lib/marameters/builder.rb
marameters-0.8.0 lib/marameters/builder.rb
marameters-0.7.0 lib/marameters/builder.rb