Pakete, Repositories und App-Kategorien suchen

Paketdetailsv0.2.3

cli_repl

Eine einfache Bibliothek zum Erstellen von CLI-REPLs

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
80.800
Likes
5
Pub-Punkte
130

Paket installieren

flutter pub add cli_repl

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Eine leichte Flutter/Dart-Bibliothek, die die Erstellung von Read-Eval-Print Loops (REPLs) für Befehlszeilen-Schnittstellen (CLI) vereinfacht. Sie ermöglicht Entwicklern, interaktive Befehlszeilen-Tools mit minimalem Aufwand zu erstellen, unterstützt Eingabeparsing, Befehlsausführung und Ausgabedarstellung. Ideal für Skript-Utilities, Debugging-Tools oder Bildungsanwendungen, die eine Benutzerinteraktion über Terminalbefehle erfordern. Das Paket ist plattformübergreifend und funktioniert nahtlos auf Android, iOS, Web, macOS, Windows und Linux.

Anwendungsfälle

  • Interaktive CLI-Werkzeuge erstellen
  • Debug-Konsolen erstellen
  • Entwicklung von Bildungsprogrammierumgebungen
  • Prototyping von Befehlszeilen-Skripten
  • Benutzerdefinierte REPL-Schnittstellen implementieren

Hauptmerkmale

  • Einfaches API zum Definieren von Befehlen
  • Plattformübergreifende Kompatibilität
  • Eingabe/Ausgabe-Verarbeitung im System
  • Unterstützung für asynchrone Befehlsausführung
  • Erweiterbares Befehlsregistrierungssystem

Geeignet für

  • Entwickler, die Befehlszeilen-Tools erstellen
  • Lehrkräfte bauen interaktive Coding-Tutorials
  • Tool-Ersteller, die eine terminalbasierte Interaktion benötigen
  • Flutter-Apps, die Konsolenähnliche Funktionalität erfordern

Hinweise

  • Erfordert Verständnis von Befehlszeilen-Interaktionsmustern
  • Beschränkt auf textbasierte Eingabe/Ausgabe
  • Nicht für Hochleistungs-Batchverarbeitung optimiert
  • Möglicherweise ist zusätzliche Fehlerbehandlung für komplexe Befehlslogik erforderlich

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

cli_repl

A simple library for creating CLI REPLs in Dart.

Features

Example Usage:

/// Echoes all entered lines
for (var line in new Repl().run()) {
  print(line);
} 
Statement Validation

By passing a validator to the Repl constructor, you can tell the REPL whether some entered text is a complete statement or not. The REPL calls this whenever a newline is entered to determine whether to yield a complete statement or continue it on a new line. The default validator returns true for all text.

Custom Prompts

By default, the REPL gives no prompt to the user when asking for a statement. You can change this by passing a prompt to the Repl constructor. By default, statement continuations on a new line will start with whitespace equal to the length of the prompt. You can override this by passing in continuation.

See example/example.dart for a demonstration of statement validation and custom prompts.

History

A history of entered lines is stored. History entries are modified when edited.

By default, a maximum of 50 entries are stored. You can change this by passing maxHistory into the Repl constructor.

Navigation
  • Left/Ctrl-B: Move left one character
  • Right/Ctrl-F: Move right one character
  • Home/Ctrl-A: Move to start of line
  • End/Ctrl-E: Move to end of line
  • Ctrl-L: Clear the screen
  • Ctrl-D: If there is text, delete the character under the cursor. If there is no text, exit.
  • Ctrl-F: Moves forward one character
  • Ctrl-B: Moves backward one character
  • Ctrl-U: Kill (cut) to start of line
  • Ctrl-K: Kill (cut) to end of line
  • Ctrl-Y: Yank (paste) previously killed text, inserting at cursor
  • Up/Down: Navigate within history
Testing REPLs

If running without a terminal, the input will be printed along with the prompts, allowing you to test REPLs made with this library by comparing stdout to the expected log input and output together.

See test/repl_test.dart for an example of this.

Running on Node

If you compile this to JS with Dart 2, you can run it on Node.

There are a couple of behavior differences:

  • Node's built-in readline library is used, so the supported navigation and history commands may vary from the Dart version.
  • Likewise, line history is managed by Node, and you can't change the maximum number of entries or edit history manually from Dart.
  • Only Repl.runAsync() works. Calling Repl.run() will throw an error.

Kategorien

Abhängigkeiten

Abhängigkeiten 2 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden