forked from rebol/rebol
-
Notifications
You must be signed in to change notification settings - Fork 2
List dir
angerangel edited this page Mar 19, 2013
·
1 revision
LIST-DIR 'path /l /f /d /r /i indent
Print contents of a directory (ls).
LIST-DIR is a function value.
- path -- Accepts %file, :variables, and just words (as dirs) (file! word! path! string! unset!)
- /l -- Line of info format
- /f -- Files only
- /d -- Dirs only
- /r -- Recursive
-
/i
- indent
#SOURCE
list-dir: make function! [ [
"Print contents of a directory (ls)."
'path [file! word! path! string! unset!] {Accepts %file, :variables, and just words (as dirs)}
/l "Line of info format"
/f "Files only"
/d "Dirs only"
/r "Recursive"
/i indent
/local files save-dir info
][
save-dir: what-dir
switch type?/word :path [
unset! []
file! [change-dir path]
string! [change-dir to-rebol-file path]
word! path! [change-dir to-file path]
]
if r [l: true]
unless l [l: make string! 62]
unless indent [indent: ""]
files: attempt [read %./]
if not files [print ["Not found:" :path] change-dir save-dir exit]
foreach file files [
if any [
all [f dir? file]
all [d not dir? file]
] [continue]
either string? l [
append l file
append/dup l #" " 15 - remainder length? l 15
if greater? length? l 60 [print l clear l]
] [
info: get query file
change info second split-path info/1
printf [indent 16 -8 #" " 24 #" " 6] info
if all [r dir? file] [
list-dir/l/r/i :file join indent " "
]
]
]
if all [string? l not empty? l] [print l]
change-dir save-dir
exit
] ]