REPL

REPL stands for Read Eval Print Loop, which basically means it's an interface to try out code while we develop it.

The Clarive REPL is specially important in the development process as it will enable the developer to test the code and calls within the Clarive server environment. The server environment includes things as database connection, access to related servers, such as build servers and deployment nodes. That way you can test your code in a familiar environment with close to real tests.

REPL Components

The REPL has 3 main panels:

  • The code entry area, where the code should be entered
  • The left panel where her History and Saved trees are.
  • The bottom Output panel

AutoSave user preferences

REPL keep CLARIVE default values are the default for the following menus:

  • Language menu.
  • Output menu.
  • Theme menu.

The next time the user enters the REPL will start with the last values loaded.

Output panel

The output panel holds a representation of the data by evalling the last line of the REPL. In both Perl and JS, simply putting the variable or value in the last line is sufficient to produce an output.

This REPL code:

var xx = [1,2,3];
xx;

Results in the following representation:

---
- 1
- 2
- 3

Also, the REPL engine captures all the output to STDOUT and STDERR generated by the code, including thrown exceptions.

This code:

print( 123 );

Produces the following (YAML) output:

123

--- ~

Which basically translates as a 123 printed out and a undefined return value represented by YAML, which starts with ---.

History tree

The History tree shows the last 20 unique code executions for the current user session.

Everytime code is sent to the server, an entry is saved in the History tree for that user session.

If the user logs out and logs in again, the user's history is lost.

Saved tree

The Saved tree will hold all saved REPL items. The tree belongs to the user and will be attached to him for as long as the user is not deleted.

Deleting a user deletes all of her saved REPL entries.

Using the REPL

Enter some code in the main editor panel and hit Ctrl-Enter or Cmd-Enter (on Mac) to submit the code for execution.

Cancelling an execution

To cancel an execution does not actually kill the process on the server, just that it returns control to the user.

That means a server could be overloaded by requests if too many long-running REPL processes are executed.

Run

Runs the REPL. Equivalent to executing Ctrl-Enter or Cmd-Enter.

Language Menu

The REPL enables the execution of 4 types of code, controlled by the language menu drop-down:

  • Clarive JavaScript (Clarive JS)
  • Perl (requires special permissions)
  • Clarive UI Web JS (executed by the browser)
  • DB Code

This is controlled by the Lang drop-down menu.

Output Menu

Allows the user to select the format of the data shown on the bottom.

  • YAML - data structures are shown in YAML format
  • JSON - data structures are shown in JSON format
  • Table - will attempt to format an HTML table from an Array (or similar list type)
  • Data Editor - will attempt to show a data editor UI component with an Object (JS) or Hash/Dictionary data type.

Save Button

Will save the current REPL into the user saved REPL list.

Export all to file

Exports all saved REPL to files on the file system.

Delete

Deletes the current REPL in case it has been saved.

Tidy

Reformats (a.k.a. beautifies) the code so that it's neat and more readable.

Elapsed

This is the time, in seconds, the script took to compile (to bytecode) and execute.

This is important to gain insight on how fast and for how long a script can execute, so the developer can fine tune its execution.