autoindentation - fixes #467

This commit is contained in:
Sebastian McKenzie
2015-01-21 23:33:57 +11:00
parent ac891bebaa
commit 546a44d1d7
8 changed files with 53 additions and 11 deletions

View File

@@ -7,21 +7,22 @@ module.exports = function (ast, opts, code) {
module.exports.CodeGenerator = CodeGenerator;
var Whitespace = require("./whitespace");
var SourceMap = require("./source-map");
var Position = require("./position");
var Buffer = require("./buffer");
var util = require("../util");
var n = require("./node");
var t = require("../types");
var _ = require("lodash");
var detectIndent = require("detect-indent");
var Whitespace = require("./whitespace");
var SourceMap = require("./source-map");
var Position = require("./position");
var Buffer = require("./buffer");
var util = require("../util");
var n = require("./node");
var t = require("../types");
var _ = require("lodash");
function CodeGenerator(ast, opts, code) {
opts = opts || {};
this.comments = ast.comments || [];
this.tokens = ast.tokens || [];
this.format = CodeGenerator.normaliseOptions(opts);
this.format = CodeGenerator.normaliseOptions(code, opts);
this.ast = ast;
this.whitespace = new Whitespace(this.tokens, this.comments);
@@ -36,14 +37,18 @@ _.each(Buffer.prototype, function (fn, key) {
};
});
CodeGenerator.normaliseOptions = function (opts) {
CodeGenerator.normaliseOptions = function (code, opts) {
var indent = detectIndent(code);
var style = indent.indent;
if (!style || style === " ") style = " ";
return _.merge({
parentheses: true,
comments: opts.comments == null || opts.comments,
compact: false,
indent: {
adjustMultilineComment: true,
style: " ",
style: style,
base: 0
}
}, opts.format || {});