<? 
 
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"); 
} 
?> 
 
 |