Skip to content

Commit 6096614

Browse files
committed
Start linting our js code
1 parent e4a97b3 commit 6096614

File tree

10 files changed

+442
-417
lines changed

10 files changed

+442
-417
lines changed

.eslintrc.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
env:
2+
es6: true
3+
node: true
4+
extends: 'eslint:recommended'
5+
rules:
6+
indent:
7+
- error
8+
- 2
9+
linebreak-style:
10+
- error
11+
- unix
12+
quotes:
13+
- error
14+
- single
15+
semi:
16+
- error
17+
- always

dsl/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
const { RangeList } = require('./rangelist');
22

33
function ranges_without(ranges, excludes='') {
4-
var ranges = RangeList.parseFromString(ranges, excludes);
5-
return ranges.re;
4+
ranges = RangeList.parseFromString(ranges, excludes);
5+
return ranges.re;
66
}
77

88
module.exports = {
9-
ranges_without: ranges_without
9+
ranges_without: ranges_without
1010
};

dsl/range.js

Lines changed: 70 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,94 @@
11
/**
22
* Range
3-
*
3+
*
44
* This class models a single character range with start and end point.
55
* It can compute the remaining Ranges when doing a set-diff against
66
* another range.
77
* It serializes toString as a Regexp character range fragment, a-b.
88
*/
99

1010
class Range {
11-
constructor(start, end=undefined) {
12-
end = end || start;
13-
if (typeof start === 'string') {
14-
start = start.codePointAt(0)
15-
}
16-
if (typeof end === 'string') {
17-
end = end.codePointAt(0)
18-
}
19-
this.start = start;
20-
this.end = end;
11+
constructor(start, end=undefined) {
12+
end = end || start;
13+
if (typeof start === 'string') {
14+
start = start.codePointAt(0);
15+
}
16+
if (typeof end === 'string') {
17+
end = end.codePointAt(0);
2118
}
19+
this.start = start;
20+
this.end = end;
21+
}
2222

23-
*setdiff(other) {
24-
if (!other) {
25-
yield {value: this, done: true};
26-
return;
23+
*setdiff(other) {
24+
if (!other) {
25+
yield {value: this, done: true};
26+
return;
27+
}
28+
if (other.start <= this.start) {
29+
// handle left side
30+
if (other.end < this.start) {
31+
// the other range has no overlap
32+
yield {value: this, done: false};
33+
}
34+
else {
35+
if (other.end < this.end) {
36+
// yield remaining range of the right side
37+
yield {value: new Range(other.end + 1, this.end), done: false};
2738
}
28-
if (other.start <= this.start) {
29-
// handle left side
30-
if (other.end < this.start) {
31-
// the other range has no overlap
32-
yield {value: this, done: false};
33-
}
34-
else {
35-
if (other.end < this.end) {
36-
// yield remaining range of the right side
37-
yield {value: new Range(other.end + 1, this.end), done: false};
38-
}
39-
else {
40-
// we're completely excluded
41-
yield {value: null, done: true};
42-
}
43-
}
39+
else {
40+
// we're completely excluded
41+
yield {value: null, done: true};
42+
}
43+
}
44+
}
45+
else {
46+
if (other.start > this.end) {
47+
// other range is not overlapping
48+
// yield done to terminate, other_done to signal other to move forward
49+
yield {value: this, done: true};
50+
}
51+
else {
52+
// start with yielding our left side
53+
yield {
54+
value: new Range(this.start, other.start - 1),
55+
done: true
56+
};
57+
if (other.end < this.end) {
58+
// we have a trailing fragment
59+
// check trailing fragment against more others
60+
yield {
61+
value: new Range(other.end + 1, this.end),
62+
done: false
63+
};
4464
}
4565
else {
46-
if (other.start > this.end) {
47-
// other range is not overlapping
48-
// yield done to terminate, other_done to signal other to move forward
49-
yield {value: this, done: true};
50-
}
51-
else {
52-
// start with yielding our left side
53-
yield {
54-
value: new Range(this.start, other.start - 1),
55-
done: true
56-
};
57-
if (other.end < this.end) {
58-
// we have a trailing fragment
59-
// check trailing fragment against more others
60-
yield {
61-
value: new Range(other.end + 1, this.end),
62-
done: false
63-
};
64-
}
65-
else {
66-
// no trailing fragment
67-
// nothing to be done
68-
}
69-
}
66+
// no trailing fragment
67+
// nothing to be done
7068
}
69+
}
7170
}
71+
}
7272

73-
toString() {
74-
if (this.start === this.end) {
75-
return this.char(this.start );
76-
}
77-
return `${ this.char(this.start )}-${ this.char(this.end )}`;
73+
toString() {
74+
if (this.start === this.end) {
75+
return this.char(this.start );
7876
}
77+
return `${ this.char(this.start )}-${ this.char(this.end )}`;
78+
}
7979

80-
char(codepoint) {
81-
let char = String.fromCodePoint(codepoint);
82-
switch (char) {
83-
case '.':
84-
case '[':
85-
case ']':
86-
char = '\\' + char;
87-
}
88-
return char;
80+
char(codepoint) {
81+
let char = String.fromCodePoint(codepoint);
82+
switch (char) {
83+
case '.':
84+
case '[':
85+
case ']':
86+
char = '\\' + char;
8987
}
88+
return char;
89+
}
9090
}
9191

9292
module.exports = {
93-
Range: Range
93+
Range: Range
9494
};

dsl/rangelist.js

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -8,80 +8,80 @@
88
const { Range } = require('./range');
99

1010
class RangeList extends Array {
11-
static parseFromString(ranges, excludes='') {
12-
var range_objects = [];
13-
var range_re = /^.-./;
14-
while (ranges) {
15-
if (range_re.test(ranges)) {
16-
range_objects.push(new Range(ranges[0], ranges[2]));
17-
ranges = ranges.substr(3);
18-
}
19-
else {
20-
range_objects.push(new Range(ranges[0]));
21-
ranges = ranges.substr(1);
22-
}
23-
}
24-
range_objects.sort((a, b) => a.start - b.start);
25-
var rangelist = new RangeList();
26-
while (range_objects.length) {
27-
var range = range_objects.shift();
28-
rangelist.push(range);
29-
if (!range_objects) {
30-
break;
31-
}
32-
while (range_objects.length && range.end + 1 >= range_objects[0].start) {
33-
var other_range = range_objects.shift();
34-
range.end = Math.max(range.end, other_range.end);
35-
}
36-
}
37-
if (excludes) {
38-
rangelist = new RangeList(
39-
...rangelist.setdiff(RangeList.parseFromString(excludes))
40-
);
41-
}
42-
return rangelist;
11+
static parseFromString(ranges, excludes='') {
12+
var range_objects = [];
13+
var range_re = /^.-./;
14+
while (ranges) {
15+
if (range_re.test(ranges)) {
16+
range_objects.push(new Range(ranges[0], ranges[2]));
17+
ranges = ranges.substr(3);
18+
}
19+
else {
20+
range_objects.push(new Range(ranges[0]));
21+
ranges = ranges.substr(1);
22+
}
23+
}
24+
range_objects.sort((a, b) => a.start - b.start);
25+
var rangelist = new RangeList();
26+
while (range_objects.length) {
27+
var range = range_objects.shift();
28+
rangelist.push(range);
29+
if (!range_objects) {
30+
break;
31+
}
32+
while (range_objects.length && range.end + 1 >= range_objects[0].start) {
33+
var other_range = range_objects.shift();
34+
range.end = Math.max(range.end, other_range.end);
35+
}
36+
}
37+
if (excludes) {
38+
rangelist = new RangeList(
39+
...rangelist.setdiff(RangeList.parseFromString(excludes))
40+
);
4341
}
42+
return rangelist;
43+
}
4444

45-
*setdiff(other_list) {
46-
if (!other_list) {
47-
for (const range of this) {
48-
yield range;
49-
}
50-
return;
45+
*setdiff(other_list) {
46+
if (!other_list) {
47+
for (const range of this) {
48+
yield range;
49+
}
50+
return;
51+
}
52+
const this_iter = this[Symbol.iterator]();
53+
const other_iter = other_list[Symbol.iterator]();
54+
let {value: range, done: range_done} = this_iter.next();
55+
let {value: other} = other_iter.next();
56+
// console.log(this.map(r => r+''),other_list.map(r => r+''))
57+
while (range && !range_done) {
58+
let value, done;
59+
for ({value, done} of range.setdiff(other)) {
60+
if (done && value) {
61+
yield value;
5162
}
52-
const this_iter = this[Symbol.iterator]();
53-
const other_iter = other_list[Symbol.iterator]();
54-
let {value: range, done: range_done} = this_iter.next();
55-
let {value: other, done: other_done} = other_iter.next();
56-
// console.log(this.map(r => r+''),other_list.map(r => r+''))
57-
while (range && !range_done) {
58-
let value, done;
59-
for ({value, done} of range.setdiff(other)) {
60-
if (done && value) {
61-
yield value;
62-
}
63-
else {
64-
break;
65-
}
66-
}
67-
if (range && other && range.end + 1 >= other.end) {
68-
({value: other, done: other_done} = other_iter.next());
69-
}
70-
if (done) {
71-
({value: range, done: range_done} = this_iter.next());
72-
}
73-
else {
74-
range = value;
75-
}
63+
else {
64+
break;
7665
}
77-
66+
}
67+
if (range && other && range.end + 1 >= other.end) {
68+
({value: other} = other_iter.next());
69+
}
70+
if (done) {
71+
({value: range, done: range_done} = this_iter.next());
72+
}
73+
else {
74+
range = value;
75+
}
7876
}
7977

80-
get re() {
81-
return new RegExp('[' + this.join('') + ']');
82-
}
78+
}
79+
80+
get re() {
81+
return new RegExp('[' + this.join('') + ']');
82+
}
8383
}
8484

8585
module.exports = {
86-
RangeList: RangeList
86+
RangeList: RangeList
8787
};

0 commit comments

Comments
 (0)