wrap.icn: Procedures to wrap output lines

link wrap
December 5, 1989; Robert J. Alexander
This file is in the public domain.

wrap(s,i) -- Facilitates accumulation of small strings into longer
     output strings, outputting when the accumulated string would
     exceed a specified length (e.g. outputting items in multiple
     columns).

     s -- string to accumulate
     i -- width of desired output string

Wrap fails if the string s did not necessitate output of the buffered
output string; otherwise the output string is returned (which never
includes s).

s defaults to the empty string (""), causing nothing to be
accumulated; i defaults to 0, forcing output of any buffered string.
Note that calling wrap() with no arguments produces the buffer (if it
is not empty) and clears it.

Wrap does no output to files.


Here's how wrap is normally used:

     wrap()                  # Initialize (not really necessary unless
                             # a previous use might have left stuff in
                             # the buffer).

     every i := 1 to 100 do  # Loop to process strings to output --
       write(wrap(x[i],80))  # only writes when 80-char line filled.

     write(wrap())           # Output what's in buffer -- only outputs
                             # if something to write.


wraps(s,i) -- Facilitates managing output of numerous small strings
     so that they do not exceed a reasonable line length (e.g.
     outputting items in multiple columns).

     s -- string to accumulate
     i -- maximum width of desired output string

If the string "s" did not necessitate a line-wrap, the string "s" is
returned.  If a line-wrap is needed, "s", preceded by a new-line
character ("\n"), is returned.

"s" defaults to the empty string (""), causing nothing to be
accumulated; i defaults to 0, forcing a new line if anything had been
output on the current line.  Thus calling wraps() with no arguments
reinitializes it.

Wraps does no output to files.


Here's how wraps is normally used:

     wraps()                 # Initialize (not really necessary unless
                             # a previous use might have left it in an
                             # unknown condition).

     every i := 1 to 100 do  # Loop to process strings to output --
       writes(wraps(x[i],80))# only wraps when 80-char line filled.

     writes(wraps())         # Only outputs "\n" if something written
                             # on last line.

Source code | Program Library Page | Icon Home Page