You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Behavior of joining paths starting with "/" is unnatural #12
I disagree that this is unnatural, it's actually consistent with many other languages and join implementations. It's exactly how I'd expect it to work.
Could you perhaps explain your use-case a bit more so we can try and find a different solution? Why would your right hand have a slash in it already?
If you're supporting multiple platforms, you cannot rely on the fact that / is the separator, it could be something else such as \. The whole point around this API is to join paths without hard-coding "/" as a string everywhere.
Thank you for explaining in detail.
I see you're pretty right that it's consistent and natural.
I had one counter example in mind.
let basePath = NSURL(fileURLWithPath: "/base/path")
let path = basePath.URLByAppendingPathComponent("/some/path")
// --> file:///base/path/some/path
Anyways, my use case is…
I have some generated swift code that I can't control, and has let path = "/some/path" in it.
And I need to concatinate it to a let basePath = Path("/base/path").
With the current implementation, I need to String(path.characters.dropFirst()) before concatination.
These paths are acutually part of a URL, so I don't need to worry about path separators.
Would you say this is not a use case for PathKit, or am I missing a better approach using PathKit?
Activity
kylef commentedon Mar 22, 2016
I disagree that this is unnatural, it's actually consistent with many other languages and join implementations. It's exactly how I'd expect it to work.
Could you perhaps explain your use-case a bit more so we can try and find a different solution? Why would your right hand have a slash in it already?
A cross-platform solution would look more like:
If you're supporting multiple platforms, you cannot rely on the fact that
/is the separator, it could be something else such as\. The whole point around this API is to join paths without hard-coding "/" as a string everywhere.Python
https://docs.python.org/3.5/library/os.path.html#os.path.join
Ruby
Can't find a statement in the documentation, but you can see the behaviour is the same:
Cocoa (NSURL)
Again, I can't find a part of the documentation, but here is the behaviour.
kenjitayama commentedon Mar 22, 2016
Thank you for explaining in detail.
I see you're pretty right that it's consistent and natural.
I had one counter example in mind.
Anyways, my use case is…
I have some generated swift code that I can't control, and has
let path = "/some/path"in it.And I need to concatinate it to a
let basePath = Path("/base/path").With the current implementation, I need to
String(path.characters.dropFirst())before concatination.These paths are acutually part of a URL, so I don't need to worry about path separators.
Would you say this is not a use case for PathKit, or am I missing a better approach using PathKit?
Thanks in advance for advice.
kenjitayama commentedon Mar 24, 2016
I found this behaviour in Ruby.
I think, at least there are some demands for this style of concatination.
rbukovansky commentedon Oct 11, 2016
Boy, I don't want to see debate about this when Apple or somebody brings Swift to Windows... (slash and backslash works both, drives' letters etc.)