Skip to content

Instantly share code, notes, and snippets.

<!DOCTYPE html>
<title>onhashchange iframe</title>
<meta charset="utf-8">
<iframe src="https://cdn.rawgit.com/pygy/bfe0555ab0ef9a6bfc2a7dc471d0b9d0/raw/e0fad9b45a3a6d5235b8acbc2a7b74137082f1ee/index.html"></iframe>
@pygy
pygy / _grid-ie-calc.scss
Created June 4, 2017 21:34 — forked from robinloeffel/_grid-ie-calc.scss
Dynamic CSS Grid Items in Internet Explorer and Edge
/*
This mixin allows us use CSS grid without having to think about
what -ms-grid-row/-ms-grid-column we have to assign to a grid element
for it to properly work on Internet Explorer and Edge.
It takes three arguments, the last one of which is optional. Specify the
maximum amount of items you want to have in your grid, when they should
break to the next line and, if you like, a grid-gap of some sort.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>eqeqeq vs regexp</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/1.0.0/benchmark.min.js"></script>
<script src="./suite.js"></script>
</head>
<body>
<h1>Open the console to view the results</h1>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>indexof vs regexp</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/1.0.0/benchmark.min.js"></script>
<script src="./suite.js"></script>
</head>
<body>
<h1>Open the console to view the results</h1>
<!doctype html>
<title>XRegExp fast-fake-y benchmarks</title>
<table><tr><td>
<div id="log-after">Testing XRegExp 3.1.1-fast-fake-y.<br>Sit back and relax. This might take a while.<br><br>Constructor with short pattern:<br>XRegExp with pattern cache flush x 88,916 ops/sec ±2.24% (82 runs sampled)<br>XRegExp x 834,869 ops/sec ±1.08% (81 runs sampled)<br>XRegExp.cache x 38,821,522 ops/sec ±1.93% (82 runs sampled)<br>RegExp x 5,654,331 ops/sec ±1.68% (81 runs sampled)<br>Fastest is XRegExp.cache<br><br>Constructor with medium pattern:<br>XRegExp with pattern cache flush x 32,278 ops/sec ±1.20% (83 runs sampled)<br>XRegExp x 856,503 ops/sec ±1.48% (79 runs sampled)<br>XRegExp.cache x 38,742,523 ops/sec ±0.66% (82 runs sampled)<br>RegExp x 5,679,163 ops/sec ±2.44% (80 runs sampled)<br>Fastest is XRegExp.cache<br><br>Constructor with long pattern:<br>XRegExp with pattern cache flush x 1,211 ops/sec ±1.01% (80 runs sampled)<br>XRegExp x 484,537 ops/sec ±0.98% (81 runs sampled)<br>XRegExp.cache x 38,776,122 ops/sec ±
var c = require("compose-regexp")
function normalize(matcher) {
if (typeof matcher === 'function') return matcher
if (({}).toString.call(matcher) === '[object Object]') return grammar(matchers)
var flags = 'g'
if (matcher instanceof RegExp) flags += matcher.flags.replace('g', '')
matcher = c.flags(flags,
c.either(
matcher,
/()/
@pygy
pygy / README.md
Created January 31, 2017 17:00
Mithril v1 shallow component

Mithril components are diffed wholesale.

m.render(elt, m(Foo))

followed by

m.render(elt, m(Bar))
atrules:
@keyframes: bare -webkit-
@viewport: -ms-
@document:
functions:
linear-gradient(): bare -ms- -webkit-
calc(): bare -webkit-
element():
cross-fade():
@pygy
pygy / cancelPromise.md
Last active May 9, 2024 13:27
You can already cancel ES6 Promises

The gist: by having a Promise adopt the state of a forever pending one, you can suspend its then handlers chain.

Promise.pending = Promise.race.bind(Promise, [])

let cancel

new Promise(function(fulfill, reject) {
  cancel = function() {fulfill(Promise.pending())}
  setTimeout(fulfill, 1000, 5)
@pygy
pygy / mithrilRouter.js
Last active March 6, 2016 00:50
The Mithril router extracted for standalone use.
// The Mithril router extracted to work standalone.
// as a commonJS module.
// the effector must be a function that accepts a DOM node
// (insertion point) and a component, like Mithril;s `m.mount`
// This was done by modifying the code as little as possible
// but the result will need a bit more polish to become universally
// useful...
// The MIT License (MIT)