Sha256: c148ae5367e631dacd10814a0de24b2c963b46eef6b9e14cfa01e44814f0f2ad

Contents?: true

Size: 928 Bytes

Versions: 1

Compression:

Stored size: 928 Bytes

Contents

# typed: true
# frozen_string_literal: true

module CLI
  module UI
    module Prompt
      # A class that handles the various options of an InteractivePrompt and their callbacks
      class OptionsHandler
        extend T::Sig

        sig { void }
        def initialize
          @options = {}
        end

        sig { returns(T::Array[String]) }
        def options
          @options.keys
        end

        sig { params(option: String, handler: T.proc.params(option: String).returns(String)).void }
        def option(option, &handler)
          @options[option] = handler
        end

        sig { params(options: T.any(T::Array[String], String)).returns(String) }
        def call(options)
          case options
          when Array
            options.map { |option| @options[option].call(options) }
          else
            @options[options].call(options)
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cli-ui-2.3.0 lib/cli/ui/prompt/options_handler.rb