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-3.9.0 lib/marameters/builder.rb
marameters-3.8.0 lib/marameters/builder.rb
marameters-3.7.0 lib/marameters/builder.rb
marameters-3.6.0 lib/marameters/builder.rb
marameters-3.5.0 lib/marameters/builder.rb
marameters-3.4.1 lib/marameters/builder.rb
marameters-3.3.0 lib/marameters/builder.rb
marameters-3.2.0 lib/marameters/builder.rb
marameters-3.1.0 lib/marameters/builder.rb
marameters-3.0.0 lib/marameters/builder.rb
marameters-2.1.1 lib/marameters/builder.rb
marameters-2.1.0 lib/marameters/builder.rb
marameters-2.0.1 lib/marameters/builder.rb
marameters-2.0.0 lib/marameters/builder.rb
marameters-1.0.4 lib/marameters/builder.rb
marameters-1.0.3 lib/marameters/builder.rb
marameters-1.0.2 lib/marameters/builder.rb
marameters-1.0.1 lib/marameters/builder.rb
marameters-1.0.0 lib/marameters/builder.rb
marameters-0.10.0 lib/marameters/builder.rb