Class: Clack::Prompts::Range

Inherits:
Core::Prompt show all
Defined in:
lib/clack/prompts/range.rb

Overview

Range/slider prompt for numeric selection.

Displays a horizontal slider track. Navigate with arrow keys or vim bindings. Press Enter to confirm.

Examples:

Basic usage

level = Clack.range(message: "Volume", min: 0, max: 100, step: 5)

With initial value

workers = Clack.range(
  message: "Concurrency",
  min: 1, max: 16,
  step: 1, initial_value: 4
)

Constant Summary collapse

TRACK_WIDTH =
30
TRACK_CHAR =

━ (box drawings heavy horizontal)

"\u2501"
HANDLE_CHAR =

● (black circle)

"\u25CF"

Constants inherited from Core::Prompt

Core::Prompt::MIN_TERMINAL_WIDTH

Instance Attribute Summary

Attributes inherited from Core::Prompt

#error_message, #state, #value, #warning_message

Instance Method Summary collapse

Methods inherited from Core::Prompt

flush_resize, register, #request_redraw, #run, setup_signal_handler, unregister

Constructor Details

#initialize(message:, min: 0, max: 100, step: 1, initial_value: nil, default: nil, **opts) ⇒ Range

Returns a new instance of Range.

Parameters:

  • message (String)

    the prompt message

  • min (Numeric) (defaults to: 0)

    minimum value (default: 0)

  • max (Numeric) (defaults to: 100)

    maximum value (default: 100)

  • step (Numeric) (defaults to: 1)

    increment size (default: 1)

  • initial_value (Numeric, nil) (defaults to: nil)

    initial value (defaults to min)

  • default (Numeric, nil) (defaults to: nil)

    deprecated alias for initial_value

  • opts (Hash)

    additional options passed to Core::Prompt

Raises:

  • (ArgumentError)


32
33
34
35
36
37
38
39
40
41
42
# File 'lib/clack/prompts/range.rb', line 32

def initialize(message:, min: 0, max: 100, step: 1, initial_value: nil, default: nil, **opts)
  super(message:, **opts)

  raise ArgumentError, "min must be less than max" if min >= max
  raise ArgumentError, "step must be positive" if step <= 0

  @min = min
  @max = max
  @step = step
  @value = clamp(initial_value || default || min)
end