Skip to content

Instantly share code, notes, and snippets.

@ilearnio
ilearnio / index.js
Last active December 13, 2015 17:17
fixJSON function. Removes comments and trailing commas from JSON
/**
* Removes comments and trailing commas from JSON
*/
function fixJSON(str) {
return str
// remove comments
.replace(/\/(?:\*{2,}\s[\s\S]+?|\*[^\*]+?)\*\/|([\s;])+\/\/.*$/gm, '')
// remove trailing commas
.replace(/,+\s*(\}|\])/g, '$1');
}
@ilearnio
ilearnio / list-module-children.js
Last active March 18, 2016 13:53
List children imported modules (paths) of a module
function listModuleChildren (parent_path) {
const parent_mod = require.cache[parent_path]
let children = []
;(function run (mod) {
if (mod.children.length) {
for (let i = 0; i < mod.children.length; i++) {
const id = mod.children[i].id
if (!children.includes(id)) {
{
"bootstrapped": true,
"in_process_packages":
[
],
"installed_packages":
[
"AutoBackups",
"AutoFileName",
"Babel",
@ilearnio
ilearnio / binary-search.c
Last active May 13, 2016 20:06
Binary search realization in C (simplest and probably fastest)
#include <math.h>
#include <stdbool.h>
bool binarySearch(int value, int values[], int n)
{
// Memorize the offset of a half rather then create an array on each iteration
int offset = 0;
int divider = n;
while (divider > 0) {
divider = round((divider + 1) / 2); // round up
@ilearnio
ilearnio / sortObjectByKeys.js
Last active June 14, 2016 18:42
Sort object by keys (JavaScript)
function sortObjectByKeys(obj, recursive = false) {
const keys = Object.keys(obj).sort();
let sorted_obj = {};
keys.forEach(key => {
sorted_obj[key] = obj[key];
if (recursive && isObject(sorted_obj[key])) {
sorted_obj[key] = sortObjectByKeys(sorted_obj[key]);
}
@ilearnio
ilearnio / yieldable.js
Created June 14, 2016 18:44
Converst function into yieldable (JavaScript)
/**
* Converst function into yieldable
* @param {Function}
* @return {Function} yieldable callback
*/
function yieldable (func) {
return function () {
let args = [].slice.call(arguments);
let ctx = this;
return function (done) {
var mc = 12 // maximum columns
var m = 2 // margin in %
var scw = (100 - (m * (mc - 1))) / mc
var str = `
.row,
.column {
box-sizing: border-box;
}
@ilearnio
ilearnio / schema-validation.js
Last active July 16, 2018 14:53
Simple schema validation
/**
* Simple object validation
*/
const typeOf = require('just-typeof')
const validateEmail = require('./utils/helpers/strings/validateEmail')
const RULES = {
/**
* Type of the value
* @param {mixed} value
const typeOf = require('just-typeof')
/**
* Update object values recursively
* @param {Object} obj
* @param {Function} handler
* @returns {Object} - new object
*/
const updateObjectValuesRecursively = (obj, handler) => {
const newObj = {}
@ilearnio
ilearnio / js-mocha.code-snippets
Created June 8, 2019 10:49
VSCode Mocha Snippets
{
// Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
// Placeholders with the same ids are connected.
// Example:
"context": {
"scope": "javascript,typescript",