Camelize, CamelCase

lunedì 20 ottobre, 2008

Come 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!

JavaScript:
  1. camelize: function() {
  2.     var parts = this.split('-'), len = parts.length;
  3.     if (len == 1) return parts[0];
  4.  
  5.     var camelized = this.charAt(0) == '-'
  6.       ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
  7.       : parts[0];
  8.  
  9.     for (var i = 1; i <len; i++)
  10.       camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
  11.  
  12.     return camelized;
  13.   }

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.

JavaScript:
  1. camelCase: function(){
  2.     return this.replace(/-\D/g, function(match){
  3.         return match.charAt(1).toUpperCase();
  4.     });
  5. }

jQuery

jQuery, nella versione 1.2.6, non propone un metodo esplicito. Tuttavia, sbirciando nel codice, ho trovato questo:

JavaScript:
  1. 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():

JavaScript:
  1. /**
  2.  * Return a camelized String, removing all underscores and dashes
  3.  * and replacing the next character with it's uppercase representation.
  4.  *
  5.  * @example "font-weight".camelize()
  6.  * @result "fontWeight"
  7.  *
  8.  * @example "border_width_bottom".camelize()
  9.  * @result "borderWidthBottom"
  10.  *
  11.  * @example "border_width-bottom".camelize()
  12.  * @result "borderWidthBottom"
  13.  *
  14.  * @name camelize
  15.  * @type String
  16.  * @cat Javascript/String
  17.  */
  18. add("camelize", function() {
  19.     return this.replace( /[-_]([a-z])/ig, function(z,b){ return b.toUpperCase();} );
  20. });

Questa, in particolare, prende in considerazione anche il carattere underscore (_), risultando quindi più completa.

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

Un commento a: “Camelize, CamelCase”

  1. 28 mag, 2009 Undolog.com» Very short snippet: PHP slug:

    [...] 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 [...]

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre>         // blocco generico
[code][/code]       // blocco generico
[as][/as]           // Actionscript
[css][/css]         // CSS Style Sheet
[html][/html]       // HTML
[js][/js]           // Javascript
[objc][/objc]       // Objective-C
[php][/php]         // PHP
[sql][/sql]         // SQL