} cleave
] "" make ;
+: remove-dot-segments ( path -- path' )
+ "/" split "." swap remove [
+ { ".." } split1 [
+ [ [ { } ] [ but-last ] if-empty ] dip append t
+ ] [ f ] if*
+ ] loop "/" join [ f ] when-empty ;
+
PRIVATE>
: url-append-path ( path1 path2 -- path )
{ [ over "/" tail? ] [ append ] }
{ [ "/" pick subseq-start not ] [ nip ] }
[ [ "/" split1-last drop "/" ] dip 3append ]
- } cond ;
+ } cond remove-dot-segments ;
<PRIVATE