|
|||||||||
| 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 | ||||||||