! Copyright (C) 2004, 2005 Slava Pestov. ! See http://factor.sf.net/license.txt for BSD license. IN: io USING: hashtables kernel lists math namespaces sequences strings styles ; ! Words for accessing filesystem meta-data. : path+ ( path path -- path ) "/" swap append3 ; : exists? ( file -- ? ) stat >boolean ; : directory? ( file -- ? ) stat car ; : directory ( dir -- list ) (directory) [ { "." ".." } member? not ] subset string-sort ; : file-length ( file -- length ) stat third ; : resource-path ( path -- path ) "resource-path" get [ "." ] unless* swap path+ ; : ( path -- stream ) #! Open a file path relative to the Factor source code root. resource-path ; DEFER: directory. : file-style ( text path -- text style ) [ dup directory? [ >r "/" append r> dup [ directory. ] curry outline set ] when file set ] make-hash ; : file. ( dir name -- ) tuck path+ file-style format ; : directory. ( dir -- ) dup directory [ file. terpri ] each-with ;