typescript-formatter
Version:
Formatter of TypeScript code
91 lines • 3.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var path = require("path");
var fs = require("fs");
var utils_1 = require("../utils");
function makeFormatCodeOptions(fileName, opts, formatSettings) {
var baseDir = opts.baseDir ? path.resolve(opts.baseDir) : path.dirname(path.resolve(fileName));
var configFileName;
if (opts.tslintFile && path.isAbsolute(opts.tslintFile)) {
configFileName = opts.tslintFile;
}
else {
configFileName = utils_1.getConfigFileName(baseDir, opts.tslintFile || "tslint.json");
}
if (!configFileName) {
return formatSettings;
}
if (opts.verbose) {
console.log("read " + configFileName + " for " + fileName);
}
var config = utils_1.parseJSON(fs.readFileSync(configFileName, "utf-8"));
if (!config.rules) {
return formatSettings;
}
if (config.rules.indent && config.rules.indent[0]) {
if (config.rules.indent[1] === "spaces") {
formatSettings.convertTabsToSpaces = true;
}
else if (config.rules.indent[1] === "tabs") {
formatSettings.convertTabsToSpaces = false;
}
}
if (config.rules.whitespace && config.rules.whitespace[0]) {
for (var p in config.rules.whitespace) {
var value = config.rules.whitespace[p];
if (value === "check-branch") {
formatSettings.insertSpaceAfterKeywordsInControlFlowStatements = true;
}
else if (value === "check-decl") {
// none?
}
else if (value === "check-operator") {
formatSettings.insertSpaceBeforeAndAfterBinaryOperators = true;
}
else if (value === "check-separator") {
formatSettings.insertSpaceAfterCommaDelimiter = true;
formatSettings.insertSpaceAfterSemicolonInForStatements = true;
}
else if (value === "check-type") {
// none?
}
else if (value === "check-typecast") {
formatSettings.insertSpaceAfterTypeAssertion = true;
}
}
}
return formatSettings;
}
exports.makeFormatCodeOptions = makeFormatCodeOptions;
function postProcess(fileName, formattedCode, opts, _formatSettings) {
var baseDir = opts.baseDir ? path.resolve(opts.baseDir) : path.dirname(path.resolve(fileName));
var configFileName;
if (opts.tslintFile && path.isAbsolute(opts.tslintFile)) {
configFileName = opts.tslintFile;
}
else {
configFileName = utils_1.getConfigFileName(baseDir, opts.tslintFile || "tslint.json");
}
if (!configFileName) {
return formattedCode;
}
var config = utils_1.parseJSON(fs.readFileSync(configFileName, "utf-8"));
if (!config.rules) {
return formattedCode;
}
var additionalOptions = createDefaultAdditionalFormatCodeSettings();
if (config.rules["no-consecutive-blank-lines"] === true) {
additionalOptions.$noConsecutiveBlankLines = true;
}
if (additionalOptions.$noConsecutiveBlankLines) {
formattedCode = formattedCode.replace(/\n+^$/mg, "\n");
}
return formattedCode;
}
exports.postProcess = postProcess;
function createDefaultAdditionalFormatCodeSettings() {
return {
$noConsecutiveBlankLines: false,
};
}
//# sourceMappingURL=tslintjson.js.map