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

62 lines
1.2 KiB
JavaScript
Raw Normal View History

import _ from 'lodash';
export default {
type: 'escape',
_render() {
2014-12-20 02:49:11 +00:00
return this.renderLabel(this.label)
.tap(label => {
2014-12-13 18:42:55 +00:00
label.select('rect').attr({
rx: 3,
ry: 3
});
2014-12-11 00:23:14 +00:00
});
2014-12-09 22:43:05 +00:00
},
setup() {
this.code = this.properties.esc.properties.code.textValue;
this.arg = this.properties.esc.properties.arg.textValue;
2014-12-20 02:49:11 +00:00
this.label = _.result(this, this.code);
},
2014-12-09 22:43:05 +00:00
// Escape code mappings
b: 'word boundary',
B: 'non-word boundary',
d: 'digit',
D: 'non-digit',
f: 'form feed',
n: 'line feed',
r: 'carriage return',
s: 'white space',
S: 'non-white space',
t: 'tab',
v: 'vertical tab',
w: 'word',
W: 'non-word',
1: 'Back reference (group = 1)',
2: 'Back reference (group = 2)',
3: 'Back reference (group = 3)',
4: 'Back reference (group = 4)',
5: 'Back reference (group = 5)',
6: 'Back reference (group = 6)',
7: 'Back reference (group = 7)',
8: 'Back reference (group = 8)',
9: 'Back reference (group = 9)',
0() {
if (this.arg) {
2014-12-20 02:49:11 +00:00
return `octal: ${this.arg}`;
2014-12-09 22:43:05 +00:00
} else {
return 'null';
}
},
c() {
2014-12-20 02:49:11 +00:00
return `ctrl-${this.arg}`;
2014-12-09 22:43:05 +00:00
},
x() {
2014-12-20 02:49:11 +00:00
return `0x${this.arg.toUpperCase()}`;
2014-12-09 22:43:05 +00:00
},
u() {
2014-12-20 02:49:11 +00:00
return `U+${this.arg.toUpperCase()}`;
}
};