Skip to content

Instantly share code, notes, and snippets.

View electerious's full-sized avatar

Tobias Reich electerious

View GitHub Profile
@electerious
electerious / loop.js
Created July 27, 2017 12:24
Loop an async function with a delay
const loop = (fn, delay) => {
const next = () => setTimeout(
() => loop(fn, delay),
delay
)
fn(next)
}
@electerious
electerious / queue.js
Created May 12, 2017 18:13
Execute an array of functions with a delay between each execution
const queue = (query, delay, next) => {
if (query.length===0) return next()
query[0]()
const trimmed = query.slice(1)
setTimeout(() => exec(trimmed, delay, next), delay)
@electerious
electerious / duplicate.js
Created May 10, 2017 14:25
Duplicate array items based on an array
const duplicate = (arr, duplications) => arr.reduce((acc, val, i) => {
const duplication = duplications[i]
for (let i = 0; i<duplication; i++) acc.push(val)
return acc
}, [])
@electerious
electerious / mousePosition.js
Created February 22, 2017 16:16
Get the position of the mouse
const mousePosition = (() => {
let pos = {}
const position = (e) => ({
x: e.pageX,
y: e.pageY
})
document.addEventListener('mousemove', (e) => pos = position(e), false)
@electerious
electerious / clearfix.scss
Created January 26, 2017 16:00
SASS clearfix placeholder
%clearfix {
&::before,
&::after {
content: ' ';
display: table;
}
&::after {
clear: both;
@electerious
electerious / toClassString.js
Created January 21, 2017 15:48
Conditionally convert the keys of an object to a string of class names
const toClassString = (obj) => Object.keys(obj).filter((key) => obj[key]===true).join(' ').trim()
{
"rules": {
"color-no-invalid-hex": true,
"function-calc-no-unspaced-operator": true,
"function-linear-gradient-no-nonstandard-direction": true,
"function-max-empty-lines": 0,
"function-parentheses-space-inside": "never",
"function-url-quotes": "always",
"function-whitespace-after": "always",
"function-comma-space-after": "always",
@electerious
electerious / formatNumber.js
Created September 30, 2016 10:47
Format a number
const formatNumber = (num, delimiter = ',') => num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, delimiter)
@electerious
electerious / Caddyfile
Created August 20, 2016 18:15
Most complete list of mime types in the correct format for the Caddy mime directive
mime {
.atom application/atom+xml
.json application/json
.map application/json
.topojson application/json
.jsonld application/ld+json
.rss application/rss+xml
.geojson application/vnd.geo+json
.rdf application/xml
.xml application/xml
@electerious
electerious / hasLocalStorage.js
Last active July 21, 2016 15:33
Detect if browser supports localStorage
const hasLocalStorage = () => {
const tmp = 'tmp'
try {
localStorage.setItem(tmp, tmp)
localStorage.removeItem(tmp)
return true