|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface Evaluation
A Sleep evaluation is a way to define how a `back quoted` string should work. In Perl any text inside of `back quotes` is fevaluated for embedded $scalar values and then executed as a shell command. The output of the executed command is collected into a perl array and returned as the resulting value of the `back quote` expression.
While executing commands in this way might be a useful abstraction, it seems more fun to allow you, the application developer to define what this syntax should do.
The following is an implementation of perl-like backquote behavior for Sleep:
import sleep.interfaces.Evaluation; import sleep.runtime.Scalar; import sleep.runtime.ScriptInstance; import sleep.runtime.SleepUtils; import java.io.*; public class PerlLike implements Evaluation { public Scalar evaluateString(ScriptInstance script, String value) { Scalar rv = SleepUtils.getArrayScalar(); try { // execute our process and setup a reader for it Process proc = Runtime.getRuntime().exec(value); BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); // read each line from the process output, stuff it into our scalar array rv String text = null; while ((text = reader.readLine()) != null) { rv.getArray().push(SleepUtils.getScalar(text)); } } catch (IOException ex) { script.getScriptEnvironment().flagError(ex.toString()); } return rv; } }
To install the perl-like backquote evaluator into the script environment:
public boolean scriptLoaded(ScriptInstance script) { Evaluation perlStuff = new PerlLike(); Hashtable environment = script.getScriptEnvironment().getEnvironment(); environment.put("%BACKQUOTE%", perlStuff); return true; }
Method Summary | |
---|---|
Scalar |
evaluateString(ScriptInstance si,
java.lang.String value)
Evaluate the specified string value. |
Method Detail |
---|
Scalar evaluateString(ScriptInstance si, java.lang.String value)
typeKeyword
- the keyword for the function. (i.e. sub)functionName
- the function name (i.e. add)functionBody
- the compiled body of the function (i.e. code to add 2 numbers)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |