Camelize, CamelCase

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!

1
2
3
4
5
6
7
8
9
10
11
12
13
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.

1
2
3
4
5
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:

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():

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * 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.

Un commento a: “ ”

  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
                   [cc_actionscript][/cc_actionscript] // Actionscript
                   [cc_actionscript3][/cc_actionscript3] // Actionscript 3
                   [cc_css][/cc_css] // CSS Style Sheet
                   [cc_html][/cc_html] // HTML
                   [cc_js][/cc_js] // Javascript
                   [cc_objc][/cc_objc] // Objective-C
                   [cc_php][/cc_objc] // PHP
                   [cc_sql][/cc_sql] // SQL