Some cleanup of Match and MatchFragment in prep for tests
This commit is contained in:
parent
f264eee5f9
commit
e11058688f
@ -8,8 +8,8 @@ export default {
|
||||
definedProperties: {
|
||||
_anchor: {
|
||||
get: function() {
|
||||
var start = util.normalizeBBox(_.first(this.items).getBBox()),
|
||||
end = util.normalizeBBox(_.last(this.items).getBBox()),
|
||||
var start = util.normalizeBBox(this.start.getBBox()),
|
||||
end = util.normalizeBBox(this.end.getBBox()),
|
||||
matrix = this.transform().localMatrix;
|
||||
|
||||
return {
|
||||
@ -43,7 +43,9 @@ export default {
|
||||
.then(items => {
|
||||
var prev, next, paths;
|
||||
|
||||
this.items = items;
|
||||
this.start = _.first(items);
|
||||
this.end = _.last(items);
|
||||
|
||||
util.spaceHorizontally(items, {
|
||||
padding: 10
|
||||
});
|
||||
|
@ -21,37 +21,19 @@ export default {
|
||||
_render() {
|
||||
return this.content.render(this.container.group())
|
||||
.then(() => {
|
||||
var box, paths = [];
|
||||
var box, paths;
|
||||
|
||||
this.content.transform(this.repeat.contentPosition);
|
||||
|
||||
box = this.content.getBBox();
|
||||
|
||||
if (this.repeat.hasSkip) {
|
||||
let vert = Math.max(0, box.ay - box.y - 10),
|
||||
horiz = box.width - 10;
|
||||
paths = _.flatten([
|
||||
this.skipPath(box),
|
||||
this.loopPath(box)
|
||||
]);
|
||||
|
||||
paths.push(`M0,${box.ay}q10,0 10,-10v${-vert}q0,-10 10,-10h${horiz}q10,0 10,10v${vert}q0,10 10,10`);
|
||||
|
||||
if (!this.repeat.greedy) {
|
||||
paths.push(`M10,${box.ay - 15}l5,5m-5,-5l-5,5`);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.repeat.hasLoop) {
|
||||
let vert = box.y2 - box.ay - 10;
|
||||
|
||||
paths.push(`M${box.x},${box.ay}q-10,0 -10,10v${vert}q0,10 10,10h${box.width}q10,0 10,-10v${-vert}q0,-10 -10,-10`);
|
||||
|
||||
if (this.repeat.greedy) {
|
||||
paths.push(`M${box.x2 + 10},${box.ay + 15}l5,-5m-5,5l-5,-5`);
|
||||
}
|
||||
}
|
||||
|
||||
if (paths.length) {
|
||||
this.container.prepend(
|
||||
this.container.path(paths.join('')));
|
||||
}
|
||||
})
|
||||
.then(() => {
|
||||
var labelStr = this.repeat.label,
|
||||
@ -70,13 +52,45 @@ export default {
|
||||
});
|
||||
},
|
||||
|
||||
skipPath(box) {
|
||||
var paths = [];
|
||||
|
||||
if (this.repeat.hasSkip) {
|
||||
let vert = Math.max(0, box.ay - box.y - 10),
|
||||
horiz = box.width - 10;
|
||||
|
||||
paths.push(`M0,${box.ay}q10,0 10,-10v${-vert}q0,-10 10,-10h${horiz}q10,0 10,10v${vert}q0,10 10,10`);
|
||||
|
||||
if (!this.repeat.greedy) {
|
||||
paths.push(`M10,${box.ay - 15}l5,5m-5,-5l-5,5`);
|
||||
}
|
||||
}
|
||||
|
||||
return paths;
|
||||
},
|
||||
|
||||
loopPath(box) {
|
||||
var paths = [];
|
||||
|
||||
if (this.repeat.hasLoop) {
|
||||
let vert = box.y2 - box.ay - 10;
|
||||
|
||||
paths.push(`M${box.x},${box.ay}q-10,0 -10,10v${vert}q0,10 10,10h${box.width}q10,0 10,-10v${-vert}q0,-10 -10,-10`);
|
||||
|
||||
if (this.repeat.greedy) {
|
||||
paths.push(`M${box.x2 + 10},${box.ay + 15}l5,-5m-5,5l-5,-5`);
|
||||
}
|
||||
}
|
||||
|
||||
return paths;
|
||||
},
|
||||
|
||||
setup() {
|
||||
this.content = this.properties.content;
|
||||
this.canMerge = (this.elements[0].type === 'literal' && this.elements[1].textValue === '');
|
||||
|
||||
if (this.properties.repeat.textValue !== '') {
|
||||
this.repeat = this.properties.repeat;
|
||||
} else {
|
||||
|
||||
if (!this.repeat.hasLoop && !this.repeat.hasSkip) {
|
||||
this.proxy = this.content;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user