Bundle utils.

This commit is contained in:
Lars Jung 2016-06-26 17:57:25 +02:00
parent 6b3ba18da1
commit 901d8c407d
37 changed files with 88 additions and 86 deletions

View file

@ -1,4 +1,4 @@
const {isStr, isFn} = require('../lo'); const {isStr, isFn} = require('../util');
const subscriptions = {}; const subscriptions = {};

View file

@ -1,4 +1,4 @@
const {isNum} = require('../lo'); const {isNum} = require('../util');
const decimalMetric = { const decimalMetric = {
t: 1000.0, t: 1000.0,

View file

@ -1,4 +1,4 @@
const {each, values, isFn, difference} = require('../lo'); const {each, values, isFn, difference} = require('../util');
const {win} = require('../globals'); const {win} = require('../globals');
const {request} = require('../server'); const {request} = require('../server');
const allsettings = require('./settings'); const allsettings = require('./settings');

View file

@ -1,4 +1,4 @@
const {includes} = require('../lo'); const {includes} = require('../util');
const config = require('../config'); const config = require('../config');
const settings = require('./settings'); const settings = require('./settings');

View file

@ -1,4 +1,4 @@
const {each, map} = require('../lo'); const {each, map} = require('../util');
const config = require('../config'); const config = require('../config');
const reEndsWithSlash = /\/$/; const reEndsWithSlash = /\/$/;

View file

@ -1,4 +1,4 @@
const {each} = require('../lo'); const {each} = require('../util');
const {win, jq} = require('../globals'); const {win, jq} = require('../globals');
const resource = require('../core/resource'); const resource = require('../core/resource');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');

View file

@ -1,5 +1,4 @@
const {each} = require('../lo'); const {each, dom} = require('../util');
const {dom} = require('../dom');
const event = require('../core/event'); const event = require('../core/event');
const location = require('../core/location'); const location = require('../core/location');
const resource = require('../core/resource'); const resource = require('../core/resource');

View file

@ -1,4 +1,4 @@
const {each} = require('../lo'); const {each} = require('../util');
const {jq} = require('../globals'); const {jq} = require('../globals');
const server = require('../server'); const server = require('../server');
const event = require('../core/event'); const event = require('../core/event');

View file

@ -1,10 +1,8 @@
const {filter, debounce} = require('../lo'); const {filter, debounce, parsePattern, dom} = require('../util');
const {dom} = require('../dom');
const event = require('../core/event'); const event = require('../core/event');
const location = require('../core/location'); const location = require('../core/location');
const resource = require('../core/resource'); const resource = require('../core/resource');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');
const util = require('../core/util');
const view = require('../view/view'); const view = require('../view/view');
@ -50,7 +48,7 @@ const update = () => {
if (inputIsVisible) { if (inputIsVisible) {
$filter.addCls('active'); $filter.addCls('active');
$input[0].focus(); $input[0].focus();
filterItems(util.parsePattern($input.val(), settings.advanced)); filterItems(parsePattern($input.val(), settings.advanced));
} else { } else {
filterItems(); filterItems();
$filter.rmCls('active'); $filter.rmCls('active');

View file

@ -1,4 +1,4 @@
const {map} = require('../lo'); const {map} = require('../util');
const {win} = require('../globals'); const {win} = require('../globals');
const event = require('../core/event'); const event = require('../core/event');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');

View file

@ -1,4 +1,4 @@
const {isNum} = require('../lo'); const {isNum} = require('../util');
const {win, jq, kjua} = require('../globals'); const {win, jq, kjua} = require('../globals');
const event = require('../core/event'); const event = require('../core/event');
const format = require('../core/format'); const format = require('../core/format');

View file

@ -1,4 +1,4 @@
const {each, isStr} = require('../lo'); const {each, isStr} = require('../util');
const {win, jq} = require('../globals'); const {win, jq} = require('../globals');
const server = require('../server'); const server = require('../server');
const event = require('../core/event'); const event = require('../core/event');

View file

@ -1,5 +1,5 @@
const {dom, onLoad} = require('../util');
const {win} = require('../globals'); const {win} = require('../globals');
const {dom, onLoad} = require('../dom');
const event = require('../core/event'); const event = require('../core/event');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');

View file

@ -1,4 +1,4 @@
const {each, map, includes, compact} = require('../lo'); const {each, map, includes, compact} = require('../util');
const {win, jq} = require('../globals'); const {win, jq} = require('../globals');
const event = require('../core/event'); const event = require('../core/event');
const format = require('../core/format'); const format = require('../core/format');

View file

@ -1,4 +1,4 @@
const {each, map, includes, compact} = require('../lo'); const {each, map, includes, compact} = require('../util');
const {win, jq} = require('../globals'); const {win, jq} = require('../globals');
const server = require('../server'); const server = require('../server');
const event = require('../core/event'); const event = require('../core/event');

View file

@ -1,4 +1,4 @@
const {each, map, keys, includes, compact} = require('../lo'); const {each, map, keys, includes, compact} = require('../util');
const {win, jq, marked, prism} = require('../globals'); const {win, jq, marked, prism} = require('../globals');
const event = require('../core/event'); const event = require('../core/event');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');

View file

@ -1,4 +1,4 @@
const {each, map, includes, compact} = require('../lo'); const {each, map, includes, compact} = require('../util');
const {win, jq} = require('../globals'); const {win, jq} = require('../globals');
const event = require('../core/event'); const event = require('../core/event');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');

View file

@ -1,4 +1,4 @@
const {each, isFn, isNum} = require('../lo'); const {each, isFn, isNum} = require('../util');
const {win, jq} = require('../globals'); const {win, jq} = require('../globals');
const resource = require('../core/resource'); const resource = require('../core/resource');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');

View file

@ -1,11 +1,9 @@
const {map, debounce} = require('../lo'); const {map, debounce, parsePattern, dom} = require('../util');
const {dom} = require('../dom');
const server = require('../server'); const server = require('../server');
const event = require('../core/event'); const event = require('../core/event');
const location = require('../core/location'); const location = require('../core/location');
const resource = require('../core/resource'); const resource = require('../core/resource');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');
const util = require('../core/util');
const Item = require('../model/item'); const Item = require('../model/item');
const view = require('../view/view'); const view = require('../view/view');
@ -58,7 +56,7 @@ const update = () => {
if (inputIsVisible) { if (inputIsVisible) {
$search.addCls('active'); $search.addCls('active');
$input[0].focus(); $input[0].focus();
search(util.parsePattern($input.val(), settings.advanced)); search(parsePattern($input.val(), settings.advanced));
} else { } else {
search(); search();
$search.rmCls('active'); $search.rmCls('active');

View file

@ -1,4 +1,4 @@
const {each, map} = require('../lo'); const {each, map} = require('../util');
const {win, jq} = require('../globals'); const {win, jq} = require('../globals');
const event = require('../core/event'); const event = require('../core/event');
const resource = require('../core/resource'); const resource = require('../core/resource');

View file

@ -1,10 +1,8 @@
const {each, toArray} = require('../lo'); const {each, toArray, dom, regularCmp, naturalCmp} = require('../util');
const {dom} = require('../dom');
const event = require('../core/event'); const event = require('../core/event');
const resource = require('../core/resource'); const resource = require('../core/resource');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');
const store = require('../core/store'); const store = require('../core/store');
const util = require('../core/util');
const settings = Object.assign({ const settings = Object.assign({
enabled: false, enabled: false,
@ -71,7 +69,7 @@ const cmpFn = (getValue, reverse, ignorecase, natural) => {
} }
} }
res = natural ? util.naturalCmpFn(val1, val2) : util.regularCmpFn(val1, val2); res = natural ? naturalCmp(val1, val2) : regularCmp(val1, val2);
return reverse ? -res : res; return reverse ? -res : res;
}; };
}; };

View file

@ -1,4 +1,4 @@
const {each, map, includes} = require('../lo'); const {each, map, includes} = require('../util');
const server = require('../server'); const server = require('../server');
const event = require('../core/event'); const event = require('../core/event');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');

View file

@ -1,11 +1,10 @@
const {each} = require('../lo'); const {each, regularCmp, naturalCmp} = require('../util');
const {jq} = require('../globals'); const {jq} = require('../globals');
const event = require('../core/event'); const event = require('../core/event');
const location = require('../core/location'); const location = require('../core/location');
const resource = require('../core/resource'); const resource = require('../core/resource');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');
const store = require('../core/store'); const store = require('../core/store');
const util = require('../core/util');
const settings = Object.assign({ const settings = Object.assign({
@ -44,7 +43,7 @@ function cmpFn(item1, item2) {
val2 = val2.toLowerCase(); val2 = val2.toLowerCase();
} }
return settings.natural ? util.naturalCmpFn(val1, val2) : util.regularCmpFn(val1, val2); return settings.natural ? naturalCmp(val1, val2) : regularCmp(val1, val2);
} }
function update(item) { function update(item) {

View file

@ -1,4 +1,4 @@
const {dom, onReady} = require('./dom'); const {dom, onReady} = require('./util');
const config = require('./config'); const config = require('./config');
const name = dom('script[data-module]').attr('data-module'); const name = dom('script[data-module]').attr('data-module');

View file

@ -1,5 +1,5 @@
const {dom} = require('../util');
const {win} = require('../globals'); const {win} = require('../globals');
const {dom} = require('../dom');
const config = require('../config'); const config = require('../config');
const server = require('../server'); const server = require('../server');
const resource = require('../core/resource'); const resource = require('../core/resource');

View file

@ -1,4 +1,4 @@
const {keys, each, filter, sortBy, isFn, isStr, isNum} = require('../lo'); const {keys, each, filter, sortBy, isFn, isStr, isNum} = require('../util');
const server = require('../server'); const server = require('../server');
const location = require('../core/location'); const location = require('../core/location');
const settings = require('../core/settings'); const settings = require('../core/settings');

View file

@ -1,6 +1,5 @@
const {each, dom} = require('./util');
const {win} = require('./globals'); const {win} = require('./globals');
const {dom} = require('./dom');
const {each} = require('./lo');
const XHR = win.XMLHttpRequest; const XHR = win.XMLHttpRequest;
const request = data => { const request = data => {

View file

@ -1,4 +1,4 @@
const {win} = require('./globals'); const {win} = require('../globals');
const {each, filter, hasLength, is, isStr, map, isInstanceOf, toArray} = require('./lo'); const {each, filter, hasLength, is, isStr, map, isInstanceOf, toArray} = require('./lo');
const doc = win.document; const doc = win.document;

View file

@ -0,0 +1,6 @@
module.exports = Object.assign({},
require('./lo'),
require('./dom'),
require('./naturalCmp'),
require('./misc')
);

View file

@ -0,0 +1,24 @@
const regularCmp = (x, y) => x < y ? -1 : x > y ? 1 : 0;
const escapePattern = sequence => {
return sequence.replace(/[\-\[\]{}()*+?.,\\$\^|#\s]/g, '\\$&');
};
const parsePattern = (sequence, advanced) => {
if (!advanced) {
return escapePattern(sequence);
}
if (sequence.substr(0, 3) === 're:') {
return sequence.substr(3);
}
return sequence.trim().split(/\s+/).map(part => {
return part.split('').map(char => escapePattern(char)).join('.*?');
}).join('|');
};
module.exports = {
regularCmp,
parsePattern
};

View file

@ -1,26 +1,29 @@
const regularCmpFn = (x, y) => x < y ? -1 : x > y ? 1 : 0;
// Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license // Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
// Author: Jim Palmer (based on chunking idea from Dave Koelle) // Author: Jim Palmer (based on chunking idea from Dave Koelle)
//
// Modified to make it work with h5ai // Modified to make it work with h5ai
const naturalCmpFn = (val1, val2) => {
const re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi; const re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi;
const sre = /(^[ ]*|[ ]*$)/g; const reStrip = /(^[ ]*|[ ]*$)/g;
const dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/; const dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/;
const hre = /^0x[0-9a-f]+$/i; const reHex = /^0x[0-9a-f]+$/i;
const ore = /^0/; const reLeadingZero = /^0/;
const naturalCmp = (val1, val2) => {
// convert all to strings strip whitespace // convert all to strings strip whitespace
const x = String(val1).replace(sre, ''); const x = String(val1).replace(reStrip, '');
const y = String(val2).replace(sre, ''); const y = String(val2).replace(reStrip, '');
// chunk/tokenize // chunk/tokenize
const xN = x.replace(re, '\0$1\0').replace(/\0$/, '').replace(/^\0/, '').split('\0'); const xN = x.replace(re, '\0$1\0').replace(/\0$/, '').replace(/^\0/, '').split('\0');
const yN = y.replace(re, '\0$1\0').replace(/\0$/, '').replace(/^\0/, '').split('\0'); const yN = y.replace(re, '\0$1\0').replace(/\0$/, '').replace(/^\0/, '').split('\0');
// numeric, hex or date detection // numeric, hex or date detection
const xD = parseInt(x.match(hre), 10) || xN.length !== 1 && x.match(dre) && Date.parse(x); const xD = parseInt(x.match(reHex), 10) || xN.length !== 1 && x.match(dre) && Date.parse(x);
const yD = parseInt(y.match(hre), 10) || xD && y.match(dre) && Date.parse(y) || null; const yD = parseInt(y.match(reHex), 10) || xD && y.match(dre) && Date.parse(y) || null;
let oFxNcL; let oFxNcL;
let oFyNcL; let oFyNcL;
// first try and sort Hex codes or Dates // first try and sort Hex codes or Dates
if (yD) { if (yD) {
if (xD < yD) { if (xD < yD) {
@ -29,11 +32,12 @@ const naturalCmpFn = (val1, val2) => {
return 1; return 1;
} }
} }
// natural sorting through split numeric strings and default strings // natural sorting through split numeric strings and default strings
for (let cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc += 1) { for (let cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc += 1) {
// find floats not starting with '0', string or 0 if not defined (Clint Priest) // find floats not starting with '0', string or 0 if not defined (Clint Priest)
oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; oFxNcL = !(xN[cLoc] || '').match(reLeadingZero) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; oFyNcL = !(yN[cLoc] || '').match(reLeadingZero) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
// handle numeric vs string comparison - number < string - (Kyle Adams) // handle numeric vs string comparison - number < string - (Kyle Adams)
if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {
return isNaN(oFxNcL) ? 1 : -1; return isNaN(oFxNcL) ? 1 : -1;
@ -49,31 +53,10 @@ const naturalCmpFn = (val1, val2) => {
return 1; return 1;
} }
} }
return 0; return 0;
}; };
const escapePattern = sequence => {
return sequence.replace(/[\-\[\]{}()*+?.,\\$\^|#\s]/g, '\\$&');
};
const parsePattern = (sequence, advanced) => {
if (!advanced) {
return escapePattern(sequence);
}
if (sequence.substr(0, 3) === 're:') {
return sequence.substr(3);
}
return sequence.trim().split(/\s+/).map(part => {
return part.split('').map(char => escapePattern(char)).join('.*?');
}).join('|');
};
module.exports = { module.exports = {
regularCmpFn, naturalCmp
naturalCmpFn,
escapePattern,
parsePattern
}; };

View file

@ -1,4 +1,4 @@
const {dom} = require('../dom'); const {dom} = require('../util');
const rootSelector = 'body'; const rootSelector = 'body';
const tplTopbar = const tplTopbar =

View file

@ -1,4 +1,4 @@
const {dom} = require('../dom'); const {dom} = require('../util');
const base = require('./base'); const base = require('./base');
const init = () => { const init = () => {

View file

@ -1,4 +1,4 @@
const {dom} = require('../dom'); const {dom} = require('../util');
const resource = require('../core/resource'); const resource = require('../core/resource');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');
const store = require('../core/store'); const store = require('../core/store');

View file

@ -1,5 +1,4 @@
const {each, map, includes, intersection} = require('../lo'); const {each, map, includes, intersection, dom} = require('../util');
const {dom} = require('../dom');
const event = require('../core/event'); const event = require('../core/event');
const format = require('../core/format'); const format = require('../core/format');
const location = require('../core/location'); const location = require('../core/location');

View file

@ -1,5 +1,4 @@
const {each} = require('../lo'); const {each, dom} = require('../util');
const {dom} = require('../dom');
const event = require('../core/event'); const event = require('../core/event');
const resource = require('../core/resource'); const resource = require('../core/resource');
const allsettings = require('../core/settings'); const allsettings = require('../core/settings');