home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / turbopas / tlist11.lbr / EXPNDTAB.PQS / EXPNDTAB.PAS
Pascal/Delphi Source File  |  1985-11-08  |  1KB  |  43 lines

  1. PROCEDURE Expand_Tabs(VAR Line : Line_Type);
  2. {
  3. This procedure expands tabs to columns: 9, 17, 25, 33, ...
  4. }
  5.  
  6. CONST
  7.  Tab : CHAR = ^I;
  8.  
  9. VAR
  10.  Spaces : STRING[8];
  11.  Len : INTEGER;
  12.  
  13. BEGIN
  14.  I := 1;
  15.  WHILE I <= LENGTH(Line) DO
  16.   BEGIN
  17.    IF Line[I] = Tab THEN
  18.     BEGIN
  19.      Spaces :=
  20.       COPY('        ', 1, ((I - 1) DIV 8 + 1) * 8 - I + 1);
  21.      Len := LENGTH(Line);
  22.      IF I <> 1 THEN
  23.       IF I <> Len THEN
  24.        Line := CONCAT(COPY(Line, 1, I - 1), Spaces,
  25.         COPY(Line, I + 1, Len - I))
  26.       ELSE
  27.        Line := CONCAT(COPY(Line, 1, I - 1), Spaces)
  28.      ELSE
  29.       IF I <> Len THEN
  30.        Line := CONCAT(Spaces, COPY(Line, I + 1, Len - I))
  31.       ELSE
  32.        Line := Spaces;
  33.      I := ((I - 1) DIV 8 + 1) * 8;
  34.     END;
  35.    I := I + 1;
  36.    IF I > Max_line_length THEN
  37.     BEGIN
  38.      WRITELN('Error: Maximum line length exceeded while expanding tabs!');
  39.      HALT;
  40.     END;
  41.   END;
  42. END;
  43.