io.pathnames: adding file-directory.

db4
John Benediktsson 2012-10-22 18:09:58 -07:00
parent 24778bf705
commit 65678aeeb2
2 changed files with 24 additions and 4 deletions

View File

@ -33,13 +33,21 @@ HELP: file-extension
HELP: file-stem HELP: file-stem
{ $values { "path" "a pathname string" } { "stem" string } } { $values { "path" "a pathname string" } { "stem" string } }
{ $description "Outputs the " { $link file-name } " of " { $snippet "filename" } " with the file extension removed, if any." } { $description "Outputs the " { $link file-name } " of " { $snippet "path" } " with the file extension removed, if any." }
{ $examples { $examples
{ $example "USING: io.pathnames prettyprint ;" "\"/usr/bin/gcc\" file-stem ." "\"gcc\"" } { $example "USING: io.pathnames prettyprint ;" "\"/usr/bin/gcc\" file-stem ." "\"gcc\"" }
{ $example "USING: io.pathnames prettyprint ;" "\"/home/csi/gui.vbs\" file-stem ." "\"gui\"" } { $example "USING: io.pathnames prettyprint ;" "\"/home/csi/gui.vbs\" file-stem ." "\"gui\"" }
} ; } ;
{ file-name file-stem file-extension } related-words HELP: file-directory
{ $values { "path" "a pathname string" } { "directory" string } }
{ $description "Outputs the directory of " { $snippet "path" } " with the " { $link file-name } " removed, if any." }
{ $examples
{ $example "USING: io.pathnames prettyprint ;" "\"/usr/bin/gcc\" file-directory ." "\"/usr/bin\"" }
{ $example "USING: io.pathnames prettyprint ;" "\"/home/csi/gui.vbs\" file-directory ." "\"/home/csi\"" }
} ;
{ file-name file-stem file-extension file-directory } related-words
HELP: path-components HELP: path-components
{ $values { "path" "a pathnames string" } { "seq" sequence } } { $values { "path" "a pathnames string" } { "seq" sequence } }

View File

@ -76,6 +76,13 @@ ERROR: no-parent-directory path ;
[ f ] [ f ]
} cond ; } cond ;
: special-path ( path -- prefix )
{
{ [ dup "resource:" head? ] [ drop "resource:" ] }
{ [ dup "vocab:" head? ] [ drop "vocab:" ] }
[ drop "" ]
} cond ;
PRIVATE> PRIVATE>
: absolute-path? ( path -- ? ) : absolute-path? ( path -- ? )
@ -125,6 +132,11 @@ PRIVATE>
: file-extension ( path -- extension ) : file-extension ( path -- extension )
file-name "." split1-last nip ; file-name "." split1-last nip ;
: file-directory ( path -- directory )
[ special-path ] [ special-path? drop ] bi
dup last-path-separator [ head append ] [ 2drop ] if
[ path-separator ] when-empty ;
: path-components ( path -- seq ) : path-components ( path -- seq )
normalize-path path-separator split harvest ; normalize-path path-separator split harvest ;