Rebol Programming/ls

From Wikibooks, open books for an open world
Jump to navigation Jump to search

USAGE:[edit | edit source]

LS dir 

DESCRIPTION:[edit | edit source]

Prints a multi-column sorted listing of a directory.

LS is a function value.

ARGUMENTS:[edit | edit source]

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

(SPECIAL ATTRIBUTES)[edit | edit source]

  • catch

SOURCE CODE[edit | edit source]

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