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 = {};

View file

@ -1,4 +1,4 @@
const {isNum} = require('../lo');
const {isNum} = require('../util');
const decimalMetric = {
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 {request} = require('../server');
const allsettings = require('./settings');

View file

@ -1,4 +1,4 @@
const {includes} = require('../lo');
const {includes} = require('../util');
const config = require('../config');
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 reEndsWithSlash = /\/$/;

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
const {map} = require('../lo');
const {map} = require('../util');
const {win} = require('../globals');
const event = require('../core/event');
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 event = require('../core/event');
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 server = require('../server');
const event = require('../core/event');

View file

@ -1,5 +1,5 @@
const {dom, onLoad} = require('../util');
const {win} = require('../globals');
const {dom, onLoad} = require('../dom');
const event = require('../core/event');
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 event = require('../core/event');
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 server = require('../server');
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 event = require('../core/event');
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 event = require('../core/event');
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 resource = require('../core/resource');
const allsettings = require('../core/settings');

View file

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

View file

@ -1,10 +1,8 @@
const {each, toArray} = require('../lo');
const {dom} = require('../dom');
const {each, toArray, dom, regularCmp, naturalCmp} = require('../util');
const event = require('../core/event');
const resource = require('../core/resource');
const allsettings = require('../core/settings');
const store = require('../core/store');
const util = require('../core/util');
const settings = Object.assign({
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;
};
};

View file

@ -1,4 +1,4 @@
const {each, map, includes} = require('../lo');
const {each, map, includes} = require('../util');
const server = require('../server');
const event = require('../core/event');
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 event = require('../core/event');
const location = require('../core/location');
const resource = require('../core/resource');
const allsettings = require('../core/settings');
const store = require('../core/store');
const util = require('../core/util');
const settings = Object.assign({
@ -44,7 +43,7 @@ function cmpFn(item1, item2) {
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) {

View file

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

View file

@ -1,5 +1,5 @@
const {dom} = require('../util');
const {win} = require('../globals');
const {dom} = require('../dom');
const config = require('../config');
const server = require('../server');
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 location = require('../core/location');
const settings = require('../core/settings');

View file

@ -1,6 +1,5 @@
const {each, dom} = require('./util');
const {win} = require('./globals');
const {dom} = require('./dom');
const {each} = require('./lo');
const XHR = win.XMLHttpRequest;
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 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
// Author: Jim Palmer (based on chunking idea from Dave Koelle)
//
// 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 sre = /(^[ ]*|[ ]*$)/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 hre = /^0x[0-9a-f]+$/i;
const ore = /^0/;
const re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi;
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 reHex = /^0x[0-9a-f]+$/i;
const reLeadingZero = /^0/;
const naturalCmp = (val1, val2) => {
// convert all to strings strip whitespace
const x = String(val1).replace(sre, '');
const y = String(val2).replace(sre, '');
const x = String(val1).replace(reStrip, '');
const y = String(val2).replace(reStrip, '');
// chunk/tokenize
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');
// numeric, hex or date detection
const xD = parseInt(x.match(hre), 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 xD = parseInt(x.match(reHex), 10) || xN.length !== 1 && x.match(dre) && Date.parse(x);
const yD = parseInt(y.match(reHex), 10) || xD && y.match(dre) && Date.parse(y) || null;
let oFxNcL;
let oFyNcL;
// first try and sort Hex codes or Dates
if (yD) {
if (xD < yD) {
@ -29,11 +32,12 @@ const naturalCmpFn = (val1, val2) => {
return 1;
}
}
// natural sorting through split numeric strings and default strings
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)
oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
oFxNcL = !(xN[cLoc] || '').match(reLeadingZero) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
oFyNcL = !(yN[cLoc] || '').match(reLeadingZero) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
// handle numeric vs string comparison - number < string - (Kyle Adams)
if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {
return isNaN(oFxNcL) ? 1 : -1;
@ -49,31 +53,10 @@ const naturalCmpFn = (val1, val2) => {
return 1;
}
}
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 = {
regularCmpFn,
naturalCmpFn,
escapePattern,
parsePattern
naturalCmp
};

View file

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

View file

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

View file

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

View file

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

View file

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