Hi Sean,

On 28 Feb 2013, at 23:31, Sean P. DeNigris <[email protected]> wrote:

> Sven Van Caekenberghe-2 wrote
>> I am guessing you are lazy and want to type as little as possible
> 
> You know me too well ;)
> 
> 
> Sven Van Caekenberghe-2 wrote
>> 'http://endpoint.service.com:9090/v1' asZnUrl 
>>      withPathSegments: '/foo/bar/resource.txt' asZnUrl pathSegments.
> 
> I like this one the best for now, as I didn't want to break up the string,
> to make it easier to change.
> 
> 
> Sven Van Caekenberghe-2 wrote
>>      
>> 'http://endpoint.service.com:9090/v1' asZnUrl 
>>      withPathSegments: #(foo bar 'resource.txt').
> 
> How about a double dispatch under the covers of withPathSegments:, which
> does the current behavior for OrderedCollection; and for String, do
> something like "self findTokens: '/'." and pass that as the argument to
> withPathSegments:?

I didn't forget about you ;-)

So here is what I did in the latest version of Zinc-Resource-Meta 
(ConfigurationOfZincHTTPComponents project bleedingEdge load):

------
Change the implementation of ZnUrl>>#/ to do a double-dispatch on its argument 
using #addedToZnUrl:
Implemented #addedToZnUrl: on Collection, String and ZnUrl with the added 
feature that a String is split into path elements on $/ using #findTokens: - Do 
note that this is an internal path representation, not an encoded external 
representation.
Extended unit tests to cover the new functionality
------

Basically you can now do any of the following:

| baseUrl |

baseUrl := 'http://api.host.com' asZnUrl.

baseUrl / 'doc' / 'file.html'.
baseUrl / 'doc/file.html'.
baseUrl / #( 'doc' 'file.html' ).
baseUrl / 'doc/file.html' asZnUrl.

And they are all equivalent, except for the subtle difference noted in the 
commit message above.

What do you think ?

Regards,

Sven

--
Sven Van Caekenberghe
http://stfx.eu
Smalltalk is the Red Pill


Reply via email to