-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
{ | ||
"name": "regjsparser", | ||
"version": "0.0.2", | ||
"author": "'Juilan Viereck' <[email protected]>", | ||
"author": "'Julian Viereck' <[email protected]>", | ||
"license": "BSD", | ||
"main": "./parser", | ||
"bin": "bin/parser", | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -56,12 +56,12 @@ | |
// CharacterEscape | ||
// CharacterClassEscape | ||
// | ||
// CharacterEscape :: | ||
// CharacterEscape[U] :: | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
mathiasbynens
Author
Collaborator
|
||
// ControlEscape | ||
// c ControlLetter | ||
// HexEscapeSequence | ||
// UnicodeEscapeSequence | ||
// IdentityEscape | ||
// RegExpUnicodeEscapeSequence[?U] (ES6) | ||
// IdentityEscape[?U] | ||
// | ||
// ControlEscape :: | ||
// one of f n r t v | ||
|
@@ -631,7 +631,7 @@ function parse(str) { | |
} else if (res = matchReg(/^[dDsSwW]/)) { | ||
return createEscapedChar(res[0]); | ||
} | ||
return false; | ||
return false; | ||
} | ||
|
||
function parseCharacterEscape() { | ||
|
@@ -644,19 +644,22 @@ function parse(str) { | |
|
||
var res; | ||
if (res = matchReg(/^[fnrtv]/)) { | ||
// ControlEscape | ||
// ControlEscape | ||
return createEscapedChar(res[0]); | ||
} else if (res = matchReg(/^c([a-zA-Z])/)) { | ||
// c ControlLetter | ||
// c ControlLetter | ||
return createEscaped('controlLetter', res[1], 1); | ||
} else if (res = matchReg(/^x([0-9a-fA-F]{2})/)) { | ||
// HexEscapeSequence | ||
// HexEscapeSequence | ||
return createEscaped('hex', res[1], 1); | ||
} else if (res = matchReg(/^u([0-9a-fA-F]{4})/)) { | ||
// UnicodeEscapeSequence | ||
} else if (res = matchReg(/^u([0-9a-fA-F]{4})/)) { | ||
// UnicodeEscapeSequence | ||
return createEscaped('unicode', res[1], 1); | ||
} else if (res = matchReg(/^u\{([0-9a-fA-F]{1,6})\}/)) { | ||
// RegExpUnicodeEscapeSequence (ES6 Unicode code point escape) | ||
return createEscaped('codePoint', res[1], 3); | ||
} else { | ||
// IdentityEscape | ||
// IdentityEscape | ||
return parseIdentityEscape(); | ||
} | ||
} | ||
|
@@ -689,10 +692,10 @@ function parse(str) { | |
} | ||
|
||
if (match(ZWJ)) { | ||
// <ZWJ> | ||
// <ZWJ> | ||
return createEscaped('identifier', ZWJ); | ||
} else if (match(ZWNJ)) { | ||
// <ZWNJ> | ||
// <ZWNJ> | ||
return createEscaped('identifier', ZWNJ); | ||
} | ||
|
||
|
@@ -739,7 +742,7 @@ function parse(str) { | |
function parseHelperClassRanges(atom) { | ||
var from = pos, to, res; | ||
if (current('-') && !next(']')) { | ||
// ClassAtom - ClassAtom ClassRanges | ||
// ClassAtom - ClassAtom ClassRanges | ||
skip('-'); | ||
|
||
res = parseClassAtom(); | ||
|
@@ -777,12 +780,12 @@ function parse(str) { | |
} | ||
|
||
if (current(']')) { | ||
// ClassAtom | ||
// ClassAtom | ||
return [atom]; | ||
} | ||
|
||
// ClassAtom NonemptyClassRangesNoDash | ||
// ClassAtom - ClassAtom ClassRanges | ||
// ClassAtom NonemptyClassRangesNoDash | ||
// ClassAtom - ClassAtom ClassRanges | ||
return parseHelperClassRanges(atom); | ||
} | ||
|
||
|
@@ -801,8 +804,8 @@ function parse(str) { | |
return res; | ||
} | ||
|
||
// ClassAtomNoDash NonemptyClassRangesNoDash | ||
// ClassAtomNoDash - ClassAtom ClassRanges | ||
// ClassAtomNoDash NonemptyClassRangesNoDash | ||
// ClassAtomNoDash - ClassAtom ClassRanges | ||
return parseHelperClassRanges(res); | ||
} | ||
|
||
|
@@ -857,6 +860,8 @@ function nodeToCharCode(node) { | |
switch (node.name) { | ||
case 'unicode': | ||
return parseInt(node.value, 16); | ||
case 'codePoint': | ||
return parseInt(node.value, 16); | ||
case 'controlLetter': | ||
return node.value.charCodeAt(0) % 32; | ||
case 'identifier': | ||
|
What's the purpose of the
[U]
annotation?