home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e031 / 3.ddi / MATHZIP2 / STARTUP / MSGDUMP.M < prev    next >
Encoding:
Text File  |  1991-09-23  |  1.8 KB  |  42 lines

  1. (
  2. (* This file is read into mathraw to make the dump by makefile.skel.
  3.    Sysinit.m is read automatically from Common/StartUp, before this file.
  4.    The parentheses avoid leaving junk in In, Out, InString, and MessageList.
  5.    (InString and MessageList added by bks 20 Feb 91.)
  6.  *)
  7.  
  8.     Off[ General::intinit];
  9.     System`Private`FatStuff;    
  10.     (IntMessages[ x_String] := ToExpression[ "Messages[" <> x <> "]"]);
  11.     (ClearRead[ symb_Symbol] :=
  12.                    If[ MemberQ[ Attributes[ symb], ReadProtected],
  13.                            ClearAttributes[ symb, ReadProtected]]);
  14.     (GetMessage[ part_] :=
  15.                Module[{Tag, msg},
  16.                        {Tag, msg} = List @@ part ;
  17.                        Tag = StringDrop[ ToString[ Tag], StringLength["Literal["]] ;
  18.                        Tag = StringDrop[ Tag, -1] ;
  19.                        msg = StringReplace[ msg, {"\"" -> "\\\"", "\n" -> "\\n"}] ;
  20.                        {Tag, msg}
  21.                ]);
  22.     (MessageDump[file1_String, file2_String] :=
  23.             Module[{symbols, internal, result, msg = {}, usg = {}},
  24.                        OpenWrite[ file1] ;
  25.                        OpenWrite[ file2] ;
  26.                        symbols = Map[ ToExpression, Names["System`*"]] ;
  27.                        Map[ ClearRead, symbols] ;
  28.                        internal = Map[ IntMessages, Names["System`*"]] ;
  29.                        result =  Map[ GetMessage, Flatten[ internal]] ;
  30.                        Map[ If[ StringPosition[ #[[1]], "usage"] === {},
  31.                                AppendTo[ msg, #],
  32.                                AppendTo[ usg, #]]&, result] ;
  33.                        Map[ WriteString[file1,
  34.                                #[[1]] <> " = \"",#[[2]],"\"\n"]&, msg] ;
  35.                        Map[ WriteString[file2,
  36.                                #[[1]] <> " = \"",#[[2]],"\"\n"]&, usg] ;
  37.                        Close[ file1]
  38.                        Close[ file2]
  39.             ]);
  40.     Off[ $$Media::obsym];
  41. )
  42.