This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
\documentclass[tikz]{standalone} % last update March 2016 | |
\usepackage[utf8]{inputenc} | |
\usepackage[T1]{fontenc} | |
\title{Moderator chart} | |
\begin{document} | |
\definecolor{rows}{rgb}{0.95,0.95,0.95} | |
\definecolor{myblue}{rgb}{0.1,0.3,0.9} | |
\definecolor{mypurple}{rgb}{0.5,0.3,0.7} | |
\begin{tikzpicture}[scale=0.5] | |
% 1 horizontal unit = 1 month, 0 = january 2010 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const interleave = <T, U>(arr: T[], inserted: U) => { | |
let insertions = 0; | |
return arr.flatMap((val, idx) => { | |
const isEven = (idx + insertions) % 2; | |
if(isEven) insertions += 1; | |
return isEven ? [inserted, val] : val; | |
}); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import GulpClient = require("gulp"); | |
import del from "del"; | |
import { dest, series, src, watch } from "gulp"; | |
import { appendText, prependText } from "gulp-append-prepend"; | |
import rename from "gulp-rename"; | |
import ts from "gulp-typescript"; | |
const DIST = "dist"; | |
const SOURCE = "src/*.ts"; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type DeepKeyof<T, A = never> = { [P in keyof T]: T[P] extends object ? P extends A ? P : DeepKeyof<T[P], A | keyof T> | P : P }[keyof T]; | |
type DeepOmit<T, U extends DeepKeyof<T>> = { | |
[P in keyof T as P extends U ? never : P]: T[P] extends object ? | |
keyof DeepOmit<T[P], Extract<U, DeepKeyof<T[P]>>> extends never ? | |
{} : | |
DeepOmit<T[P], Extract<U, DeepKeyof<T[P]>>> : | |
T[P] | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type PrintStringUnion<T extends string, S extends string = "|", A extends string = ""> = { | |
[P in T]: [T] extends [P] ? `${A}${P}` : PrintStringUnion<Exclude<T, P>, S, `${A}${P}${S}`> | |
}[T]; | |
type TestUnion = "A" | "B" | "C" | "D" | "E"; | |
type U = PrintStringUnion<TestUnion>; | |
const test1: U = "A|B|C|D|E"; // OK |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type NestedObj = { | |
[x: string]: string | number | boolean | null | undefined | NestedObj; | |
}; | |
const lens = (obj: NestedObj, path: string) => { | |
const parts = path.split("."); | |
const [lastPart] = parts.slice(-1); | |
let current: NestedObj = obj; | |
for (const part of parts) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# extracts NPM environment variable names | |
npm_val() { | |
local value=$(ENV | grep -e "npm_package_$1" | cut -d "=" -f 2) | |
echo $value | |
} | |
# splits a string on dashes and rejoins with first letter uppercased | |
pretty() { | |
IFS=\- | |
local output |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type Digit = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "0"; | |
type EveryOfType<A extends readonly any[], T> = keyof { | |
[P in Exclude<keyof A, keyof any[]> as A[P] extends T ? never : P]: P; | |
} extends never | |
? true | |
: false; | |
type SplitString< | |
T extends string, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# if gulp CLI is not installed | |
npm i -g gulp-cli | |
# gulp package | |
npm i -D gulp @types/gulp | |
# TypeScript prerequisites | |
# ts-node is required for gulpfile.ts | |
npm i -D typescript ts-node |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type Invert<T> = { [ P in keyof T as Extract<T[P], string | number | symbol> ] : P }; | |
type test1 = Invert<{ a: "ia", b: "ib", c: 1 }>; //{ ia: "a"; ib: "b"; 1: "c"; } | |
type DeepPath<T extends string[], U> = T extends [infer F, ...infer L] | |
? F extends string | |
? { [P in F]: L extends string[] ? DeepPath<L,U> : never } | |
: {} | |
: U; |
NewerOlder