Camelize, CamelCase
lunedì 20 ottobre, 2008Come già visto nel post Varietà di coding e di coding gli approcci che uno sviluppatore può avere alla risoluzione di un problema sono diversi e molteplici a parità del linguaggio di programmazione usato. Ecco come alcuni dei più noti framework Javascript hanno risolto una semplice funzione di CamelCase:
Prototype.js
Prototype.js, nella versione 1.6.0.3, propone esplicitamente un metodo camelize() per effettuare il camelcase su una stringa. L'approccio dell'autore è abbastanza semplice e il codice risulta auto-esplicativo. In questo caso non è stato fatto nessun uso delle Regular Expression!
-
camelize: function() {
-
var parts = this.split('-'), len = parts.length;
-
if (len == 1) return parts[0];
-
-
var camelized = this.charAt(0) == '-'
-
? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
-
: parts[0];
-
-
for (var i = 1; i <len; i++)
-
camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
-
-
return camelized;
-
}
Date uno sguardo anche a questa interessante discussione.
mootools
La libreria mootools, nella versione 1.2, propone anch'essa un metodo camelCase(). In questo caso la funzione risulta notevolmente più compatta rispetto a quella proposta da prototype.js, proprio grazie all'uso delle Regular Expression.
-
camelCase: function(){
-
return this.replace(/-\D/g, function(match){
-
return match.charAt(1).toUpperCase();
-
});
-
}
jQuery
jQuery, nella versione 1.2.6, non propone un metodo esplicito. Tuttavia, sbirciando nel codice, ho trovato questo:
-
var camelCase = name.replace(/\-(\w)/g, function(all, letter) { return letter.toUpperCase(); });
Inoltre, come plugin, jQuery propone una String prototype extensions dove aggiunge, appunto, una funzione camelize():
-
/**
-
* Return a camelized String, removing all underscores and dashes
-
* and replacing the next character with it's uppercase representation.
-
*
-
* @example "font-weight".camelize()
-
* @result "fontWeight"
-
*
-
* @example "border_width_bottom".camelize()
-
* @result "borderWidthBottom"
-
*
-
* @example "border_width-bottom".camelize()
-
* @result "borderWidthBottom"
-
*
-
* @name camelize
-
* @type String
-
* @cat Javascript/String
-
*/
-
add("camelize", function() {
-
return this.replace( /[-_]([a-z])/ig, function(z,b){ return b.toUpperCase();} );
-
});
Questa, in particolare, prende in considerazione anche il carattere underscore (_), risultando quindi più completa.










19

[...] in "questo-e-un-post". La trasformazione in slug è simile a quella del camelize o camelcase, vista qui. Ecco una possibile implementazione in PHP: PLAIN TEXT [...]