<?
require("logo.php");
/*
A eimple helper function:
function sft (string from template) (simplified)
input: - one array with substitute values
- a template file
output: - a (html) stream
*/
function sft($pairs, $template)
{
$str = implode(file($template), "");
$res = preg_replace("/\\{\\{(\\w+)\\}\\}/Ue", "\$pairs['\\1']", $str);
return $res;
}
/*
To get started, we include a simple logo program.
This function returns a simple logo program that serves as an example.
*/
function get_program()
{
$res = <<<EOH
to triangle :sides
make "angle 120
repeat 360 / :angle [forward :sides left :angle]
end
to house
forward 50
Right 90
forward 50
left 135
forward 35
left 90
forward 35
right 270
forward 70
left 135
forward 50
left 135
forward 70
left 135
fd 50
end
house
penup
lt 90
backward 50
pendown
triangle 20
EOH;
return $res;
}
/*
We are going to store the program that one is typing in the current
session, so the student does not have to do a lot of re-typing.
*/
session_start();
session_register("theprogram");
switch ($cmd) {
case "swf":
/*
The template calls this example with cmd=swf.
We output the results of the program here.
*/
$logo = new logoclass($theprogram);
$logo->output();
break;
default:
if (empty($program)) {
$program = get_program();
}
$program = stripslashes($program);
$theprogram = $program;
$arr = compact("program");
echo sft($arr, "logo.tem.html");
}
?>
|