Skip to content

Instantly share code, notes, and snippets.

@JohnMarkT
JohnMarkT / createDelimitedParams.js
Created August 15, 2022 15:29
Create a delimited string of params from an object
function createDelimitedParams(obj = {}, keyValDelimiter = '=', paramDelimiter = '&') {
return Object.entries(obj)
.map(entry => entry.join(keyValDelimiter))
.join(paramDelimiter);
};
@JohnMarkT
JohnMarkT / parseXML.js
Created May 13, 2022 13:25
Parse XML string
const parseXML = (xmlStr) => {
const parser = new DOMParser();
const doc = parser.parseFromString(xmlStr, 'application/xml');
const errorNode = doc.querySelector('parsererror');
if (errorNode) {
console.log('error while parsing');
return errorNode;
} else {
console.log('parsing complete: ' + doc.documentElement.nodeName);
@JohnMarkT
JohnMarkT / ciMatch.js
Created January 20, 2022 16:37
Case insensitive match
function ciMatch(prop = '', str = '') {
return str.localeCompare(prop, 'en', { sensitivity: 'base' }) === 0;
}
@JohnMarkT
JohnMarkT / 1to100.js
Created April 20, 2021 13:07
Print 1 to 100 without using numbers
const ten = 'no numbers'.length;
[...Array(ten * ten).keys()].forEach(i => console.log(++i));
@JohnMarkT
JohnMarkT / del-el.js
Created March 1, 2021 14:30
Bookmarklet to delete distracting and annoying elements from web page
((j,b)=>{j.t=!j.t;const f=j.t?b.addEventListener:b.removeEventListener;console.log('remove mode %s',j.t?'on':'off');j.rE=j.rE||(({target:el})=>{console.log('removing:',el);el.parentNode.removeChild(el);});f('click',j.rE);})(window.JMT=window.JMT||{},document.body);
@JohnMarkT
JohnMarkT / validateJWT.js
Last active July 30, 2020 15:11
Only performs basic validation, not verification. Returns object original JWT, unencrypted and parsed payload, and valid boolean.
function validateJWT(jwt) {
let payload = {}, valid = false
try {
[, payload] = jwt.split('.').slice(0,2).map(p => JSON.parse(atob(p)))
valid = true
} catch (error) {}
return { jwt, payload, valid }
}
@JohnMarkT
JohnMarkT / getDeep.js
Created September 18, 2018 15:29
get deeply nested property -- returns undefined if not found
function getDeep(obj, key) {
return key.split('.').reduce((o, x) => {
return (o || {})[x];
}, obj);
}
@JohnMarkT
JohnMarkT / getFullname.js
Created July 13, 2018 18:53
Get full name from user object
const getFullname = u => [u.first, u.middle, u.last].filter(Boolean).join(' ')
@JohnMarkT
JohnMarkT / cookies.js
Created December 14, 2017 16:10
Simple conversion of cookies to object
const cookies = document.cookie.split(';').reduce((a, c) => {const p = c.split('='); a[p[0]] = p[1]; return a;}, {});
@JohnMarkT
JohnMarkT / getByProperty.js
Last active May 13, 2022 13:20
get deeply nested property
function getByProperty(obj, prop) {
if (typeof obj === "object") {
return Object.keys(obj).reduce( (a, c) => {
if (c === prop) {
a = a.concat(obj[c]);
}
return a.concat(
getByProperty(obj[c], prop) || []
);
}, []);