Skip to content

Instantly share code, notes, and snippets.

View rubeniskov's full-sized avatar
:octocat:
decrypting matrix

Rubén López Gómez rubeniskov

:octocat:
decrypting matrix
View GitHub Profile
(function(global, modules, factory){
global.module = function(){
return modules[name] || (modules[name]={define:factory()});
};
})(this, {}, function(){
return (function(prefixe, normalize, err){
return (function moduleBind(modules, context, prefix) {
return (function(get, set, identity){
return function module(name, requires, invoke) {
return arguments.length === 1 ? get(prefixe(prefix,name, true)) : (function(instance, context){
function merge(target, source){
if(source !== undefined && (source=isArrayLike(source)?source:[source]))
for(var i=0;i<Math.max(target.length, source.length);i++)
target.splice(i,1, source[i]||target[i]);
return target;
}
@rubeniskov
rubeniskov / promise_decorator.js
Last active November 28, 2015 22:12
promise_decorator.js
function decorator(context, callbacks){
return (function(context, callbacks, $finally) {
function execute(callbacks, context, args, value) {
return callbacks.length ?
execute(callbacks, context, args, callbacks.pop().apply(context, args, value)) || value:value;
};
return {
context: context,
invoke: function(fn, args, context){
/*
Author: Rubén López Gómez
Gist: https://gist.github.com/rubeniskov/0ddfa4f1b01176d418dd
*/
var sufix = function() {
return Array.prototype.slice.call(arguments).map(function(v, i, parts) {
return parts[i + 1] ?
v.replace(new RegExp(parts[i + 1] + '$', 'i'), '') :
[v.charAt(0).toUpperCase(), v.slice(1)].join('');
@rubeniskov
rubeniskov / simple_unix_permission_symbol_parser.js
Last active April 10, 2016 17:54
A simple unix permission symbol parser
// http://jsperf.com/symbolmask
var symbolMask = function(am, ar, aa, as){
var ir, ia, is, i, j, k,
s = /[\+\,\s]/,
m = 0, r = '',
l = 1, e = [];
for(i=0; i<am.length; i++)
if (s.test(am[i])) {
(l = am[i] !== '+') && (r = []);
@rubeniskov
rubeniskov / mongo_ObjectID_compress.js
Created April 28, 2016 08:05
base64 compression ObjectID
var base64 = (function(bin) {
for (var i = 0, l = bin.chars.length; i < l; i++)
bin.tabs[bin.chars.charAt(i)] = i;
return bin;
})({
chars: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+_',
tabs: {}
}),
encode = function(objectID) {
var oid = objectID.toUpperCase(),
@rubeniskov
rubeniskov / frame_sprite_generator.js
Created June 13, 2016 09:31
Frame Split Generator
var video = (new Array(100).join(',').split(',').map(function(v,i){return i})),
sprite = function(start, length, split) {
split = split != null ? split : 5;
start = start != null ? start : 0;
length = length != null ? start + length : undefined;
var r = [],
frames = video.slice(start, length);
for (var i = 0; i < frames.length; i++)
frames[i] % split === 0 && r.push(frames[i]);
return r;
@rubeniskov
rubeniskov / console_log_file_line_call.js
Last active October 12, 2016 13:05
Sometime when console trace is put in a file if we lost where is it, this util can be usefull to locate it
function getErrorObject() {
try {
throw Error('')
} catch (err) {
return err;
}
}
var test = console.log;
console.log = function() {
test.apply(this, [getErrorObject().stack.split("\n")[4]].concat(arguments));
@rubeniskov
rubeniskov / detect_property_descriptor.js
Last active July 18, 2016 09:06
Javascript function property descriptor detection
function detectPropertyDescriptor(descriptor){
var keys = Object.keys(descriptor).join(' ');
return (/(configureable|enumerable)/).test(keys) && (/(set|get)|(value)/).test(keys);
}
(function indexOf(buffer, pattern) {
for (var i = 0; i < buffer.length - pattern.length; i++) {
if (buffer.slice(i, i + pattern.length).map(function(v, i) {
return pattern[i] === v;
}).filter(Boolean).length === pattern.length)
return i;
}
return -1
})(temp1.data, [222, 2, 0, 76, 97]);