quinta-feira, maio 19, 2011

Interpolador de STRINGS em JS

para evitar a contatenação de strings (a idéia de evitar é exatamente a possibilidade de erros).
segue uma extenção do Objeto String

String.prototype.supplant = function (o) {
    return this.replace(/{([^{}]*)}/g,
        function (a, b) {
            var r = o[b];
            return typeof r === 'string' || typeof r === 'number' ? r : a;
        }
    );
};

a forma de usar:
var nome = 'lalala';
var index += 1;
"{name}[{index}]".supplant({ name: nome, index: index})

Enjoy

quarta-feira, maio 18, 2011

REST JQUERY AJAX JSON

não seria ótimo ter os metodos de ajax do jquery padronizados para trabalhar em rest com json?
se vc tb acha.

sinta-se a vontade para o Ctrl+C Ctrl+V :P

function _ajax_request(url, data, callback, type, method) {
    if (jQuery.isFunction(data)) {
        callback = data;
        data = {};
    }
    return jQuery.ajax({
        type: method
        , url: url
        , data: data
        , success: callback
        , dataType: type
    });
}

jQuery.extend({
    put: function(url, data, callback, type) {
        return _ajax_request(url, data, callback, type, 'PUT');
    }
    , delete_: function(url, data, callback, type) {
    return _ajax_request(url, data, callback, type, 'DELETE');
    }
});

jQuery.extend({
    postJSON: function(url, data, callback) {
        return jQuery.post(url, data, callback, 'json');
    }
    , putJSON: function(url, data, callback) {
        return jQuery.put(url, data, callback, 'json');
    }
    , deleteJSON: function(url, data, callback) {
        return jQuery.delete_(url, data, callback, 'json');
    }
});

Enjoy

terça-feira, maio 17, 2011

Fila de execução javascript

A nececidade de fila de execução sequencial em javascript

codigo do Objeto que possue a fila

function Obj() {

    // fila de execução
    this.queue = {
        queueAttr: []
        , push: function( fn ) {
            this.queueAttr.push( fn );
            return this;
        }
        , pop: function() {
            return this.queueAttr.splice(0 ,1)[0];             
        }
        ,execute: function() {
            while (this.queueAttr.length > 0) {
                var fn = this.pop();
                this.dispatch(fn);
            }             
        }
        ,dispatch: function( fn ) {
            args = [params];
            fn = (typeof fn == "function") ? fn : window[fn];
            return fn.apply(this, args || []);
        }
    };
};

forma de utilizar

Obj.queue
    .push(function(params) {
        //Codigo a ser executado
    })
    .push(function(params) {
        //Codigo a ser executado
    })
    .push(function(params) {
        //Codigo a ser executado
    })
    .execute();

Enjoy