260 likes | 503 Views
Spice in Dyalog. V1.03. Spice Utilities. Spice is a user command handler. Under V11 & V12 it uses an input area at the bottom of the screen to issue user defined commands using SALT. It can be initialized directly from SALT:. Initializing Spice.
E N D
Spicein Dyalog V1.03
Spice Utilities Spice is a user command handler. Under V11 & V12 it uses an input area at the bottom of the screen to issue user defined commands using SALT. It can be initialized directly from SALT:
Initializing Spice The Spice input area can also be started automatically by using the <enableSpice> function in the SALT workspace: )LOAD SALT enableSpice
Initializing the Spice area in V12 The configuration menu:
Initializing Spice in V12.1 There is no need to initialize the Spice input area in 12.1. The Spice user command handler is always available directly through the ] with 12.1. Simply use ] where you would use the input area, e.g. ]mycmd
? Spice Help To get a list of all available commands you enter ]? or ‘?’ in the input area:
Example of a custom Spice command: locate Use “locate string” to locate a regular expression string in SALT folders, e.g.: ]locate \babc>0$ Will find in SALT files where syntactic abc is greater than 0 at the end of a line.
Using SALT commands in Spice All the SALT commands but New can be issued here, e.g.: ]save myclass file1 ]compare file1 -ver=4 ]list mine ]settings ]load myfile ]removeversions filex -v=<9
How does Spice work? • Spice commands are kept in script files, like SALT. • Spice files have a .dyalogextension. • All Spice script files are kept by default in folder [Dyalog]\SALT\spice
How does Spice work? Each script file contains a class with a number of (presumably) related commands. For example a script/class could contain • a command to search text • a command to replace text
How does Spice work? A script file MUST contain at least 3 public sharedfunctions for the Spice handler: • A <List> function • A <Run> function • A <Help> function It may contain other functions.
How does Spice work? The <List> function The <List> function is niladic. It returns a list of as many namespaces as there are commands in the script file. E.g.: if there are 2 commands in the script file it returns 2 namespaces.
How does Spice work? The <List> function Each namespace returned by <List> contains 4 variables; each one is a string: • Name: the name of the command • Group: the group the command belongs to • Desc: a short description • Parse: the parsing rules
How does Spice work? The <List> function The 4 variables: • Name: a single word, e.g. locate • Group: a single word, e.g. files • Desc: a sentence, e.g. Find string in files • Parse: a string describing the command syntax, e.g. 2 –exclude=
How does Spice work? The <List> function (example with 2 cmds) ∇ r←List :Access Shared Public r←⎕NS¨2⍴⊂'' r.Name←'Locate' 'Replace' r.Group←⊂'Files' r.Parse←'1' '2' r[1].Desc←'Find a string in files' r[2].Desc←'Replace a string by another' ∇
How does Spice work? The <Help> function The <Help> function is monadic. It takes a string naming the command to return detailed help for, e.g. locate It returns a string describing help for that command.
How does Spice work? The <Help> function (example with 2 cmds) ∇ r←Help Cmd :Access Shared Public r←'' r,←⊂'Arg: string; shows where the string is found' r,←⊂'Arg: 2 strings; replace the first one by the other' r←r⊃⍨'Locate' 'Replace'⍳⊂Cmd ∇
How does Spice work? The <Run> function The <Run> function is monadic. It takes 2 arguments: • a string naming the command to deal with, e.g. locate • either a string or a namespace which is the argument to the command
How does Spice work? The <Run> function (example with 2 cmds) ∇ r←Run(Cmd ca);ct;w :Access Shared Public r←0 0⍴'' ⋄ ct←⎕SE.SALT.Load'Utils\fileUtils -noname' w←##.textUtils.splitOn⍨⎕SE.SALT.Settings'workdir' :Select Cmd :Case 1⊃Fns ⋄ w ct.showExpr¨⊂ca.Argument :Case 2⊃Fns ⋄ w ct.replExpr¨⊂ca.Argument :EndSelect ∇
Example See script Spice\aSample.dyalog It contains 2 examples of Spice commands: • no parsing rules • with specific parsing rules
Example The syntax is described in the help:
Example If the syntax is wrong Spice will complain: No arguments!
Example If the syntax is right Spice will do it:
Spice command location When APL is installed Spice commands location is [Dyalog]\SALT\spice but you can change it. The SALT settings contain Spice’s commands location in cmddir: ]setting cmddir \my\own\user\cmds Will change the Spice/user commands folder to \my\own\user\cmds
Final SPICE is a development tool. It can be used to store frequently used (and even less frequently used) user commands.
Short Final More information can be found in the Spice document. Dyalog 2008