On Mon, Aug 14, 2017 at 4:11 PM, Alistair Grant <akgrant0710@gmail.com> wrote:
Hi Guille,

Thanks for your reply.


On Mon, Aug 14, 2017 at 01:44:41PM +0200, Guillermo Polito wrote:
>
>
> On Sun, Aug 13, 2017 at 5:54 PM, Alistair Grant <akgrant0710@gmail.com> wrote:
>
>�� �� ��Hi All,
>
>�� �� ��Is there any practical difference between (Path * '') and (Path
>�� �� ��workingDirectory)?
>
>
> Being strict, Path workingDirectory does not make any sense. A path is relative
> or absolute.

True, but Path is considered internal, so users shouldn't normally be
calling Path>>workingDirectory.

Ah, I was thinking with Pablo the other day that it could be a nice small and standalone library to manage paths. Then FileSystem can work on top. What do you think?

That's why with Pablo we extracted the Path classes in a separate package (FileSystem-Path). We also see it has few dependencies and this means that it could go into the bootstrap :).
��

I'm asking because the patch I'm preparing to improve canonicalisation
affects the creation of the path in some instances ('.' asFileReference
used to have a path with an empty segment, now it has Path
workingDirectory).

Just for the record :-)

Path workingDirectory isRelative�� " true"


> And it is relative to some other path.

Right, Pharo defines the image directory as the working directory (although
https://github.com/pharo-project/pharo/pull/92 will change that to the
more common shell interpretation of current working directory).


> I'd expect that Path workingDirectory gives you an absolute path to the current
> working directory,,,

But the path doesn't have a file system to resolve against.

Although even FileLocator workingDirectory gives a relative path.



Thanks again,
Alistair



>�� �� ��Their internal representation is different:
>
>�� �� ��- (Path * '') has one empty segment
>�� �� ��- Path workingDirectory has no segments
>
>�� �� ��But as far as I can tell they are otherwise the same:
>
>
>�� �� ��| fs frEmpty frWD |
>
>�� �� ��fs := FileSystem disk.
>�� �� ��frEmpty := FileReference fileSystem: fs path: (Path * '').
>�� �� ��frWD := FileReference fileSystem: fs path: Path workingDirectory.
>�� �� ��String streamContents: [ :stream |
>�� �� ��stream
>�� �� �� �� �� �� ��<< 'frEmpty: ';
>�� �� �� �� �� �� ��<< frEmpty printString; cr;
>�� �� �� �� �� �� ��<< 'frWD: ';
>�� �� �� �� �� �� ��<< frWD printString; cr;
>�� �� �� �� �� �� ��<< '= : ';
>�� �� �� �� �� �� ��<< (frEmpty absolutePath = frWD absolutePath) printString; cr.
>�� �� ��]
>
>�� �� ��'frEmpty: "File @ "
>�� �� ��frWD: "File @ ."
>�� �� ��= : true
>�� �� ��'
>
>
>�� �� ��Cheers,
>�� �� ��Alistair
>
>
>
>
>
> --
>�� �� �� �� �� �� �� �� �� Guille Polito
> [CNRS-filaire]
>
>�� �� �� �� �� �� �� �� �� Research Engineer
>
>�� �� �� �� �� �� �� �� �� French National Center for Scientific Research - http://
>�� �� �� �� �� �� �� �� �� www.cnrs.fr
>
>
>
>�� �� �� �� �� �� �� �� �� Web: http://guillep.github.io
>
>�� �� �� �� �� �� �� �� �� Phone: +33 06 52 70 66 13
>




--

������

Guille Polito


Research Engineer

French National Center for Scientific Research - http://www.cnrs.fr



Web: http://guillep.github.io

Phone: +33 06 52 70 66 13