Refactoring property definition code
This commit is contained in:
parent
a0f145ab3d
commit
17a95392a8
@ -3,6 +3,21 @@ import Q from 'q';
|
||||
export default {
|
||||
type: 'charset',
|
||||
|
||||
definedProperties: {
|
||||
_anchor: {
|
||||
get: function() {
|
||||
var box = this.container.getBBox(),
|
||||
matrix = this.transform().localMatrix;
|
||||
|
||||
return {
|
||||
ax: box.x,
|
||||
ax2: box.x2,
|
||||
ay: matrix.y(0, this.partContainer.getBBox().cy)
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_render() {
|
||||
this.partContainer = this.container.group();
|
||||
|
||||
@ -29,18 +44,5 @@ export default {
|
||||
return part.textValue;
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperty(this, '_anchor', {
|
||||
get: function() {
|
||||
var box = this.container.getBBox(),
|
||||
matrix = this.transform().localMatrix;
|
||||
|
||||
return {
|
||||
ax: box.x,
|
||||
ax2: box.x2,
|
||||
ay: matrix.y(0, this.partContainer.getBBox().cy)
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
@ -4,6 +4,22 @@ import Q from 'q';
|
||||
export default {
|
||||
type: 'match',
|
||||
|
||||
definedProperties: {
|
||||
_anchor: {
|
||||
get: function() {
|
||||
var start = this.normalizeBBox(_.first(this.items).getBBox()),
|
||||
end = this.normalizeBBox(_.last(this.items).getBBox()),
|
||||
matrix = this.transform().localMatrix;
|
||||
|
||||
return {
|
||||
ax: matrix.x(start.ax, start.ay),
|
||||
ax2: matrix.x(end.ax2, end.ay),
|
||||
ay: matrix.y(start.ax, start.ay)
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_render() {
|
||||
var start, end,
|
||||
partPromises;
|
||||
@ -66,19 +82,5 @@ export default {
|
||||
if (!this.anchorStart && !this.anchorEnd && this.parts.length === 1) {
|
||||
this.proxy = this.parts[0];
|
||||
}
|
||||
|
||||
Object.defineProperty(this, '_anchor', {
|
||||
get: function() {
|
||||
var start = this.normalizeBBox(_.first(this.items).getBBox()),
|
||||
end = this.normalizeBBox(_.last(this.items).getBBox()),
|
||||
matrix = this.transform().localMatrix;
|
||||
|
||||
return {
|
||||
ax: matrix.x(start.ax, start.ay),
|
||||
ax2: matrix.x(end.ax2, end.ay),
|
||||
ay: matrix.y(start.ax, start.ay)
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
@ -3,6 +3,21 @@ import _ from 'lodash';
|
||||
export default {
|
||||
type: 'match-fragment',
|
||||
|
||||
definedProperties: {
|
||||
_anchor: {
|
||||
get: function() {
|
||||
var anchor = this.content.anchor,
|
||||
matrix = this.transform().localMatrix;
|
||||
|
||||
return _.extend(anchor, {
|
||||
ax: matrix.x(anchor.ax, anchor.ay),
|
||||
ax2: matrix.x(anchor.ax2, anchor.ay),
|
||||
ay: matrix.y(anchor.ax, anchor.ay)
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_render() {
|
||||
return this.content.render(this.container.group())
|
||||
.then(() => {
|
||||
@ -64,18 +79,5 @@ export default {
|
||||
} else {
|
||||
this.proxy = this.content;
|
||||
}
|
||||
|
||||
Object.defineProperty(this, '_anchor', {
|
||||
get: function() {
|
||||
var anchor = this.content.anchor,
|
||||
matrix = this.transform().localMatrix;
|
||||
|
||||
return _.extend(anchor, {
|
||||
ax: matrix.x(anchor.ax, anchor.ay),
|
||||
ax2: matrix.x(anchor.ax2, anchor.ay),
|
||||
ay: matrix.y(anchor.ax, anchor.ay)
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
@ -15,9 +15,14 @@ export default class Node {
|
||||
|
||||
set module(mod) {
|
||||
_.extend(this, mod);
|
||||
|
||||
if (this.setup) {
|
||||
this.setup();
|
||||
}
|
||||
|
||||
_.forOwn(this.definedProperties || {}, (methods, name) => {
|
||||
Object.defineProperty(this, name, methods);
|
||||
});
|
||||
}
|
||||
|
||||
set container(container) {
|
||||
|
@ -7,14 +7,8 @@ function formatTimes(times) {
|
||||
}
|
||||
|
||||
export default {
|
||||
setup() {
|
||||
this.minimum = this.properties.spec.minimum;
|
||||
this.maximum = this.properties.spec.maximum;
|
||||
this.greedy = (this.properties.greedy.textValue === '');
|
||||
this.hasSkip = this.minimum === 0;
|
||||
this.hasLoop = this.maximum === -1 || this.maximum > 1;
|
||||
|
||||
Object.defineProperty(this, 'contentPosition', {
|
||||
definedProperties: {
|
||||
contentPosition: {
|
||||
get: function() {
|
||||
var x = 0, y = 0;
|
||||
|
||||
@ -29,9 +23,9 @@ export default {
|
||||
|
||||
return Snap.matrix().translate(x, y);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
Object.defineProperty(this, 'label', {
|
||||
label: {
|
||||
get: function() {
|
||||
if (this.minimum >= 2 && this.maximum === -1) {
|
||||
return `${this.minimum - 1}+ times`;
|
||||
@ -45,6 +39,14 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
setup() {
|
||||
this.minimum = this.properties.spec.minimum;
|
||||
this.maximum = this.properties.spec.maximum;
|
||||
this.greedy = (this.properties.greedy.textValue === '');
|
||||
this.hasSkip = this.minimum === 0;
|
||||
this.hasLoop = this.maximum === -1 || this.maximum > 1;
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,21 @@ var groupCounter = 1;
|
||||
export default {
|
||||
type: 'subexp',
|
||||
|
||||
definedProperties: {
|
||||
_anchor: {
|
||||
get: function() {
|
||||
var anchor = this.regexp.anchor,
|
||||
matrix = this.transform().localMatrix;
|
||||
|
||||
return _.extend(anchor, {
|
||||
ax: matrix.x(anchor.ax, anchor.ay),
|
||||
ax2: matrix.x(anchor.ax2, anchor.ay),
|
||||
ay: matrix.y(anchor.ax, anchor.ay)
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
labelMap: {
|
||||
'?:': '',
|
||||
'?=': 'positive lookahead',
|
||||
@ -34,18 +49,5 @@ export default {
|
||||
if (!this.label) {
|
||||
this.proxy = this.regexp;
|
||||
}
|
||||
|
||||
Object.defineProperty(this, '_anchor', {
|
||||
get: function() {
|
||||
var anchor = this.regexp.anchor,
|
||||
matrix = this.transform().localMatrix;
|
||||
|
||||
return _.extend(anchor, {
|
||||
ax: matrix.x(anchor.ax, anchor.ay),
|
||||
ax2: matrix.x(anchor.ax2, anchor.ay),
|
||||
ay: matrix.y(anchor.ax, anchor.ay)
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user