Mithril components are diffed wholesale.
m.render(elt, m(Foo))
followed by
m.render(elt, m(Bar))
<!DOCTYPE html> | |
<title>onhashchange iframe</title> | |
<meta charset="utf-8"> | |
<iframe src="https://cdn.rawgit.com/pygy/bfe0555ab0ef9a6bfc2a7dc471d0b9d0/raw/e0fad9b45a3a6d5235b8acbc2a7b74137082f1ee/index.html"></iframe> |
/* | |
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, | |
/()/ |
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(): |
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)
// 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) |