anoia: make dirname handle tralning / like posix
This commit is contained in:
parent
e5cfd41013
commit
8440378a39
@ -9,6 +9,7 @@ check:
|
|||||||
ln -s . anoia
|
ln -s . anoia
|
||||||
fennel ./run-tests.fnl $(CHECK)
|
fennel ./run-tests.fnl $(CHECK)
|
||||||
fennel test.fnl
|
fennel test.fnl
|
||||||
|
mkdir -p $(outputdir)
|
||||||
fennel test-svc.fnl $(servicedir)
|
fennel test-svc.fnl $(servicedir)
|
||||||
find $(outputdir) -ls
|
find $(outputdir) -ls
|
||||||
test -f $(outputdir)/fish
|
test -f $(outputdir)/fish
|
||||||
|
@ -25,8 +25,27 @@
|
|||||||
(fn basename [path]
|
(fn basename [path]
|
||||||
(string.match path ".*/([^/]-)$"))
|
(string.match path ".*/([^/]-)$"))
|
||||||
|
|
||||||
|
|
||||||
(fn dirname [path]
|
(fn dirname [path]
|
||||||
(string.match path "(.*)/[^/]-$"))
|
(let [stripped (string.match path "(.-)/*$")]
|
||||||
|
(pick-values
|
||||||
|
1
|
||||||
|
(if (not path) "."
|
||||||
|
(= path "") "."
|
||||||
|
(not stripped) "."
|
||||||
|
(= stripped "") "/"
|
||||||
|
(string.match stripped ".+/.-") (stripped:gsub "(.*)(/.*)" "%1")
|
||||||
|
(string.match stripped "/") "/"
|
||||||
|
"."))))
|
||||||
|
|
||||||
|
(define-tests
|
||||||
|
;; these are examples from dirname(3)
|
||||||
|
(expect= (dirname "/usr/lib") "/usr")
|
||||||
|
(expect= (dirname "/usr/") "/")
|
||||||
|
(expect= (dirname "usr") ".")
|
||||||
|
(expect= (dirname "/") "/")
|
||||||
|
(expect= (dirname ".") ".")
|
||||||
|
(expect= (dirname "..") "."))
|
||||||
|
|
||||||
(fn append-path [dirname filename]
|
(fn append-path [dirname filename]
|
||||||
(let [base (or (string.match dirname "(.*)/$") dirname)
|
(let [base (or (string.match dirname "(.*)/$") dirname)
|
||||||
|
Loading…
Reference in New Issue
Block a user