Readline API

The Readline class provides the main API for reading input from a terminal.

ReadlineBuilder

Configure and create a Readline instance:

Readline readline = ReadlineBuilder.builder()
        .editMode(EditModeBuilder.builder().create())
        .history(new FileHistory(new File(".history"), 100))
        .enableHistory(true)
        .historySize(50)
        .historyFile(".history")
        .completionHandler(new SimpleCompletionHandler())
        .build();

Reading Input

Basic Read

readline.readline(connection, prompt, input -> {
    if (input != null) {
        // Handle input
    }
});

Read with Completions

List<Completion> completions = Arrays.asList(
    new Completion("option1", "Description 1"),
    new Completion("option2", "Description 2")
);

readline.readline(connection, prompt, completions, input -> {
    // Handle input
});

Read with Pre-processors

List<Function<String, Optional<String>>> preProcessors = Arrays.asList(
    input -> input.trim().isEmpty() ? Optional.of("default") : Optional.of(input)
);

readline.readline(connection, prompt, completions, preProcessors, input -> {
    // Handle input
});

Read with Custom History

History customHistory = new InMemoryHistory(200);

readline.readline(connection, prompt, completions, preProcessors, customHistory, input -> {
    // Handle input
});

Full Signature

public void readline(
    Connection conn,
    Prompt prompt,
    Consumer<String> requestHandler,
    List<Completion> completions,
    List<Function<String, Optional<String>>> preProcessors,
    History history,
    CursorListener listener,
    EnumMap<ReadlineFlag, Integer> flags
)

Thread Safety

Readline is thread-safe. It will not accept new readline() calls while currently reading input. If you try to call readline() while already reading, an IllegalStateException will be thrown.

ReadlineFlag

Flags to control readline behavior:

FlagDescription
NO_PROMPT_REDRAW_ON_INTRDon’t redraw prompt on interrupt

Complete Signatures

// Minimal
readline(Connection conn, String prompt, Consumer<String> requestHandler)

// With completions
readline(Connection conn, String prompt, Consumer<String> requestHandler, List<Completion> completions)

// With Prompt object
readline(Connection conn, Prompt prompt, Consumer<String> requestHandler)

// With Prompt and completions
readline(Connection conn, Prompt prompt, Consumer<String> requestHandler, List<Completion> completions)

// With pre-processors
readline(Connection conn, Prompt prompt, Consumer<String> requestHandler, 
          List<Completion> completions, List<Function<String, Optional<String>>> preProcessors)

// With custom history
readline(Connection conn, Prompt prompt, Consumer<String> requestHandler, 
          List<Completion> completions, List<Function<String, Optional<String>>> preProcessors, 
          History history)

// With cursor listener
readline(Connection conn, Prompt prompt, Consumer<String> requestHandler, 
          List<Completion> completions, List<Function<String, Optional<String>>> preProcessors, 
          History history, CursorListener listener)

// With flags
readline(Connection conn, Prompt prompt, Consumer<String> requestHandler, 
          List<Completion> completions, List<Function<String, Optional<String>>> preProcessors, 
          History history, CursorListener listener, EnumMap<ReadlineFlag, Integer> flags)