io.directories.hierarchy: faster directory-tree-files.
parent
b519b52fa3
commit
c507293d41
|
@ -2,19 +2,22 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors arrays kernel sequences combinators fry
|
USING: accessors arrays kernel sequences combinators fry
|
||||||
io.directories io.pathnames io.files.info io.files.types
|
io.directories io.pathnames io.files.info io.files.types
|
||||||
io.files.links io.backend ;
|
io.files.links io.backend make ;
|
||||||
IN: io.directories.hierarchy
|
IN: io.directories.hierarchy
|
||||||
|
|
||||||
|
<PRIVATE
|
||||||
|
|
||||||
|
: directory-tree-files% ( path prefix -- )
|
||||||
|
[ dup directory-entries ] dip '[
|
||||||
|
[ name>> [ append-path ] [ _ prepend-path ] bi ]
|
||||||
|
[ type>> +directory+ = ] bi over ,
|
||||||
|
[ directory-tree-files% ] [ 2drop ] if
|
||||||
|
] with each ;
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
: directory-tree-files ( path -- seq )
|
: directory-tree-files ( path -- seq )
|
||||||
dup directory-entries
|
[ "" directory-tree-files% ] { } make ;
|
||||||
[
|
|
||||||
dup type>> +directory+ =
|
|
||||||
[ name>>
|
|
||||||
[ append-path directory-tree-files ]
|
|
||||||
[ [ prepend-path ] curry map ]
|
|
||||||
[ prefix ] tri
|
|
||||||
] [ nip name>> 1array ] if
|
|
||||||
] with map concat ;
|
|
||||||
|
|
||||||
: with-directory-tree-files ( path quot -- )
|
: with-directory-tree-files ( path quot -- )
|
||||||
'[ "" directory-tree-files @ ] with-directory ; inline
|
'[ "" directory-tree-files @ ] with-directory ; inline
|
||||||
|
@ -26,14 +29,14 @@ IN: io.directories.hierarchy
|
||||||
bi
|
bi
|
||||||
] [ delete-file ] if ;
|
] [ delete-file ] if ;
|
||||||
|
|
||||||
DEFER: copy-tree-into
|
DEFER: copy-trees-into
|
||||||
|
|
||||||
: copy-tree ( from to -- )
|
: copy-tree ( from to -- )
|
||||||
normalize-path
|
normalize-path
|
||||||
over link-info type>>
|
over link-info type>>
|
||||||
{
|
{
|
||||||
{ +symbolic-link+ [ copy-link ] }
|
{ +symbolic-link+ [ copy-link ] }
|
||||||
{ +directory+ [ '[ [ _ copy-tree-into ] each ] with-directory-files ] }
|
{ +directory+ [ '[ _ copy-trees-into ] with-directory-files ] }
|
||||||
[ drop copy-file ]
|
[ drop copy-file ]
|
||||||
} case ;
|
} case ;
|
||||||
|
|
||||||
|
@ -41,4 +44,4 @@ DEFER: copy-tree-into
|
||||||
to-directory copy-tree ;
|
to-directory copy-tree ;
|
||||||
|
|
||||||
: copy-trees-into ( files to -- )
|
: copy-trees-into ( files to -- )
|
||||||
'[ _ copy-tree-into ] each ;
|
to-directory '[ _ copy-tree ] each ;
|
||||||
|
|
Loading…
Reference in New Issue