Skip to content

Instantly share code, notes, and snippets.

View vstarck's full-sized avatar

Valentin Starck vstarck

  • Argentina
View GitHub Profile
function f() {
var cache = [].join.call(arguments, '');
return !cache ? '' : function sub() {
cache += [].join.call(arguments, '');
return !arguments.length ? cache : sub;
}
};
f('This ')('i')('s a sentence')() + f('123')() == 'This is a sentence123'; // true
@vstarck
vstarck / utils.eventize.js
Created September 13, 2011 23:00
Inyección de logica de eventos en objetos
/**
* Eventiza el objeto, agregandole los
* metodos
* on
* emit
* removeListener
*
* @param {Object}
* @return {Object}
*/
@vstarck
vstarck / utils.xetterize.js
Created September 14, 2011 00:46
Inyección de getters/setters en objetos
/**
* Xetteriza el objeto
*
* @param {Object} obj
* @param {Array} props
* @return {Object}
*/
var xetterize = (function() {
/**
* Formatea el string para que sea
@vstarck
vstarck / infinite_timed_loop.js
Created October 13, 2011 13:43
Infinite async loop
var infiniteTimedLoop = (function() {
var
task,
interval = 100,
status = false,
i = 0;
function start() {
if(!status) {
return;
@vstarck
vstarck / caesar.cipher.js
Created November 22, 2011 12:42
Caesar Cipher packed
// 149 chars :<
/*
function c(o) {
function t(o, s) {
return s.replace(/./g, function(c) {
return String.fromCharCode(c.charCodeAt(0) + o)
})
}
return {
e: t.bind(c, o),
@vstarck
vstarck / dict.js
Created December 9, 2011 12:37
Diccionario
({
0: console.info,
1: console.log,
2: console.warn,
3: console.error
}[severity] || console.error)(message);
@vstarck
vstarck / timer.js
Created December 22, 2011 20:39
Timer.js
function Timer(interval) {
this.handlers = {};
this.started = false;
this.interval = interval;
};
Timer.prototype.tick = function () {
if (!this.started) {
return;
}
@vstarck
vstarck / experimentos.js
Created March 30, 2012 15:55
experimentos varios
/*
var list1 = list(1, 2, 3);
var list2 = list(4, 5, 6);
var list3 = list1('+')(list2);
list3('add')(7);
list3('debug')(); // "list (7) [1,2,3,4,5,6,7]"
*/
var x = function(proto) {
@vstarck
vstarck / x.js
Created April 11, 2012 20:29
x.js
// create a number type
hug('type')('number');
// set the constructor
hug('type')('number')('#set')('init', function($self, num) {
$self('#set')('#value', isNaN(Number(num)) ? 0 : Number(num));
});
// methods...
hug('type')('number')('#set')('+', function($self, $rest) {
@vstarck
vstarck / splat.js
Created May 17, 2012 02:12
splat.js
// see http://blog.aijoona.com/2012/05/16/splat-operator-en-javascript/
function splat(fn) {
var _ = function(target) {
if(typeof target == 'undefined') {
return _.byIndex(-1);
}
if(typeof target == 'number') {
return _.byIndex(target);
}