swarm-0.3.0.0: 2D resource gathering game with programmable robots
Safe HaskellSafe-Inferred
LanguageHaskell2010

Swarm.TUI.Model.Repl

Synopsis

REPL

replItemText :: REPLHistItem -> Text Source #

Get the text of REPL input/output.

isREPLEntry :: REPLHistItem -> Bool Source #

Useful helper function to filter out REPL output.

getREPLEntry :: REPLHistItem -> Maybe Text Source #

Useful helper function to only get user input text.

data REPLHistory Source #

History of the REPL with indices (0 is first entry) to the current line and to the first entry since loading saved history. We also (ab)use the length of the REPL as the index of current input line, since that number is one past the index of last entry.

replIndex :: Lens' REPLHistory Int Source #

The current index in the REPL history (if the user is going back through the history using up/down keys).

replLength :: REPLHistory -> Int Source #

Current number lines of the REPL history - (ab)used as index of input buffer.

replSeq :: Lens' REPLHistory (Seq REPLHistItem) Source #

Sequence of REPL inputs and outputs, oldest entry is leftmost.

newREPLHistory :: [REPLHistItem] -> REPLHistory Source #

Create new REPL history (i.e. from loaded history file lines).

addREPLItem :: REPLHistItem -> REPLHistory -> REPLHistory Source #

Add new REPL input - the index must have been pointing one past the last element already, so we increment it to keep it that way.

restartREPLHistory :: REPLHistory -> REPLHistory Source #

Point the start of REPL history after current last line. See replStart.

getLatestREPLHistoryItems :: Int -> REPLHistory -> [REPLHistItem] Source #

Get the latest N items in history, starting with the oldest one.

This is used to show previous REPL lines in UI, so we need the items sorted in the order they were entered and will be drawn top to bottom.

data TimeDir Source #

Constructors

Newer 
Older 

Instances

Instances details
Show TimeDir Source # 
Instance details

Defined in Swarm.TUI.Model.Repl

Eq TimeDir Source # 
Instance details

Defined in Swarm.TUI.Model.Repl

Methods

(==) :: TimeDir -> TimeDir -> Bool #

(/=) :: TimeDir -> TimeDir -> Bool #

Ord TimeDir Source # 
Instance details

Defined in Swarm.TUI.Model.Repl

Prompt utils

data REPLPrompt Source #

This data type tells us how to interpret the text typed by the player at the prompt (which is stored in Editor).

Constructors

CmdPrompt [Text]

Interpret the prompt text as a regular command. The list is for potential completions, which we can cycle through by hitting Tab repeatedly

SearchPrompt REPLHistory

Interpret the prompt text as "search this text in history"

removeEntry :: Text -> REPLHistory -> REPLHistory Source #

Given some text, removes the REPLEntry within REPLHistory which is equal to that. This is used when the user enters in search mode and want to traverse the history. If a command has been used many times, the history will be populated with it causing the effect that search command always finds the same command.

REPL Panel Model

replPromptType :: Lens' REPLState REPLPrompt Source #

The way we interpret text typed by the player in the REPL prompt.

replPromptEditor :: Lens' REPLState (Editor Text Name) Source #

The prompt where the user can type input at the REPL.

replPromptText :: Lens' REPLState Text Source #

Convinience lens to get text from editor and replace it with new one that has the provided text.

replValid :: Lens' REPLState Bool Source #

Whether the prompt text is a valid Term.

replLast :: Lens' REPLState Text Source #

The last thing the user has typed which isn't part of the history. This is used to restore the repl form after the user visited the history.

replType :: Lens' REPLState (Maybe Polytype) Source #

The type of the current REPL input which should be displayed to the user (if any).

replHistory :: Lens' REPLState REPLHistory Source #

History of things the user has typed at the REPL, interleaved with outputs the system has generated.

Initialization

lastEntry :: Text -> REPLHistory -> Maybe Text Source #

Get the last REPLEntry in REPLHistory matching the given text