Hi All,
Is there any practical difference between (Path * '') and (Path workingDirectory)? 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 |
On Sun, Aug 13, 2017 at 5:54 PM, Alistair Grant <[hidden email]> wrote: Hi All, Being strict, Path workingDirectory does not make any sense. A path is relative or absolute. And it is relative to some other path. I'd expect that Path workingDirectory gives you an absolute path to the current working directory,,,
|
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 <[hidden email]> 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. 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 > |
On Mon, Aug 14, 2017 at 4:11 PM, Alistair Grant <[hidden email]> wrote: Hi Guille, 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 :).
|
Free forum by Nabble | Edit this page |