1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var ts = require("typescript");
|
4 | var utils_1 = require("./utils");
|
5 | var LanguageServiceHost = (function () {
|
6 | function LanguageServiceHost() {
|
7 | var _this = this;
|
8 | this.files = {};
|
9 |
|
10 | this.getCompilationSettings = function () { return ts.getDefaultCompilerOptions(); };
|
11 | this.getScriptFileNames = function () { return Object.keys(_this.files); };
|
12 | this.getScriptVersion = function (_fileName) { return "0"; };
|
13 | this.getScriptSnapshot = function (fileName) { return _this.files[fileName]; };
|
14 | this.getCurrentDirectory = function () { return process.cwd(); };
|
15 | this.getDefaultLibFileName = function (options) { return ts.getDefaultLibFilePath(options); };
|
16 | }
|
17 | LanguageServiceHost.prototype.addFile = function (fileName, text) {
|
18 | this.files[fileName] = ts.ScriptSnapshot.fromString(text);
|
19 | };
|
20 | return LanguageServiceHost;
|
21 | }());
|
22 | function format(fileName, text, options) {
|
23 | if (options === void 0) { options = utils_1.createDefaultFormatCodeSettings(); }
|
24 | var host = new LanguageServiceHost();
|
25 | host.addFile(fileName, text);
|
26 | var languageService = ts.createLanguageService(host);
|
27 | var edits = languageService.getFormattingEditsForDocument(fileName, options);
|
28 | edits
|
29 | .sort(function (a, b) { return a.span.start - b.span.start; })
|
30 | .reverse()
|
31 | .forEach(function (edit) {
|
32 | var head = text.slice(0, edit.span.start);
|
33 | var tail = text.slice(edit.span.start + edit.span.length);
|
34 | text = "" + head + edit.newText + tail;
|
35 | });
|
36 | return text;
|
37 | }
|
38 | exports.format = format;
|
39 |
|
\ | No newline at end of file |