Skip to content

Instantly share code, notes, and snippets.

💭
I may be slow to respond.

Azriel Lector Axighi

View GitHub Profile
View timer.js
export default class Timer {
constructor(time = 10, cb = () => console.log('null callback')) {
this.time = time
this.cb = cb
this.remain = time * 1000
}
start() {
this.startTime = new Date()
this.remain = this.time * 1000
View futch.js
function futch(url, opts={}, onProgress) {
return new Promise( (res, rej)=>{
var xhr = new XMLHttpRequest();
xhr.open(opts.method || 'get', url);
for (var k in opts.headers||{})
xhr.setRequestHeader(k, opts.headers[k]);
xhr.onload = e => res(e.target.responseText);
xhr.onerror = rej;
if (xhr.upload && onProgress)
xhr.upload.onprogress = onProgress; // event.loaded / event.total * 100 ; //event.lengthComputable
@Axighi
Axighi / increase_replace.js
Created May 2, 2017
Using regex to replace match strings with auto increment number.
View increase_replace.js
'An aplle is not a banana'.replace(/a/g, (() => {
var number = 0;
return () => {
return number++;
}
})())
View detect_browser.js
navigator.sayswho= (function(){
var ua= navigator.userAgent, tem,
M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if(/trident/i.test(M[1])){
tem= /\brv[ :]+(\d+)/g.exec(ua) || [];
return 'IE '+(tem[1] || '');
}
if(M[1]=== 'Chrome'){
tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
View curry.js
Function.prototype.curry = function() {
if (arguments.length < 1) {
return this;
}
const self = this;
const args = toArray(arguments);
return function() {
return self.apply(this, args.concat(toArray(arguments)));
View Custom Object addEventListener.js
var CustomObject = function () {
var _this = this;
_this.events = {};
_this.addEventListener = function(name, handler) {
if (_this.events.hasOwnProperty(name))
_this.events[name].push(handler);
else
_this.events[name] = [handler];
};
View addTwoNumbers.py
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
View requireAll.js
var req = require.context("../someDir", true, /^(.*\.(js$))[^.]*$/igm);
req.keys().forEach(function(key){
req(key);
});
View cachedFetch.js
const cachedFetch = (url, options) => {
let expiry = 5 * 60 // 5 min default
if (typeof options === 'number') {
expiry = options
options = undefined
} else if (typeof options === 'object') {
// I hope you didn't set it to 0 seconds
expiry = options.seconds || expiry
}
// Use the URL as the cache key to sessionStorage
View async_runner.js
let fs = require("fs");
function run(taskDef) {
// create the iterator
let task = taskDef();
// start the task
let result = task.next();
You can’t perform that action at this time.