I'm replying to the end of the thread, but it's meant to be a reply to all. Stephane, Mike: great research! It appears as though we've hit a gray area in the RFC between desired implied behavior and preferred explicit abilities. On Thu, Oct 7, 2010 at 10:04 AM, damien krotkine <dkrotkine@gmail.com>wrote:
On 6 October 2010 19:18, Stephane <stephane@shimaore.net> wrote:
Without spending a lot more time researching, it would seem like the
correct approach is: 1) case sensitive by default 2) case insensitive by config
Agreed.
I agree we should be case sensitive by default and by explicit request we could normalize stuff.
I was going to suggest that the "params_lc" option (mentioned earlier) could be a boolean or a CODE ref so that people can do fancy transforms (including locale-dependent ones) if they'd like.
In this case, "params_lc" would be a bad name. What about "params_normalization" or something similar, that can accept either 'uppercase', 'lowercase', or a code reference?
Naming methodologies are a pet peeve of mine. I don't like long names (when they aren't necessary) and I want it to be easy to find. Unfortunately "params_lc" isn't very clear, and "params_normalization" (via Dancer::Plugin::ParameterNormalization) seems like too much. I suggest first having the code to implement it, then deciding on a name. If the code is succinct enough, there's a chance to get it in core and not as a plugin. Generally, I would suggest integrating it if it's implemented cleanly.
Also, some people may want to normalize the params only in some part of the application. Do we want to handle that?
I don't think we should. I suggest being as straight as possible. Even though we're flexible (and that's awesome), we still want a coherent and (most importantly) a consistent behavior. If it's lowercased, it's lowercased. If it's not normalized, it's not. S.