summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/guile/skribilo/utils/justify.scm102
1 files changed, 55 insertions, 47 deletions
diff --git a/src/guile/skribilo/utils/justify.scm b/src/guile/skribilo/utils/justify.scm
index 8e069af..3ed38f7 100644
--- a/src/guile/skribilo/utils/justify.scm
+++ b/src/guile/skribilo/utils/justify.scm
@@ -1,40 +1,46 @@
-;=============== ~/prgm/project/scribe/scribetext/justify.scm ================
+;;; justify.scm -- Producing justified text.
+;;;
+;;; Copyright 2008 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright 2001 Manuel Serrano
+;;;
+;;;
+;;; This program is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 2 of the License, or
+;;; (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program; if not, write to the Free Software
+;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+;;; USA.
-;-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----
-;*=====================================================================*/
-;* serrano/prgm/project/scribe/scribetext/justify.scm */
-;* ------------------------------------------------------------- */
-;* Author : Manuel Serrano */
-;* Creation : Thu Nov 1 09:21:20 2001 */
-;* Last change : Sun Dec 9 14:59:11 2001 (serrano) */
-;* Copyright : 2001 Manuel Serrano */
-;* ------------------------------------------------------------- */
-;* The justifiers */
-;*=====================================================================*/
+(define-module (skribilo utils justify)
+ :export (make-justifier output-flush
-;*---------------------------------------------------------------------*/
-;* The module */
-;*---------------------------------------------------------------------*/
-(module __scribetext_justify
-
- (export (make-justifier::procedure ::int ::symbol)
- (output-flush ::int)
-
*text-column-width*
*text-justification*
*margin*
-
- (output ::bstring)
- (output-token ::bstring)
- (output-center ::bstring)
- (output-newline)
- (justification-width::int)
- (with-justification ::procedure ::procedure . margin)
- (with-justification/noflush ::procedure ::procedure . margin))
-
- (eval (export *text-column-width*)
- (export *text-justification*)))
+ output output-token output-center
+ output-newline justification-width
+ with-justification with-justification/noflush))
+
+;;; Author: Manuel Serrano, Ludovic Courtès
+;;;
+;;; Commentary:
+;;;
+;;; Provide a set of tools that makes it easy to produce justified text,
+;;; i.e., text that automatically wraps after, say, 80 columns, indented
+;;; text, etc.
+;;;
+;;; Code:
+
+
;*---------------------------------------------------------------------*/
;* *text-column-width* ... */
;*---------------------------------------------------------------------*/
@@ -48,13 +54,13 @@
(let ((len (string-length str)))
(let loop ((r 0))
(cond
- ((=fx r len)
+ ((= r len)
str)
((char=? (string-ref str r) #a008)
(string-set! str r #\Space)
- (loop (+fx r 1)))
+ (loop (+ r 1)))
(else
- (loop (+fx r 1)))))))
+ (loop (+ r 1)))))))
;*---------------------------------------------------------------------*/
;* string-replace ... */
@@ -63,13 +69,13 @@
(let* ((len (string-length str1))
(str2 (make-string len)))
(let loop ((r 0))
- (if (=fx r len)
+ (if (= r len)
str2
(let ((c (string-ref str1 r)))
(if (char=? c c1)
(string-set! str2 r c2)
(string-set! str2 r c))
- (loop (+fx r 1)))))))
+ (loop (+ r 1)))))))
;*---------------------------------------------------------------------*/
;* output-center ... */
@@ -124,7 +130,7 @@
;* output-flush ... */
;*---------------------------------------------------------------------*/
(define (output-flush margin)
- (for-each (if (>fx margin 0)
+ (for-each (if (> margin 0)
(let ((m (make-string margin #\space)))
(lambda (x) (print m (text-string x))))
(lambda (x) (print (text-string x))))
@@ -142,7 +148,7 @@
(define (with-justification justifier thunk . margin)
(output-flush *margin*)
(let ((old-margin *margin*))
- (if (pair? margin) (set! *margin* (+fx *margin* (car margin))))
+ (if (pair? margin) (set! *margin* (+ *margin* (car margin))))
(set! *justifiers* (cons justifier *justifiers*))
(thunk)
(output-flush *margin*)
@@ -154,7 +160,7 @@
;*---------------------------------------------------------------------*/
(define (with-justification/noflush justifier thunk . margin)
(let ((old-margin *margin*))
- (if (pair? margin) (set! *margin* (+fx *margin* (car margin))))
+ (if (pair? margin) (set! *margin* (+ *margin* (car margin))))
(set! *justifiers* (cons justifier *justifiers*))
(thunk)
(let ((res ((car *justifiers*) 'flush)))
@@ -176,7 +182,7 @@
;*---------------------------------------------------------------------*/
;* kotrts ... */
;*---------------------------------------------------------------------*/
-(define (kotrts str::bstring delims::pair)
+(define (kotrts str delims)
(let ((stop (string-length str)))
(let loop ((cur 0)
(mark #f)
@@ -201,7 +207,7 @@
;*---------------------------------------------------------------------*/
;* string-insert! ... */
;*---------------------------------------------------------------------*/
-(define (string-insert! str-to::bstring str-from::bstring offset::int)
+(define (string-insert! str-to str-from offset)
(let ((len1 (string-length str-to))
(len2 (string-length str-from)))
(if (> (+ len2 offset) len1)
@@ -218,7 +224,7 @@
;*---------------------------------------------------------------------*/
;* make-justified-line ... */
;*---------------------------------------------------------------------*/
-(define (make-justified-line tokens::pair-nil width::int)
+(define (make-justified-line tokens width)
(let ((result (make-string width #\space)))
(cond
((null? tokens)
@@ -259,7 +265,7 @@
;*---------------------------------------------------------------------*/
;* make-formated-line ... */
;*---------------------------------------------------------------------*/
-(define (make-formated-line tokens::pair-nil width::int cursor::int)
+(define (make-formated-line tokens width cursor)
(let ((result (make-string width #\space)))
(if (null? tokens)
result
@@ -278,7 +284,7 @@
;*---------------------------------------------------------------------*/
;* make-centered-line ... */
;*---------------------------------------------------------------------*/
-(define (make-centered-line tokens::pair-nil width::int)
+(define (make-centered-line tokens width)
(make-formated-line tokens
width
(quotient (- width
@@ -289,13 +295,13 @@
;*---------------------------------------------------------------------*/
;* make-flushleft-line ... */
;*---------------------------------------------------------------------*/
-(define (make-flushleft-line tokens::pair-nil width::int)
+(define (make-flushleft-line tokens width)
(make-formated-line tokens width 0))
;*---------------------------------------------------------------------*/
;* make-flushright-line ... */
;*---------------------------------------------------------------------*/
-(define (make-flushright-line tokens::pair-nil width::int)
+(define (make-flushright-line tokens width)
(make-formated-line tokens
width
(- width
@@ -305,7 +311,7 @@
;*---------------------------------------------------------------------*/
;* tokens-justify ... */
;*---------------------------------------------------------------------*/
-(define (tokens-justify justifier::procedure tokens::pair-nil width::int)
+(define (tokens-justify justifier tokens width)
(define (reverse-line lines)
(let ((nl (string #\Newline)))
(let loop ((ls lines)
@@ -423,3 +429,5 @@
(fprint (current-error-port) "s: " s)
(apply string-append s))
+
+;;; justify.scm ends here