Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tricky to construct a path with trailing slash #106

Closed
djcsdy opened this issue Aug 13, 2013 · 5 comments
Closed

Tricky to construct a path with trailing slash #106

djcsdy opened this issue Aug 13, 2013 · 5 comments
Labels

Comments

@djcsdy
Copy link
Contributor

djcsdy commented Aug 13, 2013

Given a URI like this:

URI("http://www.example.org/foo/bar/bat");

it’s difficult to programmatically append a trailing slash.

I thought this might work, but it doesn’t:

URI("http://www.example.org/foo/bar/bat")
    .segment("")
    .toString();
// -> "http://www.example.org/foo/bar/bat" :(

This is annoying when you’re constructing a path using successive calls to .segment() or .segmentCoded():

function apiUri(category, name) {
    var baseUri = URI("http://www.example.org/api/")
    return baseUri.segmentCoded(category)
            .segmentCoded(name)
            .segment("");
}

apiUri("furniture", "hatstand").toString();
// -> "http://www.example.org/api/furniture/hatstand"
// but we wanted "http://www.example.org/api/furniture/hatstand/"
// with trailing slash :(

I’m not sure of the best way to solve this problem, but it seems like segment("") would make sense as a way to add a trailing slash to an existing URI.

After all, it would be consistent with the behaviour of the .segment() getter:

URI("http://www.example.org/foo/bar/bat/").segment();
// -> ["foo", "bar", "bat", ""]
@rodneyrehm
Copy link
Member

Yeah, I'm not sure I'm happy with segment() returning an empty-string element in that array. But for consistency, .segment("") should add an empty element, if the last element isn't empty - agreed. Are you already looking into this, or should I have a go at it?

@djcsdy
Copy link
Contributor Author

djcsdy commented Aug 13, 2013

No, I won’t have time to do anything about this for a few days at least.

For the time being I’m working around the problem by doing this for the last segment:

.segment("foo/");

which is pretty horrible :)

@rodneyrehm
Copy link
Member

… my eyes!

@rodneyrehm
Copy link
Member

if this fixes your problem, I'd release a new version tonight/tomorrow…

@djcsdy
Copy link
Contributor Author

djcsdy commented Aug 13, 2013

Yep, that fixes it. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants