Rebol Programming/ls

= USAGE: = LS dir

= DESCRIPTION: = Prints a multi-column sorted listing of a directory.

LS is a function value. = ARGUMENTS: =
 * dir -- Directory to list or nothing (Type: file url unset)

= (SPECIAL ATTRIBUTES) =
 * catch

= SOURCE CODE = ls: func [ {Prints a multi-column sorted listing of a directory.} [catch] dir [file! url! unset!] "Directory to list or nothing" /local file max s ][ dir: throw-on-error [ either value? 'dir [ read dirize dir ] [           read %. ]   ]     dir: sort dir max: 0 foreach file dir [ if (length? file) > max [max: length? file] ]    max: max + 2 s: make string! 0    foreach file dir [ append s file while [((length? s) // max) <> 0] [append s " "] if (length? s) > 60 [ print s            clear s        ] ]    if length? s [print s] ]