add types.toIdentifier

This commit is contained in:
Sebastian McKenzie
2014-11-09 12:07:25 +11:00
parent cd9e289dee
commit ba04377ed8

View File

@@ -1,6 +1,4 @@
var traverse = require("../traverse");
var n = require("ast-types").namedTypes;
var _ = require("lodash");
var _ = require("lodash");
var t = exports;
@@ -86,6 +84,23 @@ t.isReferenced = function (node, parent) {
return false;
};
t.toIdentifier = function (name) {
if (t.isIdentifier(name)) return name.name;
// replace all non-valid identifiers with dashes
name = name.replace(/[^a-zA-Z0-9]/g, "-");
// remove all dashes and numbers from start of name
name = name.replace(/^[-0-9]+/, "");
// camel case
name = name.replace(/[-_\s]+(.)?/g, function (match, c) {
return c ? c.toUpperCase() : "";
});
return name;
};
t.ensureBlock = function (node) {
node.body = t.toBlock(node.body, node);
};
@@ -127,7 +142,7 @@ t.toBlock = function (node, parent) {
}
if (!_.isArray(node)) {
if (!n.Statement.check(node)) {
if (!t.isStatement(node)) {
if (t.isFunction(parent)) {
node = t.returnStatement(node);
} else {