2014-12-06 17:34:00 +00:00
|
|
|
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-06 17:34:00 +00:00
|
|
|
},
|
|
|
|
|
2014-12-09 23:08:40 +00:00
|
|
|
hasSkip() {
|
2014-12-06 17:34:00 +00:00
|
|
|
return this.minimum() === 0;
|
|
|
|
},
|
|
|
|
|
2014-12-09 23:08:40 +00:00
|
|
|
hasLoop() {
|
2014-12-06 17:34:00 +00:00
|
|
|
return this.maximum() === -1 || this.maximum() > 1;
|
|
|
|
},
|
|
|
|
|
2014-12-09 23:08:40 +00:00
|
|
|
contentPosition() {
|
2014-12-15 02:53:54 +00:00
|
|
|
var x = 0, y = 0;
|
2014-12-06 17:34:00 +00:00
|
|
|
|
2014-12-10 22:14:14 +00:00
|
|
|
if (this.hasLoop()) {
|
|
|
|
x = 10;
|
2014-12-06 17:34:00 +00:00
|
|
|
}
|
|
|
|
|
2014-12-10 22:14:14 +00:00
|
|
|
if (this.hasSkip()) {
|
2014-12-15 02:53:54 +00:00
|
|
|
y = 10;
|
2014-12-06 17:34:00 +00:00
|
|
|
x = 15;
|
|
|
|
}
|
|
|
|
|
2014-12-15 02:53:54 +00:00
|
|
|
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';
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
if (minimum >= 2 && maximum === -1) {
|
|
|
|
return (minimum - 1) + '+ times';
|
|
|
|
} else if (minimum <= 1 && maximum >= 2) {
|
|
|
|
return 'at most ' + formatTimes(maximum - 1);
|
|
|
|
} else if (minimum >= 2 && maximum >= 2) {
|
|
|
|
if (minimum === maximum) {
|
|
|
|
return formatTimes(minimum - 1);
|
|
|
|
} else {
|
|
|
|
return (minimum - 1) + '...' + formatTimes(maximum - 1);
|
|
|
|
}
|
|
|
|
}
|
2014-12-06 17:34:00 +00:00
|
|
|
}
|
|
|
|
}
|