Contract Killer
Stuff & Nonsense
The popular open-source contract for web professionals by- Originally published: 23rd December 2008
- Revised date: March 15th 2016
- Original post
const cache = {} | |
export default function useGlobalMemo (key, fn, deps) { | |
if (!cache[key]) { | |
cache[key] = { | |
subs: 0, | |
deps, | |
value: fn(), | |
} |
/** | |
* Write JSX, but make sure you have `import html from 'htm/preact'` in your files. | |
* Run them through this horrid attrocity and get JSX support with basically no overhead. | |
*/ | |
export function transformJsxToHtm(code) { | |
const tokenizer = /(^|)(?:<\/([a-z$_][a-z0-9_.-:]*)>|<([a-z$_][a-z0-9_.-:]*)(\s+[a-z0-9._-]+(?:=(?:".*?"|'.*?'|\{.+?\}))?)*(\s*\/\s*)?>|<(\/?)>)/gi; | |
let out='', index=0, token; | |
let depth = 0; | |
let stacks = []; | |
let shouldPop = false; |