Skip to content

Commit

Permalink
perf: use type definitions for prettier
Browse files Browse the repository at this point in the history
  • Loading branch information
sibiraj-s committed Nov 24, 2018
1 parent e3b2939 commit 25b9b35
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 14 deletions.
5 changes: 5 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
"watch": "tsc -watch -p ./"
},
"dependencies": {
"@types/prettier": "^1.15.1",
"prettier": "^1.15.2"
},
"devDependencies": {
Expand Down
17 changes: 10 additions & 7 deletions src/scssFormatterProvider.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,27 @@
import {
BuiltInParserName,
format,
Options as PrettierOptions
} from 'prettier';
import {
DocumentFormattingEditProvider, Position, Range, TextDocument,
TextEdit, workspace, WorkspaceConfiguration
} from 'vscode';

const prettier = require('prettier');

import { safeExecution } from './errorHandler';

async function format(document: TextDocument): Promise<string> {
async function formatDocument(document: TextDocument): Promise<string> {
const workspaceConfiguration: WorkspaceConfiguration = workspace.getConfiguration('scssFormatter');
const rawDocumentText = document.getText();
const { fileName, languageId } = document;

const options = {
const options: PrettierOptions = {
...Object.assign({}, workspaceConfiguration),
parser: languageId
parser: languageId as BuiltInParserName
};

return safeExecution(
() => prettier.format(rawDocumentText, options),
() => format(rawDocumentText, options),
rawDocumentText,
fileName
);
Expand All @@ -33,7 +36,7 @@ function fullDocumentRange(document: TextDocument): Range {

export class SCSSFormatter implements DocumentFormattingEditProvider {
public async provideDocumentFormattingEdits(document: TextDocument): Promise<TextEdit[]> {
const formattedDocument = await format(document);
const formattedDocument = await formatDocument(document);
return [TextEdit.replace(fullDocumentRange(document), formattedDocument)];
}
}
9 changes: 4 additions & 5 deletions src/test/extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
/* tslint:disable: no-console */
import * as assert from 'assert';
import * as path from 'path';
import { format } from 'prettier';
import { commands, Uri, window, workspace } from 'vscode';

const prettier = require('prettier');

// activate the formatter
async function activateFormatter() {
await commands.executeCommand('scss-formatter.activate');
Expand All @@ -25,7 +24,7 @@ async function clearOutput() {
* @param base base URI
* @returns source code and resulting code
*/
async function format(
async function formatWithVscode(
file: string,
base: Uri = workspace.workspaceFolders![0].uri
): Promise<{
Expand Down Expand Up @@ -53,9 +52,9 @@ async function format(
* @param file path relative to workspace root
*/
async function formatSameAsPrettier(file: string) {
const result = await format(file);
const result = await formatWithVscode(file);
if (result) {
const prettierFormatted = prettier.format(result.source, {
const prettierFormatted = format(result.source, {
filepath: file,
});
assert.equal(result.result, prettierFormatted);
Expand Down
3 changes: 2 additions & 1 deletion src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { BuiltInParserName } from 'prettier';
import { DocumentSelector, extensions } from 'vscode';

/**
Expand All @@ -12,7 +13,7 @@ function getExtensionVersion(): string | null {
}

/** languages supported by scss formatter */
const supportedLanguages: string[] = [
const supportedLanguages: BuiltInParserName[] = [
'css',
'scss'
];
Expand Down
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"target": "es6",
"outDir": "out",
"lib": [
"es6"
"es2016"
],
"sourceMap": true,
"rootDir": "src",
Expand Down

0 comments on commit 25b9b35

Please sign in to comment.