Skip to content

Commit

Permalink
feat(tsfmt): pass Options object to providers
Browse files Browse the repository at this point in the history
  • Loading branch information
vvakame committed Sep 22, 2015
1 parent c55b1fd commit c425bac
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 51 deletions.
16 changes: 11 additions & 5 deletions lib/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,17 @@ let root = commandpost
let tslint = !!opts.tslint;
let editorconfig = !!opts.editorconfig;
let tsfmt = !!opts.tsfmt;
let verbose = !!opts.verbose;

let files = args.files;
let useTsconfig = false;
if (files.length === 0) {
let configFileName = getConfigFileName(process.cwd(), "tsconfig.json");
if (configFileName) {
files = readFilesFromTsconfig(configFileName);
if (verbose) {
console.log(`read: ${configFileName}`);
}
useTsconfig = true;
}
}
Expand All @@ -56,7 +60,7 @@ let root = commandpost
return;
}

if (opts.verbose) {
if (verbose) {
console.log("replace: " + (replace ? "ON" : "OFF"));
console.log("verify: " + (verify ? "ON" : "OFF"));
console.log("stdin: " + (stdin ? "ON" : "OFF"));
Expand All @@ -66,8 +70,8 @@ let root = commandpost
console.log("tsfmt: " + (tsfmt ? "ON" : "OFF"));
}

if (opts.stdin) {
if (opts.replace) {
if (stdin) {
if (replace) {
errorHandler("--stdin option can not use with --replace option");
return;
}
Expand All @@ -77,7 +81,8 @@ let root = commandpost
verify: verify,
tslint: tslint,
editorconfig: editorconfig,
tsfmt: tsfmt
tsfmt: tsfmt,
verbose: verbose
})
.then(result => {
let resultMap: lib.ResultMap = {};
Expand All @@ -93,7 +98,8 @@ let root = commandpost
verify: verify,
tslint: tslint,
editorconfig: editorconfig,
tsfmt: tsfmt
tsfmt: tsfmt,
verbose: verbose
})
.then(showResultHandler)
.catch(errorHandler);
Expand Down
12 changes: 6 additions & 6 deletions lib/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,22 +82,22 @@ export function processStream(fileName: string, input: NodeJS.ReadableStream, op
export function processString(fileName: string, content: string, opts: Options): Promise<Result> {
"use strict";

let options = createDefaultFormatCodeOptions();
let formatOptions = createDefaultFormatCodeOptions();
let optGenPromises: (ts.FormatCodeOptions | Promise<ts.FormatCodeOptions>)[] = [];
if (opts.tsfmt) {
optGenPromises.push(base(fileName, options));
optGenPromises.push(base(fileName, opts, formatOptions));
}
if (opts.editorconfig) {
optGenPromises.push(editorconfig(fileName, options));
optGenPromises.push(editorconfig(fileName, opts, formatOptions));
}
if (opts.tslint) {
optGenPromises.push(tslintjson(fileName, options));
optGenPromises.push(tslintjson(fileName, opts, formatOptions));
}

return Promise
.all(optGenPromises)
.then(() => {
let formattedCode = formatter(fileName, content, options);
let formattedCode = formatter(fileName, content, formatOptions);
if ((<any>formattedCode).trimRight) {
formattedCode = (<any>formattedCode).trimRight();
formattedCode += "\n";
Expand All @@ -122,7 +122,7 @@ export function processString(fileName: string, content: string, opts: Options):

let result: Result = {
fileName: fileName,
options: options,
options: formatOptions,
message: message,
error: error,
src: content,
Expand Down
39 changes: 21 additions & 18 deletions lib/provider/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import * as ts from "typescript";
import * as path from "path";
import * as fs from "fs";

import {Options} from "../";
import {getConfigFileName} from "../utils";

interface TsfmtSettings {
Expand Down Expand Up @@ -33,56 +34,58 @@ interface TsfmtSettings {
convertTabsToSpaces?: boolean;
}

export default function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOptions): ts.FormatCodeOptions {
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): ts.FormatCodeOptions {
"use strict";

var configFileName = getConfigFileName(path.dirname(path.resolve(fileName)), "tsfmt.json");
if (!configFileName) {
return options;
return formatOptions;
}

if (opts.verbose) {
console.log(`read ${configFileName}`);
}
// console.log("base makeFormatCodeOptions");
// console.log("read " + configFileName);

var config: TsfmtSettings = JSON.parse(<any>fs.readFileSync(configFileName, "utf-8"));
if (typeof config.insertSpaceAfterCommaDelimiter === "boolean") {
options.InsertSpaceAfterCommaDelimiter = config.insertSpaceAfterCommaDelimiter;
formatOptions.InsertSpaceAfterCommaDelimiter = config.insertSpaceAfterCommaDelimiter;
}
if (typeof config.insertSpaceAfterSemicolonInForStatements === "boolean") {
options.InsertSpaceAfterSemicolonInForStatements = config.insertSpaceAfterSemicolonInForStatements;
formatOptions.InsertSpaceAfterSemicolonInForStatements = config.insertSpaceAfterSemicolonInForStatements;
}
if (typeof config.insertSpaceBeforeAndAfterBinaryOperators === "boolean") {
options.InsertSpaceBeforeAndAfterBinaryOperators = config.insertSpaceBeforeAndAfterBinaryOperators;
formatOptions.InsertSpaceBeforeAndAfterBinaryOperators = config.insertSpaceBeforeAndAfterBinaryOperators;
}
if (typeof config.insertSpaceAfterKeywordsInControlFlowStatements === "boolean") {
options.InsertSpaceAfterKeywordsInControlFlowStatements = config.insertSpaceAfterKeywordsInControlFlowStatements;
formatOptions.InsertSpaceAfterKeywordsInControlFlowStatements = config.insertSpaceAfterKeywordsInControlFlowStatements;
}
if (typeof config.insertSpaceAfterFunctionKeywordForAnonymousFunctions === "boolean") {
options.InsertSpaceAfterFunctionKeywordForAnonymousFunctions = config.insertSpaceAfterFunctionKeywordForAnonymousFunctions;
formatOptions.InsertSpaceAfterFunctionKeywordForAnonymousFunctions = config.insertSpaceAfterFunctionKeywordForAnonymousFunctions;
}
if (typeof config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis === "boolean") {
options.InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis;
formatOptions.InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis;
}
if (typeof config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets === "boolean") {
options.InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets;
formatOptions.InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets;
}
if (typeof config.placeOpenBraceOnNewLineForFunctions === "boolean") {
options.PlaceOpenBraceOnNewLineForFunctions = config.placeOpenBraceOnNewLineForFunctions;
formatOptions.PlaceOpenBraceOnNewLineForFunctions = config.placeOpenBraceOnNewLineForFunctions;
}
if (typeof config.placeOpenBraceOnNewLineForControlBlocks === "boolean") {
options.PlaceOpenBraceOnNewLineForControlBlocks = config.placeOpenBraceOnNewLineForControlBlocks;
formatOptions.PlaceOpenBraceOnNewLineForControlBlocks = config.placeOpenBraceOnNewLineForControlBlocks;
}
if (typeof config.indentSize === "number") {
options.IndentSize = config.indentSize;
formatOptions.IndentSize = config.indentSize;
}
if (typeof config.tabSize === "number") {
options.TabSize = config.tabSize;
formatOptions.TabSize = config.tabSize;
}
if (typeof config.newLineCharacter === "string") {
options.NewLineCharacter = config.newLineCharacter;
formatOptions.NewLineCharacter = config.newLineCharacter;
}
if (typeof config.convertTabsToSpaces === "boolean") {
options.ConvertTabsToSpaces = config.convertTabsToSpaces;
formatOptions.ConvertTabsToSpaces = config.convertTabsToSpaces;
}

return options;
return formatOptions;
}
25 changes: 14 additions & 11 deletions lib/provider/editorconfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,38 @@ import * as ts from "typescript";

import * as editorconfig from "editorconfig";

export default function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOptions): Promise<ts.FormatCodeOptions> {
import {Options} from "../";

export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): Promise<ts.FormatCodeOptions> {
"use strict";

return editorconfig
.parse(fileName)
.then(config => {
if (Object.keys(config).length === 0) {
return options;
return formatOptions;
}
if (opts.verbose) {
console.log("editorconfig: \n" + "file: " + fileName + "\n" + JSON.stringify(config, null, 2));
}
// console.log("editorconfig makeFormatCodeOptions");
// console.log(config);

if (config.indent_style === "tab") {
options.ConvertTabsToSpaces = false;
formatOptions.ConvertTabsToSpaces = false;
// if (typeof config.tab_width === "number") {
// options.TabSize = config.tab_width;
// }
} else if (typeof config.indent_size === "number") {
options.ConvertTabsToSpaces = true;
options.IndentSize = config.indent_size;
formatOptions.ConvertTabsToSpaces = true;
formatOptions.IndentSize = config.indent_size;
}
if (config.end_of_line === "lf") {
options.NewLineCharacter = "\n";
formatOptions.NewLineCharacter = "\n";
} else if (config.end_of_line === "cr") {
options.NewLineCharacter = "\r";
formatOptions.NewLineCharacter = "\r";
} else if (config.end_of_line === "crlf") {
options.NewLineCharacter = "\r\n";
formatOptions.NewLineCharacter = "\r\n";
}

return options;
return formatOptions;
});
}
24 changes: 13 additions & 11 deletions lib/provider/tslintjson.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import * as ts from "typescript";
import * as path from "path";
import * as fs from "fs";

import {Options} from "../";
import {getConfigFileName} from "../utils";

interface TslintSettings {
Expand All @@ -25,40 +26,41 @@ interface TslintSettings {
};
}

export default function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOptions): ts.FormatCodeOptions {
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): ts.FormatCodeOptions {
"use strict";

let configFileName = getConfigFileName(path.dirname(path.resolve(fileName)), "tslint.json");
if (!configFileName) {
return options;
return formatOptions;
}
if (opts.verbose) {
console.log(`read ${configFileName} for ${fileName}`);
}
// console.log("tslint makeFormatCodeOptions");
// console.log("read " + configFileName);

let config: TslintSettings = JSON.parse(<any>fs.readFileSync(configFileName, "utf-8"));
if (!config.rules) {
return options;
return formatOptions;
}
if (config.rules.indent && config.rules.indent[0]) {
options.IndentSize = config.rules.indent[1];
formatOptions.IndentSize = config.rules.indent[1];
}
if (config.rules.whitespace && config.rules.whitespace[0]) {
for (let p in config.rules.whitespace) {
let value = config.rules.whitespace[p];
if (value === "check-branch") {
options.InsertSpaceAfterKeywordsInControlFlowStatements = true;
formatOptions.InsertSpaceAfterKeywordsInControlFlowStatements = true;
} else if (value === "check-decl") {
// none?
} else if (value === "check-operator") {
options.InsertSpaceBeforeAndAfterBinaryOperators = true;
formatOptions.InsertSpaceBeforeAndAfterBinaryOperators = true;
} else if (value === "check-separator") {
options.InsertSpaceAfterCommaDelimiter = true;
options.InsertSpaceAfterSemicolonInForStatements = true;
formatOptions.InsertSpaceAfterCommaDelimiter = true;
formatOptions.InsertSpaceAfterSemicolonInForStatements = true;
} else if (value === "check-type") {
// none?
}
}
}

return options;
return formatOptions;
}

0 comments on commit c425bac

Please sign in to comment.