Skip to content

Instantly share code, notes, and snippets.

View jonschlinkert's full-sized avatar
🤔
Trying to stay in the right branch of the wave function.

Jon Schlinkert jonschlinkert

🤔
Trying to stay in the right branch of the wave function.
View GitHub Profile
@jonschlinkert
jonschlinkert / async-engine.js
Last active February 8, 2024 08:26
PoC of an async template engine using native template literals and async-await. Response to https://twitter.com/doowb/status/1072688034485805058
const compile = (input, helpers, thisArg) => {
return async data => {
let ctx = { ...thisArg, ...data };
let keys = [];
let vals = [];
if (helpers) {
for (let key of Object.keys(helpers)) {
if (ctx[key] === void 0) {
ctx[key] = (...args) => helpers[key].call(ctx, ...args);
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Ansi 0 Color</key>
<dict>
<key>Alpha Component</key>
<real>1</real>
<key>Blue Component</key>
<real>0.13333329558372498</real>
const countdown = (msgFn, fn, count = 3, interval = 500) => {
let timer = setInterval(() => {
process.stdout.write('\u001b[?25l');
process.stdout.write('\u001b[2K\r');
process.stdout.write(msgFn(count));
if (count-- === 0) {
process.stdout.write('\u001b[?25h');
process.stdout.write('\u001b[2K\r');
clearInterval(timer);
fn();
@jonschlinkert
jonschlinkert / benchmarks-starter.js
Last active February 8, 2024 08:26
Minimal code to create a benchmarks with terminal styling to show real-time progress while benchmarks are running.
const { Suite } = require('benchmark');
const argv = require('minimist')(process.argv.slice(2));
const cycle = (e, newline) => {
process.stdout.write('\u001b[G');
process.stdout.write(` ${e.target}` + (newline ? '\n' : ''));
};
function bench(name) {
const suite = new Suite()
@jonschlinkert
jonschlinkert / longest.js
Created June 13, 2018 14:49
Get the length of the longest item in an array of strings.
const longest = arr => arr.reduce((len, v) => Math.max(v.length, len), 0);
(async function() {
const handlebars = require('handlebars');
const engine = require('./examples/support/engine');
const Assemble = require('./');
const app = new Assemble();
app.engine('hbs', engine(handlebars));
const pages = app.create('pages');
const layouts = app.create('layouts', { kind: 'layout' });
const fs = require('fs');
const path = require('path');
const Collection = require('../lib/collection');
const collection = new Collection();
collection.use(loader());
const filter = file => file.extname === '.txt';
const contents = file => fs.readFileSync(file.path);
module.exports = [
'014a',
'0x706272',
'13steinj',
'2bdb2',
'_3442',
'__crackers__',
'_selfishPersonReborn',
'a_redditor',
'Aceeri',
@jonschlinkert
jonschlinkert / grant-npm-owner.sh
Created March 7, 2018 10:21
From a script in the babel-plugin-syntax-dynamic-import library
#!/bin/sh
set -e
read -p "Username: " username
for f in packages/*; do
package=`basename $f`
if [ -d "$f" ]; then
npm owner add $username $package
{
"name": "Jon Schlinkert",
"email": "[email protected]",
"github": "jonschlinkert",
"linkedin": "jonschlinkert",
"twitter": "jonschlinkert",
"npm": "jonschlinkert"
}