> Hi,
>
> I am playing a little bit with directory listing, and haven't found out
> a trivial way to get directory listing sorted by directories first, then
> followed by files listing. Also - maybe dir-list could have some
> refinements, allowing to return value in a block ...
>
> Anyone?
>
> -pekr-
>
>

Hi Pekr,

Here's a function that might make it easier.

then just use
dir-block: read-dir %rebol/
foreach item dir-block [print item]

or

dir-block: read-dir/blocks %rebol/

print "Directories"
foreach each item dir-block/1 [print item]
print "Files"
foreach each item dir-block/2 [print item]

Cheers

Allen K


REBOL [
      Title: "Sorted Read Directory"
      Author: "Allen Kamp"
      Date: 3-Oct-1999
      File: %read-dir.r
      Purpose: {Read a directory and returns as sorted block}
      Category: [File]
      Note: {There is problem with dir? on ftp url! types, so have limited
this to file! type only}
]

read-dir: func [
    {Return a block of Sorted Directories and Files}
    directory [file!] {Directory Path}
   /blocks {Return as [[Dirs] [Files]]}
   /local dirs files dir block
][
    dirs: copy []
    files: copy []
    dir: read directory

    foreach item dir [
        either (dir? directory/:item) [
            insert dirs item


            insert files item
        ]
    ]
    sort dirs
    sort files

    either blocks [
        block: copy []
        insert/only block dirs
        insert/only tail block files

       return block
    ][
        return head insert files dirs
    ]
]



Reply via email to