GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
############################################################################# ## #W omget.g OpenMath Package Andrew Solomon #W Marco Costantini ## #Y Copyright (C) 1999, 2000, 2001, 2006 #Y School Math and Comp. Sci., University of St. Andrews, Scotland #Y Copyright (C) 2004, 2005, 2006 Marco Costantini ## ## OMGetObject reads an OpenMath object from an input stream and returns ## a GAP object. EvalOMString is an analog of EvalString for a string which ## contains an OpenMath object. ## ############################################################################# ## #F OMGetObject( <stream> ) ## ## <stream> is an input stream with an OpenMath object on it. ## Takes precisely one object off <stream> (using PipeOpenMathObject) ## and puts it into a string. ## From there the OpenMath object is turned into a GAP object ## by an appropriate function. ## InstallGlobalFunction(OMGetObject, function( stream ) local fromgap, firstbyte, gap_obj, # string success; # whether PipeOpenMathObject worked if IsClosedStream( stream ) then Error( "closed stream" ); elif IsEndOfStream( stream ) then Error( "end of stream" ); fi; firstbyte := ReadByte(stream); if firstbyte = 24 then # Binary encoding gap_obj := GetNextObject( stream, firstbyte ); gap_obj := OMParseXmlObj( gap_obj.content[1] ); return gap_obj; else # XML encoding fromgap := ""; # Get one OpenMath object from 'stream' and put into 'fromgap', # using PipeOpenMathObject success := PipeOpenMathObject( stream, fromgap, firstbyte ); if success <> true then Error( "OpenMath object not retrieved" ); fi; # convert the OpenMath string into a Gap object using an appropriate # function return OMgetObjectXMLTree( fromgap ); fi; end); ############################################################################# ## #F EvalOMString( <omstr> ) ## ## This function is an analog of EvalString for a string which contains an ## OpenMath object. ## InstallGlobalFunction( EvalOMString, function( omstr ) local s, obj; s := InputTextString( omstr ); obj := OMGetObject( s ); CloseStream( s ); return obj; end); ############################################################################# #E