home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / fish / 881-890 / ff885 / false / other / pack.f < prev    next >
Text File  |  1993-07-16  |  678b  |  52 lines

  1. { pack.f }
  2. {define packfunction}
  3. [ [ {a;=last or "#"}
  4.     a;l;=$
  5.     [
  6.       1b;+b:
  7.     ]
  8.     ?
  9.     ~
  10.     [
  11.       b;1>l;'#=|$
  12.       [{ next char was not the same, so just print it }
  13.     "#"l;,b;1+,0p:a;l:0b:
  14.       ]?
  15.       ~
  16.       [
  17.     l;,l;,0p:a;l:0b:
  18.       ]?
  19.     ]
  20.     ?
  21.   ]
  22.   ?
  23.   ~
  24.   [
  25.     a;l;=a;'#=|$
  26.     [{ same as previous! remember this one! }
  27.       1b;+b:1_p:
  28.     a;'#=[l;,'#l:0b:]?
  29.     ]
  30.     ?
  31.     ~
  32.     [{ print previous, remember this current one.}
  33.       l;,a;l:0b:0p:
  34.     ]
  35.     ?
  36.   ]
  37.   ?
  38. ]f:
  39. {remove first carriage return (because of redirection)}
  40. [^l:]
  41. [l;10=~]#
  42. {ok. lets pack. l=last char}
  43. 0p: {p=packboolean ; b=counter ; a=char_read}
  44. [^$a:1_=~]
  45. [p;$
  46.  f;!
  47. ]
  48. #
  49. p;f;!
  50.  
  51.  
  52.