Utilisateur:Phe/sprintf.js

La bibliothèque libre.

Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
/*
 * sprintf like, accepting only positionnal paramters or a dict + positionnal
 * parameters.
 *
 * Implement only %s or %(name)s format.
 *
 * dict and non dict format can be mixed
 *
 * var dict = { 'name1' : foo', 'name2': 'bar }
 * sprintf("%(name1) : %s %(name2)s", dict, "is a"); --> "foo is a bar"
 */
function sprintf(format) {
    var arg = arguments;
    var i = 1;
    if (arg.length > 1 && typeof(arguments[1]) == "object") {
        var dict = arguments[1];
        i = 2;
    }
 
    return format.replace(/%\([^\)]+\)s|%(%|s)/g, function (m) {
        if (m.length == 2)
            return m[1] == '%' ? '%' : arg[i++];
        return dict[m.slice(2,-2)];
    });
}