[ create a new paste ] login | about

Project: programmingpraxis
Link: http://programmingpraxis.codepad.org/N44f2cDA    [ raw code | fork ]

programmingpraxis - Scheme, pasted on May 3:
; entab and detab

(define (detab n file-name)
  (with-input-from-file file-name
    (lambda ()
      (let loop ((c (read-char)) (col 1))
        (when (not (eof-object? c))
          (cond ((char=? c #\tab)
                  (display #\space)
                  (if (zero? (modulo col n))
                      (loop (read-char) (+ col 1))
                      (loop c (+ col 1))))
                ((char=? c #\newline)
                  (display c)
                  (loop (read-char) 1))
                (else (display c)
                      (loop (read-char) (+ col 1)))))))))

(define (entab n file-name)
  (with-input-from-file file-name
    (lambda ()
      (let loop ((c (read-char)) (col 1) (newcol 1))
        (cond ((eof-object? c)
                (when (< col newcol)
                  (display #\space)
                  (loop c (+ col 1) newcol)))
              ((char=? c #\space)
                (if (zero? (modulo newcol n))
                    (begin (display #\tab)
                           (loop (read-char) (+ newcol 1) (+ newcol 1)))
                    (loop (read-char) col (+ newcol 1))))
              ((< col newcol)
                (display #\space)
                (loop c (+ col 1) newcol))
              ((char=? c #\newline)
                (display c)
                (loop (read-char) 1 1))
              (else (display c)
                    (loop (read-char) (+ col 1) (+ newcol 1))))))))


Output:
No errors or program output.


Create a new paste based on this one


Comments: