Skip to content

Instantly share code, notes, and snippets.

View stefanmaric's full-sized avatar
🐿️
ship it

Stefan Maric stefanmaric

🐿️
ship it
View GitHub Profile
@stefanmaric
stefanmaric / copy-to-clipboard-bookmarklet.md
Created September 7, 2016 20:54
Create Bookmarklet (browser bookmark that executes Javsacript) to copy a given text to Clipboard

Copy-to-clipboard Bookmarklet

Create Bookmarklet (browser bookmark that executes Javsacript) to copy a given text to Clipboard.

This is the base javascript:

(function (text) {
  var node = document.createElement('textarea')
  var selection = document.getSelection()
@stefanmaric
stefanmaric / defer.js
Created February 12, 2018 13:00
Javascript ES6 defer function to create deferred Promises with extra resolve and reject methods
/**
* Create an new deferred promise that can be resolved/rejected from outside.
* @return {Promise} A new Promise with two extra methods: resolve and reject.
*
* @example
* const unknownResult = () => {
* const deferredPromise = defer()
*
* const errorTimeoutId = setTimeout(
* () => {
@stefanmaric
stefanmaric / notes.md
Last active February 11, 2023 04:51
CleverKek notes

y-combinator

const y = le => (f => f(f))(f => le(x => f(f)(x)))

fib func that would theoretically take advantage of TCO

'use strict'
const fib = (n, a = 1, b = 0) => n ? fib(n - 1, a + b, a) : b
@stefanmaric
stefanmaric / one-liners.js
Last active December 18, 2022 18:30
one-liner functional utilities in JavaScript
/**
* @file one-liner functional utilities in JavaScript
* @author Stefan Maric <me@stefanmaric.com>
* @license
* Copyright © 2017 Stefan Maric <me@stefanmaric.com>
* This work is free. You can redistribute it and/or modify it under the
* terms of the Do What The Fuck You Want To Public License, Version 2,
* as published by Sam Hocevar. See http://www.wtfpl.net/ for more details.
*/
@stefanmaric
stefanmaric / selectRelativeTimeUnit.js
Last active September 21, 2021 22:20
Util function to select unit and value for the Intl.RelativeTimeFormat API
export const UNITS = [
{
multiplier: 1000,
name: 'second',
threshold: 45,
},
{
multiplier: 60,
name: 'minute',
threshold: 45,
@stefanmaric
stefanmaric / open-sans.css
Created June 16, 2015 17:48
All (13) Open Sans variants. CSS embedded. WOFF format. Base64 encoded. Basic Western subsetting. font-face declaration using style links.
/* Open Sans - by Steve Matteson, Apache License version 2.0 */
/* Open Sans Light */
@font-face {
font-family: 'Open Sans';
src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAF5IABMAAAAArgwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABqAAAABwAAAAca7DAFEdERUYAAAHEAAAAHQAAAB4AJwDwR1BPUwAAAeQAAASiAAAJmCwaFlhHU1VCAAAGiAAAAIEAAACooF6Ikk9TLzIAAAcMAAAAXgAAAGCgeJYXY21hcAAAB2wAAAGGAAAB2s9AWKBjdnQgAAAI9AAAADgAAAA4ClINZmZwZ20AAAksAAABsQAAAmVTtC+nZ2FzcAAACuAAAAAIAAAACAAAABBnbHlmAAAK6AAASiYAAI54OERAeGhlYWQAAFUQAAAAMwAAADYJcp/SaGhlYQAAVUQAAAAfAAAAJA9bBixobXR4AABVZAAAAjEAAAOmuKtcmWxvY2EAAFeYAAABzgAAAdZKMihUbWF4cAAAWWgAAAAgAAAAIAIHAc1uYW1lAABZiAAAAhoAAATiYqqsfHBvc3QAAFukAAAB6wAAAt17wozucHJlcAAAXZAAAACvAAABLyQjUqh3ZWJmAABeQAAAAAYAAAAG7WNVfgAAAAEAAAAA0MoNVwAAAADJQhTbAAAAANGkneF42mNgZGBg4AFiMSBmYmAEwpdAzALmMQAADaEBGAAAAHjarZZLbFRVGMf/M51hxoKWqtH4CBoyNrUGjQ1J27GwatpaDZZpi4MOig/iAkJCY0hMExaFgbgwIQYrOTxqCkyh0FmQUpryMkxXLNzhaW3jyuVJV8QFIY6/c9sp4EjVxHz55dw597vf43/OPXMVklSpbn2qSEvru916/rOvenep5oveHTtVv+uTL3dro
@stefanmaric
stefanmaric / toBase.js
Created April 1, 2019 14:16
Get a string represnetation of an integer in any base
/**
* Transform a number to any base based on a provided range.
* TODO: doesn't support floats.
* @param {number} baseTen A regular, primitive integer number
* @param {Array<string>} range And array of characters to represent the positional system.
* @returns {string} A representation of the provided number in the positional system provided.
*/
const toBase = (baseTen, range = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')) => {
if (baseTen % 1 > 0) throw new TypeError('Only integers are supported')
if (baseTen === 0) return range[0]
@stefanmaric
stefanmaric / README.md
Created March 21, 2020 18:47
CS:Source setup on Ubuntu

CS:Source setup on Ubuntu

@stefanmaric
stefanmaric / deepDefaults.js
Created July 2, 2019 16:21
Deep Defaults function in JavaScript
const defaultPredicate = (x) => x === null || x === undefined
const deepDefaults = (target, defaults, predicate = defaultPredicate) => {
if (Object(target) !== target) return Object.assign({}, defaults)
return Object.keys(defaults).reduce((acc, key) => {
if (Object(defaults[key]) === defaults[key]) {
acc[key] = deepDefaults(target[key] || {}, defaults[key], predicate)
} else {
acc[key] = predicate(target[key], key) ? defaults[key] : target[key]