270 likes | 508 Views
Spice in Dyalog. V1.02. 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:. Initializing Spice.
E N D
Spicein Dyalog V1.02
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:
Initializing Spice Spice can be started automatically when starting APL by setting the SALT registry key AddSPICE to ‘1’
Initializing Spice Spice can also be started automatically by using the <enableSpice> function in the SALT workspace: )LOAD SALT enableSpice
Initializing Spice in V12 The configuration menu:
? Spice Help To get a list of all available commands you enter ‘?’ 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\b>0 Will find in SALT files where syntactic abc is greater than 0
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 .dyalog extension. • All Spice script files are kept 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: • 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:
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
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