regexper-static/src/js/parser/javascript/repeat.js

61 lines
1.1 KiB
JavaScript
Raw Normal View History

export default {
minimum() {
return this._spec.minimum();
},
maximum() {
return this._spec.maximum();
},
greedy() {
2014-12-15 17:43:13 +00:00
return (this._greedy.textValue === '');
},
2014-12-09 23:08:40 +00:00
hasSkip() {
return this.minimum() === 0;
},
2014-12-09 23:08:40 +00:00
hasLoop() {
return this.maximum() === -1 || this.maximum() > 1;
},
2014-12-09 23:08:40 +00:00
contentPosition() {
var x = 0, y = 0;
if (this.hasLoop()) {
x = 10;
}
if (this.hasSkip()) {
y = 10;
x = 15;
}
return Snap.matrix().translate(x, y);
2014-12-15 17:24:32 +00:00
},
label() {
var maximum = this.maximum(),
minimum = this.minimum(),
formatTimes = times => {
if (times === 1) {
return 'once';
} else {
return `${times} times`;
2014-12-15 17:24:32 +00:00
}
};
if (minimum >= 2 && maximum === -1) {
return `${minimum - 1}+ times`;
2014-12-15 17:24:32 +00:00
} else if (minimum <= 1 && maximum >= 2) {
return `at most ${formatTimes(maximum - 1)}`;
2014-12-15 17:24:32 +00:00
} else if (minimum >= 2 && maximum >= 2) {
if (minimum === maximum) {
return formatTimes(minimum - 1);
} else {
return `${minimum - 1}...${formatTimes(maximum - 1)}`;
2014-12-15 17:24:32 +00:00
}
}
}
}