UNPKG

alm

Version:

The best IDE for TypeScript

93 lines (87 loc) 4.55 kB
/** * Maintainance: * When a new option is added add it to: * - the FormatCodeOptions interface * - the defaultFormatCodeOptions function * - the makeFormatCodeOptions function */ import os = require('os'); import {EditorOptions} from "../../../../common/types"; /// The following interface come from typescript.d.ts but camelCased for JSON parsing export interface FormatCodeOptions extends EditorOptions { insertSpaceAfterCommaDelimiter: boolean; insertSpaceAfterSemicolonInForStatements: boolean; insertSpaceBeforeAndAfterBinaryOperators: boolean; insertSpaceAfterKeywordsInControlFlowStatements: boolean; insertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean; insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean; insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean; insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean; placeOpenBraceOnNewLineForFunctions: boolean; placeOpenBraceOnNewLineForControlBlocks: boolean; } export function defaultFormatCodeOptions(): ts.FormatCodeOptions { return { IndentSize: 4, TabSize: 4, NewLineCharacter: os.EOL, ConvertTabsToSpaces: true, IndentStyle: ts.IndentStyle.Smart, InsertSpaceAfterCommaDelimiter: true, InsertSpaceAfterSemicolonInForStatements: true, InsertSpaceBeforeAndAfterBinaryOperators: true, InsertSpaceAfterKeywordsInControlFlowStatements: true, InsertSpaceAfterFunctionKeywordForAnonymousFunctions: false, InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false, InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false, InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false, PlaceOpenBraceOnNewLineForFunctions: false, PlaceOpenBraceOnNewLineForControlBlocks: false, }; } export function makeFormatCodeOptions(config: FormatCodeOptions): ts.FormatCodeOptions { var options = defaultFormatCodeOptions(); if (!config) { return options; } if (typeof config.insertSpaceAfterCommaDelimiter === "boolean") { options.InsertSpaceAfterCommaDelimiter = config.insertSpaceAfterCommaDelimiter; } if (typeof config.insertSpaceAfterSemicolonInForStatements === "boolean") { options.InsertSpaceAfterSemicolonInForStatements = config.insertSpaceAfterSemicolonInForStatements; } if (typeof config.insertSpaceBeforeAndAfterBinaryOperators === "boolean") { options.InsertSpaceBeforeAndAfterBinaryOperators = config.insertSpaceBeforeAndAfterBinaryOperators; } if (typeof config.insertSpaceAfterKeywordsInControlFlowStatements === "boolean") { options.InsertSpaceAfterKeywordsInControlFlowStatements = config.insertSpaceAfterKeywordsInControlFlowStatements; } if (typeof config.insertSpaceAfterFunctionKeywordForAnonymousFunctions === "boolean") { options.InsertSpaceAfterFunctionKeywordForAnonymousFunctions = config.insertSpaceAfterFunctionKeywordForAnonymousFunctions; } if (typeof config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis === "boolean") { options.InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis; } if (typeof config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets === "boolean") { options.InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets; } if (typeof config.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces === "boolean") { options.InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces = config.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces; } if (typeof config.placeOpenBraceOnNewLineForFunctions === "boolean") { options.PlaceOpenBraceOnNewLineForFunctions = config.placeOpenBraceOnNewLineForFunctions; } if (typeof config.placeOpenBraceOnNewLineForControlBlocks === "boolean") { options.PlaceOpenBraceOnNewLineForControlBlocks = config.placeOpenBraceOnNewLineForControlBlocks; } if (typeof config.tabSize === "number") { options.TabSize = config.tabSize; } if (typeof config.newLineCharacter === "string") { options.NewLineCharacter = config.newLineCharacter; } if (typeof config.convertTabsToSpaces === "boolean") { options.ConvertTabsToSpaces = config.convertTabsToSpaces; } return options; }