Sleep/jIRCii Extensions - Evaluation Bridge
Sleep Evaluation Bridge for Sleep 2.1 Version 2008/6/9
Evaluation Bridge for Sleep 2.0
By default Sleep 2.1 evaluates strings in backquotes(`) like PERL.
The Evaluation Bridge makes it possible for script writers to script backquote handlers.
For example:
import shuteye.Evaluation from: evaluation.jar;
use(^Evaluation);
setEvaluationHandler( { return split(' ', $1); } );
@words = `results in an array containing the blank-separated words`;
Download Version 2008/6/9
(Size: 2.7K)
Precompiled classes (jdk 1.4.2)
(Size: 1.9K)
Evaluation Bridge source code
(Size: 803K)
contains examples and all the stuff to run them
Functions Reference
setEvaluationHandler( $function [, $key1 => $value1 [, $key2 => $value2 ...] ] )
sets $function as handler for handling strings in backquotes
where $function is an inline closure (first example),
or a variable that references a closure (regular expression example
)
or a function reference (sql example
).
updateEvaluationHandlerVars( $key1 => $newvalue1 [, $key2 => $value2 ...] )
allows the manipulation of the closure variables owned by the handler.
regular expression evaluation
import shuteye.Evaluation from: evaluation.jar;
use(^Evaluation);
$matches = {
local('$str $regex');
($str,$regex) = split('::', $1);
return matches($str,$regex);
};
setEvaluationHandler( $matches );
$text = '11 12 13 14';
foreach $group (`$text $+ ::(\\d\\d)`) {
println($group);
}
SQL evaluation
import shuteye.Classloader from: classloader.jar;
import shuteye.Evaluation from: evaluation.jar;
use(^Classloader);
use(^Evaluation);
addClassPath('hsqldb.jar');
addClassPath('slumber.jar');
use(loadClass('no.printf.slumber.JDBC'));
sub sqlEvaluation {
local('$resultset @result');
$resultset = dbQuery( $db_con, $1 );
@result = dbFetchBuffered( $resultset );
return @result;
}
$connection = dbConnect('org.hsqldb.jdbcDriver', 'jdbc:hsqldb:presidents', 'SA', '');
if ( checkError($err) ) {
println('error connecting db: ' . $err);
}
setEvaluationHandler(&sqlEvaluation , $db_con => $connection );
# sql statement in backquotes evaluates to an array containing the row hashes
foreach %row (`SELECT * FROM PRESIDENTS`) {
println( %row['ID'] . '. ' . "\t" . %row['NAME'] . "\t" .
%row['TERMBEGIN'] . '-' . %row['TERMEND'] );
}
# do not keep a reference to $connection in the handler
updateEvaluationHandlerVars( $db_con => $null );
dbClose( $connection );
Sleep Evaluation Bridge for Sleep 2.0 Version 2006/02/22
Evaluation Bridge for Sleep 2.1
By default Sleep evaluates strings in backquotes(`) like strings in double quotes(").
The EvaluationBridge makes it possible for script writers to script backquote handlers.
For example:
use('evaluation.jar','org.ululatus.sleep.bridges.EvaluationBridge');
setEvaluationHandler( { return split(' ', $1); } );
@words = `results in an array containing the blank-separated words`;
Download Version 2006/02/22
(Size: 2.7K)
Precompiled classes (jdk 1.4.2)
(Size: 1.9K)
Evaluation Bridge source code
(Size: [an error occurred while processing this directive])
contains examples and all the stuff to run them except sleep.jar
Functions Reference
setEvaluationHandler( $function [, $key1 => $value1 [, $key2 => $value2 ...] ] )
sets $function as handler for handling strings in backquotes
where $function is an inline closure (first example),
or a variable that references a closure (perl-like example
)
or a function reference (sql example
).
updateEvaluationHandlerVars( $key1 => $newvalue1 [, $key2 => $value2 ...] )
allows the manipulation of the closure variables owned by the handler.
Perl-like evaluation
use('evaluation.jar','org.ululatus.sleep.bridges.EvaluationBridge');
$perl_like = {
local('$proc $reader @output $line $err');
@output = array();
$proc = [[java.lang.Runtime getRuntime] exec: $1];
if ( checkError($err) || !-istrue $proc ) {
println( 'error in evaluation handler:' . $err);
return @output;
}
$reader = [new java.io.BufferedReader: [new java.io.InputStreamReader: [$proc getInputStream]]];
if ( checkError($err) ) {
println( 'error in evaluation handler:' . $err);
[$proc destroy];
return @output;
}
# read each line from the process output, stuff it into our array
$line = [$reader readLine];
if ( checkError($err) ) {
println( 'error in evaluation handler:' . $err);
[$reader close];
[$proc destroy];
return @output;
}
else {
push( @output, '' . $line, size(@output));
$available = 1;
while ( -istrue $available )
{
$line = [$reader readLine];
push( @output, '' . $line, size(@output));
if ( checkError($err) ) {
println( 'error in evaluation handler:' . $err);
[$reader close];
[$proc destroy];
return @output;
}
[$reader mark: 2];
if ( [$reader read] != -1 ) {
[$reader reset];
}
else {
$available = 0;
}
}
}
[$reader close];
return @output;
};
setEvaluationHandler($perl_like);
if ( -isDir @ARGV[0] ) {
$dir = @ARGV[0];
}
else {
$dir = '.';
}
@result = `cmd.exe /c dir $dir`;
# comment line above and uncomment next line if you are using linux or cygwin
# @result = `ls -l $dir`;
foreach $result (@result) {
println($result);
}
SQL evaluation
use('classloader.jar','org.ululatus.sleep.bridges.ClassloaderBridge');
use('evaluation.jar','org.ululatus.sleep.bridges.EvaluationBridge');
addClassPath('hsqldb.jar');
addClassPath('JDBC.jar');
useClass('JDBC');
sub sqlEvaluation {
local('$resultset @result');
$resultset = dbQuery( $db_con, $1 );
@result = dbFetchBuffered( $resultset );
return @result;
}
$connection = dbConnect('org.hsqldb.jdbcDriver', 'jdbc:hsqldb:presidents', 'SA', '');
if ( checkError($err) ) {
println('error connecting db: ' . $err);
}
setEvaluationHandler(&sqlEvaluation , $db_con => $connection );
# sql statement in backquotes evaluates to an array containing the row hashes
foreach %row (`SELECT * FROM PRESIDENTS`) {
println( %row['ID'] . '. ' . "\t" . %row['NAME'] . "\t" .
%row['TERMBEGIN'] . '-' . %row['TERMEND'] );
}
# do not keep a reference to $connection in the handler
updateEvaluationHandlerVars( $db_con => $null );
dbClose( $connection );
ululatus.org Valid XHTML 1.0! Valid CSS! Last modified 25 Jun 2008 11:20