Displaying the hex code of escaped characters
This is only done where appropriate (escapes like "word boundary" don't have a hex value, and displaying it for hex or unicode escapes would be a little redundant).
This commit is contained in:
@@ -4,5 +4,5 @@ import Escape from './escape.js';
|
||||
export default _.extend({}, Escape, {
|
||||
type: 'charset-escape',
|
||||
|
||||
b: ['backspace', 0x08]
|
||||
b: ['backspace', 0x08, true]
|
||||
});
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
import _ from 'lodash';
|
||||
|
||||
function hex(value) {
|
||||
var str = value.toString(16).toUpperCase();
|
||||
|
||||
if (str.length < 2) {
|
||||
str = '0' + str;
|
||||
}
|
||||
|
||||
return `(0x${str})`;
|
||||
}
|
||||
|
||||
export default {
|
||||
type: 'escape',
|
||||
|
||||
@@ -14,48 +24,54 @@ export default {
|
||||
},
|
||||
|
||||
setup() {
|
||||
var addHex;
|
||||
|
||||
this.code = this.properties.esc.properties.code.textValue;
|
||||
this.arg = this.properties.esc.properties.arg.textValue;
|
||||
[this.label, this.ordinal] = _.result(this, this.code);
|
||||
[this.label, this.ordinal, addHex] = _.result(this, this.code);
|
||||
|
||||
if (addHex) {
|
||||
this.label = `${this.label} ${hex(this.ordinal)}`;
|
||||
}
|
||||
},
|
||||
|
||||
// Escape code mappings
|
||||
b: ['word boundary', -1],
|
||||
B: ['non-word boundary', -1],
|
||||
d: ['digit', -1],
|
||||
D: ['non-digit', -1],
|
||||
f: ['form feed', 0x0c],
|
||||
n: ['line feed', 0x0a],
|
||||
r: ['carriage return', 0x0d],
|
||||
s: ['white space', -1],
|
||||
S: ['non-white space', -1],
|
||||
t: ['tab', 0x09],
|
||||
v: ['vertical tab', 0x0b],
|
||||
w: ['word', -1],
|
||||
W: ['non-word', -1],
|
||||
1: ['Back reference (group = 1)', -1],
|
||||
2: ['Back reference (group = 2)', -1],
|
||||
3: ['Back reference (group = 3)', -1],
|
||||
4: ['Back reference (group = 4)', -1],
|
||||
5: ['Back reference (group = 5)', -1],
|
||||
6: ['Back reference (group = 6)', -1],
|
||||
7: ['Back reference (group = 7)', -1],
|
||||
8: ['Back reference (group = 8)', -1],
|
||||
9: ['Back reference (group = 9)', -1],
|
||||
b: ['word boundary', -1, false],
|
||||
B: ['non-word boundary', -1, false],
|
||||
d: ['digit', -1, false],
|
||||
D: ['non-digit', -1, false],
|
||||
f: ['form feed', 0x0c, true],
|
||||
n: ['line feed', 0x0a, true],
|
||||
r: ['carriage return', 0x0d, true],
|
||||
s: ['white space', -1, false],
|
||||
S: ['non-white space', -1, false],
|
||||
t: ['tab', 0x09, true],
|
||||
v: ['vertical tab', 0x0b, true],
|
||||
w: ['word', -1, false],
|
||||
W: ['non-word', -1, false],
|
||||
1: ['Back reference (group = 1)', -1, false],
|
||||
2: ['Back reference (group = 2)', -1, false],
|
||||
3: ['Back reference (group = 3)', -1, false],
|
||||
4: ['Back reference (group = 4)', -1, false],
|
||||
5: ['Back reference (group = 5)', -1, false],
|
||||
6: ['Back reference (group = 6)', -1, false],
|
||||
7: ['Back reference (group = 7)', -1, false],
|
||||
8: ['Back reference (group = 8)', -1, false],
|
||||
9: ['Back reference (group = 9)', -1, false],
|
||||
0() {
|
||||
if (this.arg) {
|
||||
return [`octal: ${this.arg}`, parseInt(this.arg, 8)];
|
||||
return [`octal: ${this.arg}`, parseInt(this.arg, 8), true];
|
||||
} else {
|
||||
return ['null', 0];
|
||||
return ['null', 0, true];
|
||||
}
|
||||
},
|
||||
c() {
|
||||
return [`ctrl-${this.arg.toUpperCase()}`, this.arg.toUpperCase().charCodeAt(0) - 64];
|
||||
return [`ctrl-${this.arg.toUpperCase()}`, this.arg.toUpperCase().charCodeAt(0) - 64, true];
|
||||
},
|
||||
x() {
|
||||
return [`0x${this.arg.toUpperCase()}`, parseInt(this.arg, 16)];
|
||||
return [`0x${this.arg.toUpperCase()}`, parseInt(this.arg, 16), false];
|
||||
},
|
||||
u() {
|
||||
return [`U+${this.arg.toUpperCase()}`, parseInt(this.arg, 16)];
|
||||
return [`U+${this.arg.toUpperCase()}`, parseInt(this.arg, 16), false];
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user