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

72 lines
1.5 KiB
JavaScript
Raw Normal View History

import _ from 'lodash';
export default {
type: 'root',
_render() {
var flagLabels = [];
2014-12-16 15:14:37 +00:00
if (this.flags.global) {
2014-12-16 15:14:37 +00:00
flagLabels.push('Global');
}
if (this.flags.ignore_case) {
2014-12-16 15:14:37 +00:00
flagLabels.push('Ignore Case');
}
if (this.flags.multiline) {
2014-12-16 15:14:37 +00:00
flagLabels.push('Multiline');
}
if (flagLabels.length > 0) {
this.flagText = this.container.text(0, 0, `Flags: ${flagLabels.join(', ')}`);
}
2014-12-04 01:20:08 +00:00
this.start = this.container.circle()
.addClass('pin')
.attr({ r: 5 });
this.end = this.container.circle()
.addClass('pin')
.attr({ r: 5 });
return this.regexp.render(this.container.group())
2014-12-16 03:00:24 +00:00
.then(() => {
2014-12-16 15:14:37 +00:00
var box,
offset = 0;
if (this.flagText) {
offset = this.flagText.getBBox().height;
}
this.regexp.transform(Snap.matrix()
2014-12-16 15:14:37 +00:00
.translate(10, offset));
box = this.regexp.getBBox();
this.start.transform(Snap.matrix()
.translate(0, box.ay));
this.end.transform(Snap.matrix()
.translate(box.x2 + 10, box.ay));
2014-12-15 02:37:56 +00:00
this.container.prepend(
this.container.path(`M${box.ax},${box.ay}H0M${box.ax2},${box.ay}H${box.x2 + 10}`));
2014-12-16 03:00:24 +00:00
});
},
setup() {
var flagsStr;
2014-12-17 20:28:04 +00:00
if (this.properties.flags) {
flagsStr = this.properties.flags.textValue;
} else {
flagsStr = '';
}
this.flags = {
global: /g/.test(flagsStr),
ignore_case: /i/.test(flagsStr),
multiline: /m/.test(flagsStr)
};
this.regexp = this.properties.regexp
}
};