Rebol Programming/ls

USAGE:

edit
LS dir 

DESCRIPTION:

edit

Prints a multi-column sorted listing of a directory.

LS is a function value.

ARGUMENTS:

edit
  • dir -- Directory to list or nothing (Type: file url unset)

(SPECIAL ATTRIBUTES)

edit
  • catch

SOURCE CODE

edit
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]
]