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:
parent
80e96c7bd3
commit
1170a1be76
@ -5,21 +5,21 @@ import Snap from 'snapsvg';
|
|||||||
describe('parser/javascript/charset_escape.js', function() {
|
describe('parser/javascript/charset_escape.js', function() {
|
||||||
|
|
||||||
_.forIn({
|
_.forIn({
|
||||||
'\\b': { label: 'backspace', ordinal: 0x08 },
|
'\\b': { label: 'backspace (0x08)', ordinal: 0x08 },
|
||||||
'\\d': { label: 'digit', ordinal: -1 },
|
'\\d': { label: 'digit', ordinal: -1 },
|
||||||
'\\D': { label: 'non-digit', ordinal: -1 },
|
'\\D': { label: 'non-digit', ordinal: -1 },
|
||||||
'\\f': { label: 'form feed', ordinal: 0x0c },
|
'\\f': { label: 'form feed (0x0C)', ordinal: 0x0c },
|
||||||
'\\n': { label: 'line feed', ordinal: 0x0a },
|
'\\n': { label: 'line feed (0x0A)', ordinal: 0x0a },
|
||||||
'\\r': { label: 'carriage return', ordinal: 0x0d },
|
'\\r': { label: 'carriage return (0x0D)', ordinal: 0x0d },
|
||||||
'\\s': { label: 'white space', ordinal: -1 },
|
'\\s': { label: 'white space', ordinal: -1 },
|
||||||
'\\S': { label: 'non-white space', ordinal: -1 },
|
'\\S': { label: 'non-white space', ordinal: -1 },
|
||||||
'\\t': { label: 'tab', ordinal: 0x09 },
|
'\\t': { label: 'tab (0x09)', ordinal: 0x09 },
|
||||||
'\\v': { label: 'vertical tab', ordinal: 0x0b },
|
'\\v': { label: 'vertical tab (0x0B)', ordinal: 0x0b },
|
||||||
'\\w': { label: 'word', ordinal: -1 },
|
'\\w': { label: 'word', ordinal: -1 },
|
||||||
'\\W': { label: 'non-word', ordinal: -1 },
|
'\\W': { label: 'non-word', ordinal: -1 },
|
||||||
'\\0': { label: 'null', ordinal: 0 },
|
'\\0': { label: 'null (0x00)', ordinal: 0 },
|
||||||
'\\012': { label: 'octal: 12', ordinal: 10 },
|
'\\012': { label: 'octal: 12 (0x0A)', ordinal: 10 },
|
||||||
'\\cx': { label: 'ctrl-X', ordinal: 24 },
|
'\\cx': { label: 'ctrl-X (0x18)', ordinal: 24 },
|
||||||
'\\xab': { label: '0xAB', ordinal: 0xab },
|
'\\xab': { label: '0xAB', ordinal: 0xab },
|
||||||
'\\uabcd': { label: 'U+ABCD', ordinal: 0xabcd }
|
'\\uabcd': { label: 'U+ABCD', ordinal: 0xabcd }
|
||||||
}, (content, str) => {
|
}, (content, str) => {
|
||||||
|
@ -9,16 +9,16 @@ describe('parser/javascript/escape.js', function() {
|
|||||||
'\\B': { label: 'non-word boundary', ordinal: -1 },
|
'\\B': { label: 'non-word boundary', ordinal: -1 },
|
||||||
'\\d': { label: 'digit', ordinal: -1 },
|
'\\d': { label: 'digit', ordinal: -1 },
|
||||||
'\\D': { label: 'non-digit', ordinal: -1 },
|
'\\D': { label: 'non-digit', ordinal: -1 },
|
||||||
'\\f': { label: 'form feed', ordinal: 0x0c },
|
'\\f': { label: 'form feed (0x0C)', ordinal: 0x0c },
|
||||||
'\\n': { label: 'line feed', ordinal: 0x0a },
|
'\\n': { label: 'line feed (0x0A)', ordinal: 0x0a },
|
||||||
'\\r': { label: 'carriage return', ordinal: 0x0d },
|
'\\r': { label: 'carriage return (0x0D)', ordinal: 0x0d },
|
||||||
'\\s': { label: 'white space', ordinal: -1 },
|
'\\s': { label: 'white space', ordinal: -1 },
|
||||||
'\\S': { label: 'non-white space', ordinal: -1 },
|
'\\S': { label: 'non-white space', ordinal: -1 },
|
||||||
'\\t': { label: 'tab', ordinal: 0x09 },
|
'\\t': { label: 'tab (0x09)', ordinal: 0x09 },
|
||||||
'\\v': { label: 'vertical tab', ordinal: 0x0b },
|
'\\v': { label: 'vertical tab (0x0B)', ordinal: 0x0b },
|
||||||
'\\w': { label: 'word', ordinal: -1 },
|
'\\w': { label: 'word', ordinal: -1 },
|
||||||
'\\W': { label: 'non-word', ordinal: -1 },
|
'\\W': { label: 'non-word', ordinal: -1 },
|
||||||
'\\0': { label: 'null', ordinal: 0 },
|
'\\0': { label: 'null (0x00)', ordinal: 0 },
|
||||||
'\\1': { label: 'Back reference (group = 1)', ordinal: -1 },
|
'\\1': { label: 'Back reference (group = 1)', ordinal: -1 },
|
||||||
'\\2': { label: 'Back reference (group = 2)', ordinal: -1 },
|
'\\2': { label: 'Back reference (group = 2)', ordinal: -1 },
|
||||||
'\\3': { label: 'Back reference (group = 3)', ordinal: -1 },
|
'\\3': { label: 'Back reference (group = 3)', ordinal: -1 },
|
||||||
@ -28,8 +28,8 @@ describe('parser/javascript/escape.js', function() {
|
|||||||
'\\7': { label: 'Back reference (group = 7)', ordinal: -1 },
|
'\\7': { label: 'Back reference (group = 7)', ordinal: -1 },
|
||||||
'\\8': { label: 'Back reference (group = 8)', ordinal: -1 },
|
'\\8': { label: 'Back reference (group = 8)', ordinal: -1 },
|
||||||
'\\9': { label: 'Back reference (group = 9)', ordinal: -1 },
|
'\\9': { label: 'Back reference (group = 9)', ordinal: -1 },
|
||||||
'\\012': { label: 'octal: 12', ordinal: 10 },
|
'\\012': { label: 'octal: 12 (0x0A)', ordinal: 10 },
|
||||||
'\\cx': { label: 'ctrl-X', ordinal: 24 },
|
'\\cx': { label: 'ctrl-X (0x18)', ordinal: 24 },
|
||||||
'\\xab': { label: '0xAB', ordinal: 0xab },
|
'\\xab': { label: '0xAB', ordinal: 0xab },
|
||||||
'\\uabcd': { label: 'U+ABCD', ordinal: 0xabcd }
|
'\\uabcd': { label: 'U+ABCD', ordinal: 0xabcd }
|
||||||
}, (content, str) => {
|
}, (content, str) => {
|
||||||
|
@ -4,5 +4,5 @@ import Escape from './escape.js';
|
|||||||
export default _.extend({}, Escape, {
|
export default _.extend({}, Escape, {
|
||||||
type: 'charset-escape',
|
type: 'charset-escape',
|
||||||
|
|
||||||
b: ['backspace', 0x08]
|
b: ['backspace', 0x08, true]
|
||||||
});
|
});
|
||||||
|
@ -1,5 +1,15 @@
|
|||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
|
||||||
|
function hex(value) {
|
||||||
|
var str = value.toString(16).toUpperCase();
|
||||||
|
|
||||||
|
if (str.length < 2) {
|
||||||
|
str = '0' + str;
|
||||||
|
}
|
||||||
|
|
||||||
|
return `(0x${str})`;
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
type: 'escape',
|
type: 'escape',
|
||||||
|
|
||||||
@ -14,48 +24,54 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
|
var addHex;
|
||||||
|
|
||||||
this.code = this.properties.esc.properties.code.textValue;
|
this.code = this.properties.esc.properties.code.textValue;
|
||||||
this.arg = this.properties.esc.properties.arg.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
|
// Escape code mappings
|
||||||
b: ['word boundary', -1],
|
b: ['word boundary', -1, false],
|
||||||
B: ['non-word boundary', -1],
|
B: ['non-word boundary', -1, false],
|
||||||
d: ['digit', -1],
|
d: ['digit', -1, false],
|
||||||
D: ['non-digit', -1],
|
D: ['non-digit', -1, false],
|
||||||
f: ['form feed', 0x0c],
|
f: ['form feed', 0x0c, true],
|
||||||
n: ['line feed', 0x0a],
|
n: ['line feed', 0x0a, true],
|
||||||
r: ['carriage return', 0x0d],
|
r: ['carriage return', 0x0d, true],
|
||||||
s: ['white space', -1],
|
s: ['white space', -1, false],
|
||||||
S: ['non-white space', -1],
|
S: ['non-white space', -1, false],
|
||||||
t: ['tab', 0x09],
|
t: ['tab', 0x09, true],
|
||||||
v: ['vertical tab', 0x0b],
|
v: ['vertical tab', 0x0b, true],
|
||||||
w: ['word', -1],
|
w: ['word', -1, false],
|
||||||
W: ['non-word', -1],
|
W: ['non-word', -1, false],
|
||||||
1: ['Back reference (group = 1)', -1],
|
1: ['Back reference (group = 1)', -1, false],
|
||||||
2: ['Back reference (group = 2)', -1],
|
2: ['Back reference (group = 2)', -1, false],
|
||||||
3: ['Back reference (group = 3)', -1],
|
3: ['Back reference (group = 3)', -1, false],
|
||||||
4: ['Back reference (group = 4)', -1],
|
4: ['Back reference (group = 4)', -1, false],
|
||||||
5: ['Back reference (group = 5)', -1],
|
5: ['Back reference (group = 5)', -1, false],
|
||||||
6: ['Back reference (group = 6)', -1],
|
6: ['Back reference (group = 6)', -1, false],
|
||||||
7: ['Back reference (group = 7)', -1],
|
7: ['Back reference (group = 7)', -1, false],
|
||||||
8: ['Back reference (group = 8)', -1],
|
8: ['Back reference (group = 8)', -1, false],
|
||||||
9: ['Back reference (group = 9)', -1],
|
9: ['Back reference (group = 9)', -1, false],
|
||||||
0() {
|
0() {
|
||||||
if (this.arg) {
|
if (this.arg) {
|
||||||
return [`octal: ${this.arg}`, parseInt(this.arg, 8)];
|
return [`octal: ${this.arg}`, parseInt(this.arg, 8), true];
|
||||||
} else {
|
} else {
|
||||||
return ['null', 0];
|
return ['null', 0, true];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
c() {
|
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() {
|
x() {
|
||||||
return [`0x${this.arg.toUpperCase()}`, parseInt(this.arg, 16)];
|
return [`0x${this.arg.toUpperCase()}`, parseInt(this.arg, 16), false];
|
||||||
},
|
},
|
||||||
u() {
|
u() {
|
||||||
return [`U+${this.arg.toUpperCase()}`, parseInt(this.arg, 16)];
|
return [`U+${this.arg.toUpperCase()}`, parseInt(this.arg, 16), false];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user