Skip to content

Commit 9761f67

Browse files
committed
es2015
1 parent 51db7b2 commit 9761f67

File tree

3 files changed

+96
-106
lines changed

3 files changed

+96
-106
lines changed

examples.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
'use strict';
22

3-
var toRegexRange = require('./');
4-
var table = require('text-table');
5-
var Time = require('time-diff');
6-
var time = new Time();
3+
const toRegexRange = require('./');
4+
const table = require('text-table');
5+
const Time = require('time-diff');
6+
const time = new Time();
77

88
/**
99
* $ node examples.js
1010
*/
1111

1212
function toRange(min, max) {
13-
var key = 'to-range' + min + max;
13+
let key = 'to-range' + min + max;
1414
time.start(key);
15-
var str = toRegexRange(min, max);
15+
let str = toRegexRange(min, max);
1616
return [
1717
'',
1818
'`toRegexRange(\'' + min + ', ' + max + '\')`',
@@ -24,12 +24,12 @@ function toRange(min, max) {
2424

2525
toRange('1', '3');
2626

27-
var rows = [
27+
let rows = [
2828
['', '**Range**', '**Result**', '**Compile time**', ''],
2929
['', '--- ', '--- ', '---', ''],
3030
];
3131

32-
var examples = [
32+
let examples = [
3333
// ['0001', '5555'],
3434
// ['1', '5555'],
3535
// ['1', '555'],
@@ -59,7 +59,7 @@ var examples = [
5959
rows.push(toRange.apply(null, args));
6060
});
6161

62-
var text = table(rows, {hsep: ' | '});
62+
let text = table(rows, {hsep: ' | '});
6363
console.log(text);
6464

6565
/**

index.js

Lines changed: 58 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,60 @@
11
/*!
22
* to-regex-range <https://github.com/micromatch/to-regex-range>
33
*
4-
* Copyright (c) 2015-2017, Jon Schlinkert.
4+
* Copyright (c) 2015-2018, present, Jon Schlinkert.
55
* Released under the MIT License.
66
*/
77

88
'use strict';
99

10-
var repeat = require('repeat-string');
11-
var isNumber = require('is-number');
12-
var cache = {};
10+
const isNumber = require('is-number');
1311

1412
function toRegexRange(min, max, options) {
1513
if (isNumber(min) === false) {
16-
throw new RangeError('toRegexRange: first argument is invalid.');
14+
throw new TypeError('toRegexRange: expected the first argument to be a number');
1715
}
1816

1917
if (typeof max === 'undefined' || min === max) {
2018
return String(min);
2119
}
2220

2321
if (isNumber(max) === false) {
24-
throw new RangeError('toRegexRange: second argument is invalid.');
22+
throw new TypeError('toRegexRange: expected the second argument to be a number.');
2523
}
2624

2725
options = options || {};
28-
var relax = String(options.relaxZeros);
29-
var shorthand = String(options.shorthand);
30-
var capture = String(options.capture);
31-
var key = min + ':' + max + '=' + relax + shorthand + capture;
32-
if (cache.hasOwnProperty(key)) {
33-
return cache[key].result;
26+
let relax = String(options.relaxZeros);
27+
let shorthand = String(options.shorthand);
28+
let capture = String(options.capture);
29+
let key = min + ':' + max + '=' + relax + shorthand + capture;
30+
if (toRegexRange.cache.hasOwnProperty(key)) {
31+
return toRegexRange.cache[key].result;
3432
}
3533

36-
var a = Math.min(min, max);
37-
var b = Math.max(min, max);
34+
let a = Math.min(min, max);
35+
let b = Math.max(min, max);
3836

3937
if (Math.abs(a - b) === 1) {
40-
var result = min + '|' + max;
38+
let result = min + '|' + max;
4139
if (options.capture) {
4240
return '(' + result + ')';
4341
}
4442
return result;
4543
}
4644

47-
var isPadded = padding(min) || padding(max);
48-
var positives = [];
49-
var negatives = [];
45+
let isPadded = padding(min) || padding(max);
46+
let positives = [];
47+
let negatives = [];
5048

51-
var tok = {min: min, max: max, a: a, b: b};
49+
let tok = {min: min, max: max, a: a, b: b};
5250
if (isPadded) {
5351
tok.isPadded = isPadded;
5452
tok.maxLen = String(tok.max).length;
5553
}
5654

5755
if (a < 0) {
58-
var newMin = b < 0 ? Math.abs(b) : 1;
59-
var newMax = Math.abs(a);
56+
let newMin = b < 0 ? Math.abs(b) : 1;
57+
let newMax = Math.abs(a);
6058
negatives = splitToPatterns(newMin, newMax, tok, options);
6159
a = tok.a = 0;
6260
}
@@ -73,33 +71,35 @@ function toRegexRange(min, max, options) {
7371
tok.result = '(' + tok.result + ')';
7472
}
7573

76-
cache[key] = tok;
74+
toRegexRange.cache[key] = tok;
7775
return tok.result;
7876
}
7977

78+
toRegexRange.cache = {};
79+
8080
function siftPatterns(neg, pos, options) {
81-
var onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];
82-
var onlyPositive = filterPatterns(pos, neg, '', false, options) || [];
83-
var intersected = filterPatterns(neg, pos, '-?', true, options) || [];
84-
var subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);
81+
let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];
82+
let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];
83+
let intersected = filterPatterns(neg, pos, '-?', true, options) || [];
84+
let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);
8585
return subpatterns.join('|');
8686
}
8787

8888
function splitToRanges(min, max) {
8989
min = Number(min);
9090
max = Number(max);
9191

92-
var nines = 1;
93-
var stops = [max];
94-
var stop = +countNines(min, nines);
92+
let nines = 1;
93+
let stops = [max];
94+
let stop = +countNines(min, nines);
9595

9696
while (min <= stop && stop <= max) {
9797
stops = push(stops, stop);
9898
nines += 1;
9999
stop = +countNines(min, nines);
100100
}
101101

102-
var zeros = 1;
102+
let zeros = 1;
103103
stop = countZeros(max + 1, zeros) - 1;
104104

105105
while (min < stop && stop <= max) {
@@ -124,16 +124,16 @@ function rangeToPattern(start, stop, options) {
124124
return {pattern: String(start), digits: []};
125125
}
126126

127-
var zipped = zip(String(start), String(stop));
128-
var len = zipped.length, i = -1;
127+
let zipped = zip(String(start), String(stop));
128+
let len = zipped.length, i = -1;
129129

130-
var pattern = '';
131-
var digits = 0;
130+
let pattern = '';
131+
let digits = 0;
132132

133133
while (++i < len) {
134-
var numbers = zipped[i];
135-
var startDigit = numbers[0];
136-
var stopDigit = numbers[1];
134+
let numbers = zipped[i];
135+
let startDigit = numbers[0];
136+
let stopDigit = numbers[1];
137137

138138
if (startDigit === stopDigit) {
139139
pattern += startDigit;
@@ -154,18 +154,18 @@ function rangeToPattern(start, stop, options) {
154154
}
155155

156156
function splitToPatterns(min, max, tok, options) {
157-
var ranges = splitToRanges(min, max);
158-
var len = ranges.length;
159-
var idx = -1;
157+
let ranges = splitToRanges(min, max);
158+
let len = ranges.length;
159+
let idx = -1;
160160

161-
var tokens = [];
162-
var start = min;
163-
var prev;
161+
let tokens = [];
162+
let start = min;
163+
let prev;
164164

165165
while (++idx < len) {
166-
var range = ranges[idx];
167-
var obj = rangeToPattern(start, range, options);
168-
var zeros = '';
166+
let range = ranges[idx];
167+
let obj = rangeToPattern(start, range, options);
168+
let zeros = '';
169169

170170
if (!tok.isPadded && prev && prev.pattern === obj.pattern) {
171171
if (prev.digits.length > 1) {
@@ -191,11 +191,11 @@ function splitToPatterns(min, max, tok, options) {
191191
}
192192

193193
function filterPatterns(arr, comparison, prefix, intersection, options) {
194-
var res = [];
194+
let res = [];
195195

196-
for (var i = 0; i < arr.length; i++) {
197-
var tok = arr[i];
198-
var ele = tok.string;
196+
for (let i = 0; i < arr.length; i++) {
197+
let tok = arr[i];
198+
let ele = tok.string;
199199

200200
if (options.relaxZeros !== false) {
201201
if (prefix === '-' && ele.charAt(0) === '0') {
@@ -223,8 +223,8 @@ function filterPatterns(arr, comparison, prefix, intersection, options) {
223223
*/
224224

225225
function zip(a, b) {
226-
var arr = [];
227-
for (var ch in a) arr.push([a[ch], b[ch]]);
226+
let arr = [];
227+
for (let ch in a) arr.push([a[ch], b[ch]]);
228228
return arr;
229229
}
230230

@@ -238,7 +238,7 @@ function push(arr, ele) {
238238
}
239239

240240
function contains(arr, key, val) {
241-
for (var i = 0; i < arr.length; i++) {
241+
for (let i = 0; i < arr.length; i++) {
242242
if (arr[i][key] === val) {
243243
return true;
244244
}
@@ -247,16 +247,16 @@ function contains(arr, key, val) {
247247
}
248248

249249
function countNines(min, len) {
250-
return String(min).slice(0, -len) + repeat('9', len);
250+
return String(min).slice(0, -len) + '9'.repeat(len);
251251
}
252252

253253
function countZeros(integer, zeros) {
254254
return integer - (integer % Math.pow(10, zeros));
255255
}
256256

257257
function toQuantifier(digits) {
258-
var start = digits[0];
259-
var stop = digits[1] ? (',' + digits[1]) : '';
258+
let start = digits[0];
259+
let stop = digits[1] ? (',' + digits[1]) : '';
260260
if (!stop && (!start || start === 1)) {
261261
return '';
262262
}
@@ -273,7 +273,7 @@ function padding(str) {
273273

274274
function padZeros(val, tok) {
275275
if (tok.isPadded) {
276-
var diff = Math.abs(tok.maxLen - String(val).length);
276+
let diff = Math.abs(tok.maxLen - String(val).length);
277277
switch (diff) {
278278
case 0:
279279
return '';
@@ -291,4 +291,5 @@ function padZeros(val, tok) {
291291
* Expose `toRegexRange`
292292
*/
293293

294+
toRegexRange.clearCache = () => (toRegexRange.cache = {});
294295
module.exports = toRegexRange;

0 commit comments

Comments
 (0)