Spice Spice in Dyalog V1.02
Oct Spice Utilities Spice is a cover for SALT. It uses an input area at the bottom of the screen to issue user defined commands using SALT. Spice can be initialized directly from SALT:
Oct Initializing Spice Spice can be started automatically when starting APL by setting the SALT registry key AddSPICE to ‘1’
Oct Initializing Spice Spice can also be started automatically by using the function in the SALT workspace: )LOAD SALT enableSpice
Oct Initializing Spice in V12 The configuration menu:
Oct Spice Help To get a list of all available commands you enter ‘?’ in the input area: ?
Oct Example of a custom Spice command: locate Use “locate string” to locate a regular expression string in SALT folders, e.g.: locate \babc\b>0 Will find in SALT files where syntactic abc is greater than 0
Oct 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
Oct How does Spice work? -Spice commands are kept in script files, like SALT. -Spice files have a.dyalog extension. -All Spice script files are kept in folder [Dyalog]\SALT\spice
Oct How does Spice work? Each script file contains a class with a number of presumably related commands. For example a script/class could contain 1.a command to search text 2.a command to replace text
Oct How does Spice work? A script file MUST contain at least 3 public shared functions: 1.A function 2.A function 3.A function It may contain other functions.
Oct How does Spice work? The function The 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.
Oct How does Spice work? The function Each namespace returned by contains 4 variables; each one is a string: 1.Name: the name of the command 2.Group: the group the command belongs to 3.Desc: a short description 4.Parse: the parsing rules
Oct How does Spice work? The function The 4 variables: 1.Name: a single word, e.g. locate 2.Group: a single word, e.g. files 3.Desc: a sentence, e.g. Find string in files 4.Parse: a string describing the command syntax, e.g. 2 –exclude=
Oct How does Spice work? The 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' ∇
Oct How does Spice work? The function The 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.
Oct How does Spice work? The 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 ∇
Oct How does Spice work? The function The function is monadic. It takes 2 arguments: 1.a string naming the command to deal with, e.g. locate 2.either a string or a namespace which is the argument to the command
Oct How does Spice work? The 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 ∇
Oct Example See script Spice\aSample.dyalog It contains 2 examples of Spice commands: 1.no parsing rules 2.with specific parsing rules
Oct Example The syntax is described in the help:
Oct Example If the syntax is wrong Spice will complain: No arguments!
Oct Example If the syntax is right Spice will do it:
Oct Special Spice command When Spice starts a special command is run That command is 'Setup' It is found in spice\Setup.dyalog It can be modified to suit your needs
Oct Special Spice command
Oct Final SPICE is a development tool. It can be used to store frequently used (and even less frequently used) user commands.
Oct Short Final More information can be found in the Spice document. Dyalog 2008