Server side macros
To avoid redundant code in your WarpScripts, you can develop server side macros. Macros allow for code factorization.
Macro directory
In the /path/to/warp10/etc/conf.d/20-macros.conf
file, the directory containing macros is configured by:
warpscript.repository.directory = ${standalone.home}/macros
warpscript.repository.refresh = 5000
warpscript.repository.directory
: Macro Repositorywarpscript.repository.refresh
: How often (in ms) to scan macro repository for new scripts.
Macros are mc2 files deployed:
- in a sub directory in Warp 10 Analytics Engine, for example:
/path/to/warp10/macros/domain/app/macro.mc2
- via jar files for use with WarpScript library
Server side macro
For example: /path/to/warp10/macros/domain/app/MAX_ABS.mc2
<%
// Macro's documentation
{
'name' 'domain/app/MAX_ABS'
'desc' // Description
<'
Function to calculate the max absolute value of two parameters
'>
// Signature
'sig' [ [ [ [ 'param2:LONG' 'param1:LONG' ] ] [ 'result:LONG' ] ] ]
'params' {
'param1' 'First parameter'
'param2' 'Second parameter'
'result' 'Max absolute value of two parameters'
}
// Examples
'examples' [
<'
-7 8 @domain/app/MAX_ABS
'>
]
} INFO
// Actual code of the macro
SAVE 'context' STORE
ABS // Absolute value of first parameter
SWAP // Swapping to get 2nd parameter on top
ABS // Absolute value of 2nd parameter
MAX // Max of those two absolute values
$context RESTORE
%>
'macro' STORE
// Unit tests
-1 -5 $macro EVAL 5 == ASSERT
$macro
Once deployed, you can use it. For example:
-1 -5 @domain/app/MAX_ABS // To evaluate a macro you use @name