Skip to content

Instantly share code, notes, and snippets.

View szanata's full-sized avatar
🏠
Working from home

Stéfano Zanata szanata

🏠
Working from home
View GitHub Profile
@szanata
szanata / camelize.js
Created September 12, 2016 22:45
Camelize function for js
function camelize(val) {
return val.replace (/(?:^|[-_]|\s)(\w)/g, function (_, c, i) {
return i === 0 ? c.toLowerCase() : c.toUpperCase ();
})
}
camelize('I like to develop') === 'iLikeToDevelop'; // separate words
camelize('i_like_to_develop') === 'iLikeToDevelop'; // underscore case
camelize('ILikeToDevelop') === 'iLikeToDevelop'; // pascal case
camelize('i_like ToDevelop') === 'iLikeToDevelop'; // mixed
@szanata
szanata / cookie.js
Last active April 3, 2017 19:06
JS Cookie manager for front-end. Without jquery, angular, etc
@szanata
szanata / flat.js
Last active March 9, 2018 01:55
JS Flatten functions
// Ultra slim flat func
const flat = ( a=[] ) => a.reduce( ( a, v ) => a.concat( v.map ? flat(v) : v ), [] );
@szanata
szanata / unflat.js
Created September 13, 2017 19:15
Unflat js object
function isObject(item) {
return (item && typeof item === 'object' && !Array.isArray(item));
}
function mergeDeep(target, ...sources) {
if (!sources.length) return target;
const source = sources.shift();
if (isObject(target) && isObject(source)) {
for (const key in source) {
@szanata
szanata / get_json_p.js
Created September 26, 2017 18:39
Get jsonp
function serialize(obj, prefix) {
var props = [];
for (var p in obj){
if (obj.hasOwnProperty(p)) {
if (Object.prototype.toString.call(obj[p]) === '[object Object]'){
props.push(serialize(obj[p], (prefix ? prefix : '') + p + '.'));
}else{
props.push((prefix ? prefix : '') + encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));
}
}
@szanata
szanata / test.js
Created March 9, 2018 01:54
JS: Which is faster?
p = new Promise((r) => {r()});
setImmediate(console.log, 'I1')
process.nextTick(() =>console.log('T1'));
p.then(() => console.log('P1'));
process.nextTick(() =>console.log('T2'));
// Output:
// T1
// T2
// P1
@szanata
szanata / atomik_pipeline.js
Created August 9, 2018 19:04
Atomik Pipeline JS
const setSym = Symbol( 'operations' );
module.exports = class AtomikPipeline {
constructor( operationsSet ) {
this[setSym] = operationsSet;
}
async run( _param ) {
const rollback = [];
@szanata
szanata / opts.js
Created August 19, 2018 21:13
Syntax options
// Option one
// All setters
XYZ.title = 'My cool test';
XYZ.before = () => {
};
XYZ.do = () => {
@szanata
szanata / every.js
Last active August 29, 2018 10:56
Every (loop tool for node js)
module.exports = interval => {
let count = 0;
return {
do( fn ) {
return {
async times( amount ) {
const jobs = [];
await new Promise( ( resolve, reject ) => {
const loop = setInterval( async () => {
count++;
@szanata
szanata / deep.js
Created September 17, 2018 11:16
Deep fetch properties on js objects, including array paths
function deepFetch( object, path ) {
return path.split( '.' ).reduce( ( value, part ) => {
if ( Array.isArray( value ) ) {
return value.reduce( (arr, v) => arr.concat( deepFetch( v, part ) ), [] );
} else if ( part === '*' ) {
return Object.keys( value ).map( p => value[p] );
}
return value[part];
}, object );
}