/usr/share/gap/lib/demo.g is in gap-libs 4r8p8-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | #############################################################################
##
#W demo.g GAP library Werner Nickel
##
##
## This files contains functions that support running demonstrations with
## Gap.
##
#############################################################################
##
#F Demonstration( <file> ) . . . . . . . . . . run a demonstration from file
##
if not IsBound(last) then
last := fail;
fi;
if not IsBound(last2) then
last2 := fail;
fi;
if not IsBound(last3) then
last3 := fail;
fi;
if not IsBound(time) then
time := fail;
fi;
BindGlobal( "Demonstration", function( file )
local input, keyboard, result, storedtime;
input := InputTextFile( file );
while input = fail do
Error( "Cannot open file ", file );
od;
Print( "\nStart of demonstration.\n\n" );
InputLogTo( "*stdout*" );
keyboard := InputTextUser();
Print( "demo> \c" );
while CHAR_INT( ReadByte( keyboard ) ) <> 'q' do
storedtime := Runtime();
result:=READ_COMMAND_REAL( input, true ); # Executing the command.
time := Runtime()-storedtime;
if Length(result) = 2 then
last3 := last2;
last2 := last;
last := result[2];
View( result[2] );
Print("\n" );
fi;
if IsEndOfStream( input ) then
break;
fi;
Print( "demo> \c" );
od;
Print( "\nEnd of demonstration.\n\n" );
CloseStream( keyboard );
CloseStream( input );
InputLogTo();
end );
#############################################################################
##
#F ReadVerbose( <file> ) . . . . . . . . . . run a demonstration from file
##
BindGlobal( "ReadVerbose", function( file )
local input,command,exec,result,blank,semic,hash,process,l,view,estream;
input := InputTextFile( file );
while input = fail do
Error( "Cannot open file ", file );
od;
blank:=" \n";
semic:=';';
hash:='#';
exec:="";
process:=function()
local storedtime;
view:=true;
if exec[Length(exec)-1]=semic then
view:=false;
fi;
estream:=InputTextString( exec );
storedtime := Runtime();
result:=READ_COMMAND_REAL( estream, true ); # Executing the command.
time := Runtime()-storedtime;
CloseStream(estream);
if Length(result) = 2 then
last3 := last2;
last2 := last;
last := result[2];
if view then
View(result[2]);
Print("\n");
fi;
fi;
exec:="";
end;
command := ReadLine( input ); # Executing the command.
while not IsEndOfStream(input) do
if Length(exec)=0 then
Print("gap> ");
else
Print("> ");
fi;
Print(command);
# is there a hash mark anywhere?
l:=1;
while l<=Length(command) and command[l]<>hash do
l:=l+1;
od;
l:=l-1;
# remove trailing blanks
while l>0 and command[l] in blank do
l:=l-1;
od;
Append(exec,command{[1..l]});
if l>0 and command[l]=semic then
process();
fi;
command := ReadLine( input ); # Executing the command.
od;
CloseStream( input );
if Length(exec)>0 then
process();
fi;
end );
#############################################################################
##
#E
|