Skip to content

Instantly share code, notes, and snippets.

View cedeber's full-sized avatar
🦀
Rustacean

Cédric Eberhardt cedeber

🦀
Rustacean
View GitHub Profile
@cedeber
cedeber / tagged-selector.js
Created March 31, 2018 19:12
Tagged Selector
export default function $(strings, ...expressions) {
let selector = [strings[0]];
expressions.forEach((expr, i) => selector.push(expr, strings[i + 1]));
return document.querySelector(selector.join(""));
}
@cedeber
cedeber / ext.js
Created April 3, 2018 13:20
URL extension
const ext = url.slice(((url.lastIndexOf(".") - 1) >>> 0) + 2);
@cedeber
cedeber / loaded.js
Created April 3, 2018 16:41
Page loaded
function pageLoaded() {
return new Promise(resolve => {
if (document.readyState === "complete") {
resolve();
} else {
window.addEventListener("load", () => {
resolve();
});
}
});
@cedeber
cedeber / apply-before-exit.js
Created April 3, 2018 16:57
Apply before page exits
function applyBeforeExit(doBefore) {
document.addEventListener("click", async (event) => {
// Test for left click.
if (event.button !== 0) {
return;
}
let element = event.target;
// Go up through the DOM tree to search for a link
@cedeber
cedeber / serialize-form.js
Created April 3, 2018 17:07
Serialize Form
function serialize(form) {
const inputs = form.querySelectorAll("input");
const fields = {};
for (const input of inputs) {
if (input.name && !input.disabled && input.type !== "file" && input.type !== "reset" && input.type !== "submit" && input.type !== "button") {
if ((input.type !== "checkbox" && input.type !== "radio") || input.checked) {
fields[input.name] = input.value;
}
}
@cedeber
cedeber / vue-event-hub.js
Last active April 25, 2018 07:24
Vue global bus as event hub
import Vue from "vue";
// Create the event bus by creating a new Vue instance and
// binding it somehwere accessible. If you bind it to the
// Vue prototype, you can access it within your components
// like this:
//
// Emit an event
// this.$bus.$emit('myEvent', {data: true})
//
@cedeber
cedeber / JavaScript.sublime-build
Last active December 5, 2018 13:54
Check JavaScript with TypeScript on Sublime Text 3
{
"cmd": ["tsc", "-p", "jsconfig.json"],
"file_regex": "^(.+?)\\((\\d+),(\\d+)\\): (.+)$",
"working_dir": "${project_path:${folder}}",
"selector": "source.js"
}
@cedeber
cedeber / decorator.py
Created December 5, 2018 13:54
Python decorator
import time
from functools import wraps
# Use this function only if you need decorator parameters
def howmuchtime(limit=None):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
@cedeber
cedeber / sw-strat.js
Created January 16, 2020 11:08
Service Workers Strategies
/* --- Strategies --- */
//=> network ? save : cache
async function networkFirst(cacheName, fetchEvent) {
const request = fetchEvent.request;
let fetchResponse;
return fetch(request)
.then(response => toCache(cacheName, request, fetchResponse = response))
.then(response => response
@cedeber
cedeber / cmd.txt
Created August 3, 2020 12:27
IntelliJ MySYS 2
C:\msys64\msys2_shell.cmd -defterm -mingw64 -no-start -here -full-path