Package: org.codehaus.groovy.tools.shell

## [Groovy] Class Groovysh

- org.codehaus.groovy.tools.shell.Groovysh

- An interactive shell for evaluating Groovy code from the command-line (aka. groovysh). The set of available commands can be modified by placing a file in the classpath named `org/codehaus/groovy/tools/shell/commands.xml` See XmlCommandRegistrar

  Authors:
    Jason Dillon

- - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static String` | `AUTOINDENT_PREFERENCE_KEY` |
    `static String` | `COLLECTED_BOUND_VARS_MAP_VARNAME` |
    `static String` | `COLORS_PREFERENCE_KEY` |
    `static String` | `INTERPRETER_MODE_PREFERENCE_KEY` |
    `static String` | `METACLASS_COMPLETION_PREFIX_LENGTH_PREFERENCE_KEY` |
    `static String` | `SANITIZE_PREFERENCE_KEY` |
    `static String` | `SHOW_LAST_RESULT_PREFERENCE_KEY` |

  - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class Shell` | `log`

  - ### Properties Summary

    Properties
    Type | Name and description
    --- | ---
    `BufferManager` | `buffers`
    `Closure` | `defaultErrorHook`
    `Closure` | `defaultResultHook`
    `Closure` | `errorHook`
    `String` | `evictedLine`
    `FileHistory` | `history`
    `boolean` | `historyFull`
    `List<String>` | `imports`
    `int` | `indentSize`
    `Interpreter` | `interp`
    `PackageHelper` | `packageHelper`
    `Parser` | `parser`
    `Closure` | `resultHook`
    `InteractiveShellRunner` | `runner`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `Groovysh (ClassLoader classLoader, Binding binding, IO io, Closure registrar)`
    `Groovysh (ClassLoader classLoader, Binding binding, IO io, Closure registrar, CompilerConfiguration configuration)`
    `Groovysh (ClassLoader classLoader, Binding binding, IO io)`
    `Groovysh (Binding binding, IO io)`
    `Groovysh (IO io)`
    `Groovysh (IO io, CompilerConfiguration configuration)`
    `Groovysh ()`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `void` | `displayBuffer(List buffer)` Display the given buffer.
    `` | `void` | `displayWelcomeBanner(InteractiveShellRunner runner)` maybe displays log information and a welcome message
    `` | `Object` | `execute(String line)` Execute a single line, where the line may be a command or Groovy code (complete or incomplete).
    `` | `protected Object` | `executeCommand(String line)`
    `` | `protected String` | `formatLineNumber(int num)` Format the given number suitable for rendering as a line number column.
    `` | `String` | `getImportStatements()`
    `` | `String` | `getIndentPrefix()` Calculate probably desired indentation based on parenthesis balance and last char, as well as what the user used last as indentation.
    `` | `protected String` | `getPreference(String key, String theDefault)`
    `` | `File` | `getUserStateDirectory()`
    `` | `static boolean` | `isTypeOrMethodDeclaration(List<String> buffer)` return true if the buffer can be recognized as a type declaration statement
    `` | `protected void` | `loadUserScript(String filename)` Loads file from within user groovy state directory
    `` | `protected void` | `maybeRecordError(Throwable cause)`
    `` | `protected void` | `maybeRecordInput(String line)`
    `` | `protected void` | `maybeRecordResult(Object result)`
    `` | `String` | `renderPrompt()`
    `` | `int` | `run(String evalString, List<String> filenames)` Run Interactive Shell with optional initial script and files to load
    `` | `int` | `run(String commandLine)` Run Interactive Shell with initial command

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Shell` | `execute, findCommand, isExecutable, leftShift, leftShift, register`

- - ### Field Detail

    - #### public static final String AUTOINDENT_PREFERENCE_KEY

    - #### public static final String COLLECTED_BOUND_VARS_MAP_VARNAME

    - #### public static final String COLORS_PREFERENCE_KEY

    - #### public static final String INTERPRETER_MODE_PREFERENCE_KEY

    - #### public static final String METACLASS_COMPLETION_PREFIX_LENGTH_PREFERENCE_KEY

    - #### public static final String SANITIZE_PREFERENCE_KEY

    - #### public static final String SHOW_LAST_RESULT_PREFERENCE_KEY

  - ### Property Detail

    - #### final BufferManager buffers

    - #### final Closure defaultErrorHook

    - #### final Closure defaultResultHook

    - #### Closure errorHook

    - #### String evictedLine

    - #### FileHistory history

    - #### boolean historyFull

    - #### final List<String> imports

    - #### int indentSize

    - #### final Interpreter interp

    - #### PackageHelper packageHelper

    - #### final Parser parser

    - #### Closure resultHook

    - #### InteractiveShellRunner runner

  - ### Constructor Detail

    - #### Groovysh(ClassLoader classLoader, Binding binding, IO io, Closure registrar)

    - #### Groovysh(ClassLoader classLoader, Binding binding, IO io, Closure registrar, CompilerConfiguration configuration)

    - #### Groovysh(ClassLoader classLoader, Binding binding, IO io)

    - #### Groovysh(Binding binding, IO io)

    - #### Groovysh(IO io)

    - #### Groovysh(IO io, CompilerConfiguration configuration)

    - #### Groovysh()

  - ### Method Detail

    - #### void displayBuffer(List buffer)

      Display the given buffer.

    - #### void displayWelcomeBanner(InteractiveShellRunner runner)

      maybe displays log information and a welcome message

      Parameters:
        term

    - #### @Override Object execute(String line)

      Execute a single line, where the line may be a command or Groovy code (complete or incomplete).

    - #### protected Object executeCommand(String line)

    - #### protected String formatLineNumber(int num)

      Format the given number suitable for rendering as a line number column.

    - #### String getImportStatements()

    - #### String getIndentPrefix()

      Calculate probably desired indentation based on parenthesis balance and last char, as well as what the user used last as indentation.

      Returns:
        a string to indent the next line in the buffer

    - #### protected String getPreference(String key, String theDefault)

    - #### File getUserStateDirectory()

    - #### @CompileStatic static boolean isTypeOrMethodDeclaration(List<String> buffer)

      return true if the buffer can be recognized as a type declaration statement

      Parameters:
        strings
      Returns:

    - #### protected void loadUserScript(String filename)

      Loads file from within user groovy state directory

      Parameters:
        filename

    - #### protected void maybeRecordError(Throwable cause)

    - #### protected void maybeRecordInput(String line)

    - #### protected void maybeRecordResult(Object result)

    - #### String renderPrompt()

    - #### int run(String evalString, List<String> filenames)

      Run Interactive Shell with optional initial script and files to load

    - #### int run(String commandLine)

      Run Interactive Shell with initial command