[Pharo-users] pathSegments of workingDirectory?

Alistair Grant akgrant0710 at gmail.com
Thu Feb 14 02:18:34 EST 2019


Hi David & Sven,

On Thu, 14 Feb 2019 at 07:46, Sven Van Caekenberghe <sven at stfx.eu> wrote:
>
> David,
>
> > On 14 Feb 2019, at 03:56, David Richards <david.i.richards.iii at gmail.com> wrote:
> >
> > Hi community,
> >
> > Consider:
> >
> > | file |
> > file := FileLocator workingDirectory .
> > file fullName .
> > "==> '/Users/dr/Documents/Pharo/images/Study (Pharo 7.0 - 64bit stable)'"
> > file pathSegments .
> > "==> #()"
> >
> > How do we obtain path segments for the working directory?
> >
> > Is this an edge case where pathSegments does not return a semantically consistent value?
> >
> > Thanks
> > David
>
> A FileLocator is a bit special, it is usable, but not yet fully realised, more abstract.
>
> You can use resolve. Consider:
>
> FileLocator home pathString.
>  "'/Users/sven'"
>
> FileLocator home resolve pathSegments.
>  "#('Users' 'sven')"

What Sven wrote is, of course, correct.  But this is also an edge case:

FileLocator workingDirectory resolve pathSegments.
 "#()"

The reason in this case is because the directory is stored as a
RelativePath.  A RelativePath is resolved against the working
directory, which in this case is the same thing, so no movement is
required, and an empty path is used.

You can also try:

FileLocator workingDirectory asAbsolute pathSegments.
" #('home' 'alistair' 'pharo8' 'pharo64.04')"

Just for added confusion, FileLocator class>>workingDirectory is also
a special case.  Most of the methods in the origins protocol return an
instance of FileLocator.  But FileLocator class>>workingDirectory
returns an instance of FileReference.

HTH,
Alistair



More information about the Pharo-users mailing list