Remove "Node" class from generator, just use module

The Node class was unused as a class
This commit is contained in:
Jordan Klassen 2016-02-03 16:51:10 -08:00
parent 6bb7eb0c78
commit 8fd329a2f4
3 changed files with 39 additions and 65 deletions

View File

@ -3,7 +3,7 @@
import isInteger from "is-integer";
import isNumber from "lodash/lang/isNumber";
import * as t from "babel-types";
import n from "../node";
import * as n from "../node";
const SCIENTIFIC_NOTATION = /e/i;
const ZERO_DECIMAL_INTEGER = /\.0+$/;

View File

@ -2,7 +2,6 @@
import whitespace from "./whitespace";
import * as parens from "./parentheses";
import each from "lodash/collection/each";
import * as t from "babel-types";
function find(obj, node, parent, printStack) {
@ -36,72 +35,47 @@ function isOrHasCallExpression(node) {
}
}
export default class Node {
constructor(node: Object, parent: Object) {
this.parent = parent;
this.node = node;
}
parent: Object;
node: Object;
static isUserWhitespacable(node) {
return t.isUserWhitespacable(node);
}
static needsWhitespace(node, parent, type) {
if (!node) return 0;
if (t.isExpressionStatement(node)) {
node = node.expression;
}
let linesInfo = find(whitespace.nodes, node, parent);
if (!linesInfo) {
let items = find(whitespace.list, node, parent);
if (items) {
for (let i = 0; i < items.length; i++) {
linesInfo = Node.needsWhitespace(items[i], node, type);
if (linesInfo) break;
}
}
}
return (linesInfo && linesInfo[type]) || 0;
}
static needsWhitespaceBefore(node, parent) {
return Node.needsWhitespace(node, parent, "before");
}
static needsWhitespaceAfter(node, parent) {
return Node.needsWhitespace(node, parent, "after");
}
static needsParens(node, parent, printStack) {
if (!parent) return false;
if (t.isNewExpression(parent) && parent.callee === node) {
if (isOrHasCallExpression(node)) return true;
}
return find(parens, node, parent, printStack);
}
export function isUserWhitespacable(node) {
return t.isUserWhitespacable(node);
}
each(Node, function (fn, key) {
Node.prototype[key] = function () {
// Avoid leaking arguments to prevent deoptimization
let args = new Array(arguments.length + 2);
export function needsWhitespace(node, parent, type) {
if (!node) return 0;
args[0] = this.node;
args[1] = this.parent;
if (t.isExpressionStatement(node)) {
node = node.expression;
}
for (let i = 0; i < args.length; i++) {
args[i + 2] = arguments[i];
let linesInfo = find(whitespace.nodes, node, parent);
if (!linesInfo) {
let items = find(whitespace.list, node, parent);
if (items) {
for (let i = 0; i < items.length; i++) {
linesInfo = needsWhitespace(items[i], node, type);
if (linesInfo) break;
}
}
}
return Node[key].apply(null, args);
};
});
return (linesInfo && linesInfo[type]) || 0;
}
export function needsWhitespaceBefore(node, parent) {
return needsWhitespace(node, parent, "before");
}
export function needsWhitespaceAfter(node, parent) {
return needsWhitespace(node, parent, "after");
}
export function needsParens(node, parent, printStack) {
if (!parent) return false;
if (t.isNewExpression(parent) && parent.callee === node) {
if (isOrHasCallExpression(node)) return true;
}
return find(parens, node, parent, printStack);
}

View File

@ -1,6 +1,6 @@
import repeating from "repeating";
import Buffer from "./buffer";
import n from "./node";
import * as n from "./node";
import * as t from "babel-types";
export default class Printer extends Buffer {