Skip to content
/ ldplnoise Public

LDPL Extension for linenoise, a lite version of readline.

Notifications You must be signed in to change notification settings

xvxx/ldplnoise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 11, 2020
3afb840 · Jan 11, 2020

History

34 Commits
Nov 14, 2019
Nov 14, 2019
Jan 11, 2020
Nov 14, 2019
Nov 14, 2019
Nov 14, 2019
Apr 5, 2019

Repository files navigation

LDPLNOISE

LDPL 4.3 extension with linenoise support. linenoise is a lite version of readline, originally at https://github.com/antirez/linenoise.

This version wraps https://github.com/yhirose/cpp-linenoise.

Usage

There's only one required variable: RL-INPUT. You must declare it before using this extension:

DATA:
RL-INPUT is EXTERNAL TEXT

The optional variables are:

  • RL-PROMPT
    • Defaults to > and allows you to customize the prompt shown to users.
  • RL-HISTORY-FILE
    • Can be set to the path to the history file for this program.

To actually use the library, call the RL-ACCEPT subroutine to prompt the user for input:

STORE "Type something: " IN RL-PROMPT
CALL EXTERNAL RL-ACCEPT

What the user inputs will be put into the RL-INPUT text variable:

DISPLAY "You entered: " RL-INPUT CRLF

So the above will print:

Type something: <user types Dave and presses >
You entered: Dave

To record history for a single session, call RL-ADD-HISTORY after calling RL-ACCEPT. The content of the RL-INPUT variable will be added to the history.

To persist history across sessions, you need to save and load a history file. To do so, first set the RL-HISTORY-FILE text variable to the location of your history file, then use the RL-LOAD-HISTORY and RL-SAVE-HISTORY subroutines to load/save the history when your LDPL program begins and ends:

# ...program starts...
STORE "history.txt" IN RL-HISTORY
CALL EXTERNAL RL-LOAD-HISTORY
# ...main program code...
CALL EXTERNAL RL-ACCEPT
CALL EXTERNAL RL-ADD-HISTORY
# ...before the program exits...
CALL EXTERNAL RL-SAVE-HISTORY

Setup

The easy way to include LDPLNOISE in your project is to clone this repo into it and tell the the ldpl compiler where to find ldplnoise.cpp:

cd my-great-ldpl-project
git clone https://github.com/xvxx/ldplnoise
ldpl -i=ldplnoise/ldplnoise.cpp my-code.ldpl
./my-code-bin

You can also use the EXTENSION statement in your LDPL files:

EXTENSION "ldplnoise.cpp"

Example

git clone https://github.com/xvxx/ldplnoise
cd ldplnoise
make example

This should launch you into a basic prompt that echos what you type and remembers you history for that session. To exit, just type "quit" or "exit", submit an empty line, or hit Ctrl-C.

Check out example.ldpl to see an example of using the extension.

LDPL API

Variables:

RL-INPUT          # text entered by the user during RL-ACCEPT
RL-PROMPT         # text prompt shown to user. optional
RL-HISTORY-FILE   # text path to history file

Subroutines:

RL-ACCEPT                # main readline()-like prompt function.
RL-LOAD-HISTORY          # load command history from RL-HISTORY-FILE
RL-SAVE-HISTORY          # save command history to RL-HISTORY-FFILE
RL-ADD-HISTORY           # add content of RL-INPUT to the history
                         # should be called after RL-ACCEPT

About

LDPL Extension for linenoise, a lite version of readline.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published