home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 400-499 / ff445.lzh / TurboText / Rexx / StripANSI.ttx < prev    next >
Text File  |  1991-01-24  |  2KB  |  142 lines

  1.  
  2. /** $VER: StripANSI.ttx Demo 1.0 (4.1.91)
  3.  **
  4.  ** Remove ANSI codes from the current document
  5.  **
  6.  ** Written by Martin Taillefer (loosely based on code by Joe Pearce)
  7.  **/
  8.  
  9.  
  10. OPTIONS RESULTS
  11. OPTIONS FAILAT 11
  12.  
  13.  
  14.   SetDisplayLock ON
  15.   SetBookmark 0
  16.  
  17.   GetPrefs FreeForm
  18.   form = RESULT
  19.   GetPrefs FindBackward
  20.   dir = RESULT
  21.   GetPrefs FindWholeWords
  22.   whole = RESULT
  23.  
  24.   SetPrefs FreeForm OFF
  25.   SetPrefs FindBackward OFF
  26.   SetPrefs FindWholeWords OFF
  27.  
  28.   /* first, convert "Esc[" to CSI */
  29.   MoveSOF
  30.   FindChange ALL FIND '1b'X||'[' CHANGE '9b'X
  31.  
  32.   MoveSOF
  33.   SetPrefs FindString '9b'X
  34.   DO FOREVER
  35.     Find
  36.     IF RC ~= 0 THEN DO
  37.       LEAVE
  38.     END
  39.  
  40.     i = 1
  41.     DO FOREVER
  42.       MoveRight
  43.       IF RC ~= 0 THEN DO
  44.         LEAVE
  45.       END
  46.  
  47.       GetChar
  48.       IF RESULT >= '@' & RESULT <= '~' THEN DO
  49.         i = i + 1
  50.         LEAVE
  51.       END
  52.  
  53.       IF RESULT < ' ' | RESULT > '?' THEN DO
  54.         LEAVE
  55.       END
  56.       i = i + 1
  57.     END
  58.     MoveLeft i-1
  59.     Delete i
  60.   END
  61.  
  62.   MoveSOF
  63.   SetPrefs FindString '1b'X
  64.   DO FOREVER
  65.     Find
  66.     IF RC ~= 0 THEN DO
  67.       LEAVE
  68.     END
  69.  
  70.     i = 1
  71.     DO FOREVER
  72.       MoveRight
  73.       IF RC ~= 0 THEN DO
  74.         LEAVE
  75.       END
  76.  
  77.       GetChar
  78.       IF RESULT >= '0' & RESULT <= '~' THEN DO
  79.         i = i + 1
  80.         LEAVE
  81.       END
  82.  
  83.       IF RESULT < ' ' | RESULT > '/' THEN DO
  84.         LEAVE
  85.       END
  86.       i = i + 1
  87.     END
  88.     MoveLeft i-1
  89.     Delete i
  90.   END
  91.  
  92.   CALL StripReserved('90'X)
  93.   CALL StripReserved('9d'X)
  94.   CALL StripReserved('9e'X)
  95.   CALL StripReserved('9f'X)
  96.  
  97.   SetPrefs FreeForm form
  98.   SetPrefs FindBackward dir
  99.   SetPrefs FindWholeWords whole
  100.  
  101.   MoveBookmark 0
  102.   SetDisplayLock OFF
  103.  
  104.   RETURN
  105.  
  106.  
  107. StripReserved: PROCEDURE
  108. PARSE ARG single
  109.  
  110.   MoveSOF
  111.   SetPrefs FindString single
  112.   DO FOREVER
  113.     Find
  114.     IF RC ~= 0 THEN DO
  115.       LEAVE
  116.     END
  117.  
  118.     i = 1
  119.     DO FOREVER
  120.       MoveRight
  121.       IF RC ~= 0 THEN DO
  122.         LEAVE
  123.       END
  124.  
  125.       GetChar
  126.       IF RESULT == '9c'X THEN DO
  127.         i = i + 1
  128.         LEAVE
  129.       END
  130.  
  131.       IF (RESULT >= ' ' & RESULT <= '~') | RESULT >= 'a0'X THEN DO
  132.         i = i + 1
  133.       END; ELSE DO
  134.         LEAVE
  135.       END
  136.     END
  137.     MoveLeft i-1
  138.     Delete i
  139.   END
  140.  
  141.   RETURN
  142.