View slugify.js
function slugify(text) { | |
return text.toString().toLowerCase().trim() | |
.normalize('NFD') // separate accent from letter | |
.replace(/[\u0300-\u036f]/g, '') // remove all separated accents | |
.replace(/\s+/g, '-') // replace spaces with - | |
.replace(/&/g, '-and-') // replace & with 'and' | |
.replace(/[^\w\-]+/g, '') // remove all non-word chars | |
.replace(/\-\-+/g, '-') // replace multiple '-' with single '-' | |
} |
View localStoragePollyfill.js
try { | |
localStorage.setItem('test', true); | |
} catch (e) { | |
if (e.code == 22) { //localStorage exists but size limit -> Probably Safari Private Mode. | |
localStorage.__proto__ = Object.create(Storage.prototype); | |
localStorage.__proto__._data = {}; | |
localStorage.__proto__.setItem = function (id, val) { | |
return this._data[id] = String(val) | |
}; | |
localStorage.__proto__.getItem = function (id) { |