Skip to content

Instantly share code, notes, and snippets.

Avatar

Juriy Zaytsev kangax

View GitHub Profile
View components.person\.js
import Component from '@glimmer/component';
const defaultProps = {
firstName: 'Kenneth',
lastName: 'Larsen',
};
export default class PersonComponent extends Component {
args = { defaultProps, ...this.args }
@kangax
kangax / quicksort.hs
Last active Apr 23, 2020
Haskell-inspired quick sort in ES6
View quicksort.hs
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
let smallerSorted = quicksort (filter (<=x) xs)
biggerSorted = quicksort (filter (>x) xs)
in smallerSorted ++ [x] ++ biggerSorted
View gist:d645803cfcb114de1ef3
console.highlight = function(text, sample) {
var escapedSample = sample.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
var reSample = new RegExp(escapedSample, 'g');
var args = [''];
var highlightedText = text.replace(reSample, function(match) {
args.push('background-color: #ffc', 'background-color: none');
return '%c' + match + '%c';
});
args[0] = highlightedText;
console.log.apply(console, args);
View redux_types.js
import type { GlobalState } from 'redux/modules';
export type ExtractReturn<Fn> = $Call<<T>((...Iterable<any>) => T) => T, Fn>;
// ...
export type BaseAction = $ReadOnly<{ type: string, error?: boolean }>;
// ...
View flow_ts_tests.js
/*
A collection of tests where Flow and TypeScript might have different behavior
Some tests are borrowed from https://github.com/vkurchatkin/typescript-vs-flow
Some tests now have the same behavior as the new versions of Flow/TS have fixed the bugs and improved type safety
*/
/* 1. Accessing unknown properties on objects */
View String.prototype.between.js
/**
* Example:
* 'hello {{username}}'.between('{{','}}') === 'username'
*/
String.prototype.between_regexp = function between(begin, end) {
var regexp = new RegExp(begin + '(.+)' + end);
return this.match(regexp)[1];
}
@kangax
kangax / deps_age.js
Last active Feb 27, 2018
Find average age of npm dependencies
View deps_age.js
const fs = require('fs');
const { exec } = require('child_process');
const moment = require('moment');
const _ = require('lodash');
const chalk = require('chalk');
fs.readFile('package.json', (err, data) => {
const { dependencies } = JSON.parse(data.toString());
let totalDays = 0;
View new_tax_bill.js
// https://www.reuters.com/article/us-usa-tax-provisions-factbox/whats-in-the-final-republican-tax-bill-idUSKBN1ED27K
// 10 percent up to $9,525, versus 10 percent up to $9,325 under existing law;
// 12 percent from $9,526 to $38,700, versus 15 percent on $9,326 to $37,950;
// 22 percent on $38,701 to $82,500, versus 25 percent on $37,951 to $91,900;
// 24 percent on $82,501 to $157,500, versus 28 percent on $91,901 to $191,650;
// 32 percent on $157,501 to $200,000, versus 33 percent on $191,651 to $416,700;
// 35 percent on $200,001 to $500,000, versus 35 percent on $416,701 to $418,400;
function calcTax(income) {
View gist:5770291
// create new card
$('.js-add-list-popover').click();
var d = new Date();
var year = (d.getFullYear()+'').substring(2);
var month = d.getMonth() + 1;
var day = d.getDate();
var cardName = 'Published (' + month + '-' + day + '-' + year + ')';
$('.js-list-name').val(cardName);
View gist:5244909
(function(d, s) {
var deps = {
twitter: [
"//platform.twitter.com/widgets.js",
"twitter-wjs"
],
facebook: [
"//connect.facebook.net/en_US/all.js#xfbml=1",
"facebook-jssdk"
You can’t perform that action at this time.