Skip to content

Instantly share code, notes, and snippets.

{
"editor.fontFamily": "'Hasklig', 'Source code pro'",
"editor.fontSize": 15.4,
//"editor.fontSize": 12,
"editor.rulers": [
80,
120
],
"editor.minimap.enabled": false,
"editor.folding": false,
@izb
izb / chasing-value.html
Last active April 18, 2016 19:48
Ease in and out on a continuously changing value
<!doctype html>
<head>
<style>
</style>
</head>
<body>
<div>
<canvas id="canvas" width="500" height="500">
</canvas>
@izb
izb / debounced
Created September 5, 2013 14:08
Debounced function call
// WIP - needs a context object to store debounce info in.
Function.prototype.debounced = function() {return this}
var a = function(r) {console.log("Hello "+r)}
a.debounced()("World")
@izb
izb / wordwrap
Created August 12, 2013 10:40
Canvas word wrap
function wordwrap(text, twidth, con) {
con = con || context
twidth = twidth || con.canvas.width
var texts = [text], n = 0, s
while (con.measureText(texts[n]).width > twidth && (s = texts[n].indexOf(" ")) > -1) {
var t = texts[n], a = t.lastIndexOf(" ")
while (con.measureText(t.substr(0, a)).width > twidth && a > s) a = t.lastIndexOf(" ", a-1)
texts[n++] = t.substr(0, a)
texts.push(t.substr(a+1))
}
@izb
izb / canvas-screenshot
Created August 12, 2013 10:39
canvas screenshot in pop-up window
window.open(canvas.toDataURL())
@izb
izb / cookies
Created August 12, 2013 10:39
Object view on cookie values.
var cookies = {}
document.cookie.split(";").forEach(function (kv) {
kv = kv.replace(/^\s\s*/, "").split("=")
cookies[kv[0]] = decodeURIComponent(kv[1])
})
@izb
izb / queryString
Created August 12, 2013 10:38
Convert object to/from query string
function objqstring (obj) {
var a = []
for (var s in obj) {
a.push(s + "=" + encodeURIComponent(JSON.stringify(obj[s])))
}
return a.join("&")
}
function qstringobj (qstring) {
var obj = {}
@izb
izb / clamp
Created August 12, 2013 10:35
Clamp value to a range
//clamp(x,a,b) will return the value in the range [a,b] that's closest to x. With just two arguments, clip(x,a) will use the range [-a,a].
function clamp(x,a,b){return b===undefined?x>a?a:x<-a?-a:x:x>b?b:x<a?a:x}
@izb
izb / asyncForEach
Created August 12, 2013 10:33
Loop over an array in order, processing elements with an asynchronous function.
function asyncForEach(array, cb) {
var queue = array.slice();
var out = [];
function next() {
if (queue.length > 0) {
var item = queue.shift();
someAsyncFunc(item, function(o) {
out.push(o);
next();
});
@izb
izb / string-format1
Created August 12, 2013 09:46
String helpers
// String format function
String.prototype.format = function() {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};