Sha256: 1d09781262aa8df7370b91af4dffc87e47930b1cd3538b836a426a7027acb5a5

Contents?: true

Size: 838 Bytes

Versions: 4

Compression:

Stored size: 838 Bytes

Contents

# frozen_string_literal: true

module Marameters
  module Signatures
    # Builds a single parameter for a method's signature.
    class Builder
      def initialize defaulter: Defaulter
        @defaulter = defaulter
        freeze
      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
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
marameters-4.2.0 lib/marameters/signatures/builder.rb
marameters-4.1.0 lib/marameters/signatures/builder.rb
marameters-4.0.1 lib/marameters/signatures/builder.rb
marameters-4.0.0 lib/marameters/signatures/builder.rb