keysort
Version:
Sorts an Array of Objects with SQL ORDER BY clause syntax
6 lines (5 loc) • 837 B
JavaScript
/*!
2023 Jason Mulligan <jason.mulligan@avoidwork.com>
@version 3.0.1
*/
const $=/-|\s/,s=" !== undefined";function e(e=[],t="",n=!1){const r=function($,s=","){return $.trim().split(new RegExp(`\\s*${s}\\s*`))}(t.replace(/\s*asc/gi,"").replace(/\s*desc/gi," desc")).map(($=>$.split(" "))),u=[];for(const[e,t]of r){const n="desc"===t?1:-1,r=-n;let i=".",p="";$.test(e)&&(i='["',p='"]'),u.push(`if (a${i}${e}${p}${s} && b${i}${e}${p}${s}) {`),u.push(` if (a${i}${e}${p} < b${i}${e}${p}) return ${n};`),u.push(` if (a${i}${e}${p} > b${i}${e}${p}) return ${r};`),u.push("} else {"),u.push(` if (a${i}${e}${p}${s}) return ${n};`),u.push(` if (b${i}${e}${p}${s}) return ${r};`),u.push("}")}return u.push("return 0;"),e[n?"toSorted":"sort"](new Function("a","b",u.join("\n")))}export{e as keysort};//# sourceMappingURL=keysort.min.js.map