more reliable toValidIdentifier checking, including reserved words
This commit is contained in:
parent
90ce4e93ed
commit
9fd1ec0596
@ -3,6 +3,10 @@ var _ = require("lodash");
|
|||||||
|
|
||||||
var t = exports;
|
var t = exports;
|
||||||
|
|
||||||
|
t.NATIVE_TYPES_NAMES = ["Array", "Object", "Number", "Boolean", "Date", "Array", "String"];
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
var addAssert = function (type, is) {
|
var addAssert = function (type, is) {
|
||||||
t["assert" + type] = function (node, opts) {
|
t["assert" + type] = function (node, opts) {
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
@ -214,7 +218,7 @@ t.isReferenced = function (node, parent) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
t.isValidIdentifier = function (name) {
|
t.isValidIdentifier = function (name) {
|
||||||
return _.isString(name) && esutils.keyword.isIdentifierName(name) && !esutils.keyword.isKeywordES6(name, true);
|
return _.isString(name) && esutils.keyword.isIdentifierName(name) && !esutils.keyword.isReservedWordES6(name, true);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -227,6 +231,8 @@ t.isValidIdentifier = function (name) {
|
|||||||
t.toIdentifier = function (name) {
|
t.toIdentifier = function (name) {
|
||||||
if (t.isIdentifier(name)) return name.name;
|
if (t.isIdentifier(name)) return name.name;
|
||||||
|
|
||||||
|
name = name + "";
|
||||||
|
|
||||||
// replace all non-valid identifiers with dashes
|
// replace all non-valid identifiers with dashes
|
||||||
name = name.replace(/[^a-zA-Z0-9$_]/g, "-");
|
name = name.replace(/[^a-zA-Z0-9$_]/g, "-");
|
||||||
|
|
||||||
@ -241,6 +247,10 @@ t.toIdentifier = function (name) {
|
|||||||
// remove underscores from start of name
|
// remove underscores from start of name
|
||||||
name = name.replace(/^\_/, "");
|
name = name.replace(/^\_/, "");
|
||||||
|
|
||||||
|
if (!t.isValidIdentifier(name)) {
|
||||||
|
name = "_" + name;
|
||||||
|
}
|
||||||
|
|
||||||
return name || '_';
|
return name || '_';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user