#!/usr/bin/expect -- # (find-es "maple" "maple_expect") # (find-fline "~/.mapleinit" "prompt") set prompt "%%> " proc msend {li} { global prompt send "$li\r" interact -o $prompt {send_user $prompt; return} } proc nopage {} {msend "interface(screenheight=4000);"} proc page {{height 50}} {msend "interface(screenheight=$height);"} proc bigmsend {str} {foreach li [split $str "\n"] {msend $li}} proc bigfsend {fname} {bigmsend [exec cat $fname]} proc decode {funcname} {msend "print($funcname);"} proc qdecode {funcname} {msend "HC('$funcname');"} proc minteract {} { global env interact { "~~" {bigfsend $env(HOME)/bin/ee.maple} "~np" {nopage} "~p" {page} -re "~(\[0-9\]+)p" {page $interact_out(1,string)} } } spawn /usr/local/maple/bin/maple # minteract proc argv {n} {global argv; lindex $argv [expr $n-1]} if {$argv==""} {set argv -i} for {set i 1} {$i<=[llength $argv]} {incr i} { switch -- [argv $i] { -np {nopage} -p {page [argv [incr i]]} -i {minteract} -f {bigfsend [argv [incr i]]} -s {bigmsend [argv [incr i]]} -c {eval [argv [incr i]]} -decode {foreach func [argv [incr i]] {decode $func}} -qdecode {foreach func [argv [incr i]] {qdecode $func}} -q {msend "quit"} -w {expect $prompt} default {puts "Bad arg: [argv $i]"} } }