Global Variables

Unless you are running in no-frills mode, all Spice scripts and modules can access the following methods and objects:

Module objects

Spice objects

The following Espresso classes are also available globally; see the Espresso API for usage information:

  • CETextRecipe
  • CETextSnippet
  • MRRangeSet
  • SXSelectorGroup

require function

require(module, [filePaths, loadGlobally, forceReload])

Arguments

module
The module identifier you wish to load; this should be the name of your script file without the .js extension
filePaths (optional)
A string (if a single path) or array of paths you wish to search within the Support folder. For instance, if you wanted to load a module from Support/Scripts instead of Support/Library for some reason you could run require('my_script', 'Scripts').
loadGlobally (optional)
A boolean; true if you wish to execute the script globally instead of as a module. You should rarely if ever need this.
forceReload (optional)
A boolean; true if you wish to reload the script from the file even if it has already been loaded.

Returns exported module object, or a bool if loading globally

require.global(module, [filePaths])

Shortcut for including modules globally and accepts the first two arguments of require(); you will almost never need to use this function unless you require mootools-server: require.global('mootools-server').

Returns bool; was the module successfully loaded or not.

Will return true if the module was previously loaded, even though it was not executed again.

require.force(module, [filePaths, loadGlobally])

Shorcut for force reloading a module. First three parameters are identical to require().

Returns module exports object or bool if loading globally.

system object

system.print(message)

Logs the passed string or object to the console; view logged items in Console.app (in /Applications/Utilities/)

system.log(message)

Identical to system.print().

You may optionally call system.log.fatal(message), system.log.error(message), system.log.warn(message), system.log.info(message), or system.log.debug(message) but at this time they behave identically to system.print() as well.

system.shell(command, shell, envObject)

Executes a shell command (or string of commands).

Arguments

command
A string; the command, or sequence of commands, that you wish to have executed.
shell
A string; the name of the shell you wish to use. Available options are ‘bash’, ‘csh’, ‘ksh’, ‘sh’, ‘tcsh’, or ‘zsh’. Optional; defaults to ‘bash’.
envObject
An object; an object of key:value pairs that you wish to be populated in your shell’s environment for use by the command. Optional.

Returns string; the output of the command (if any).

system.modules object

This object contains all modules currently loaded, sorted by module identifier (what you pass to require()). Each module additionally has the following attributes:

system.modules[id].global
Bool; was the module evaluated globally
system.modules[id].path
String; the path to the script

Don’t mess around with the system.modules object unless you know what you’re doing. In normal usage, you should never need to access it at all.

context object

The context object is the textContext or fileContext passed to your script from Espresso; refer to the Espresso API for details on available methods. You should rarely if ever need to use this object if you are using Spice’s bundled utility modules.

SpiceController

The SpiceController object offers access to the Spice class’s API. For all available properties and methods, see the Spice header file. Under normal usage, you should never need to access this object.