1- import * as vscode from "vscode" ;
2- import { ILogger } from "../diagnostics/logger" ;
3- import { SelectionBasedLogToogler } from "../diagnostics/selectionBasedLogToogler" ;
4- import { Table } from "../models/table" ;
5- import { TableFactory } from "../modelFactory/tableFactory" ;
6- import { TableValidator } from "../modelFactory/tableValidator" ;
7- import { TableViewModel } from "../viewModels/tableViewModel" ;
8- import { TableViewModelFactory } from "../viewModelFactories/tableViewModelFactory" ;
9- import { TableStringWriter } from "../writers/tableStringWriter" ;
10-
11- export class TableRangePrettyfier implements vscode . DocumentRangeFormattingEditProvider {
12-
13- constructor (
14- private _tableFactory : TableFactory ,
15- private _tableValidator : TableValidator ,
16- private _viewModelFactory : TableViewModelFactory ,
17- private _writer : TableStringWriter ,
18- private _loggers : ILogger [ ]
19- ) { }
20-
21- public provideDocumentRangeFormattingEdits (
22- document : vscode . TextDocument , range : vscode . Range ,
23- options : vscode . FormattingOptions , token : vscode . CancellationToken ) : vscode . TextEdit [ ]
24- {
25- const result : vscode . TextEdit [ ] = [ ] ;
26- const selection = document . getText ( range ) ;
27-
28- this . toogleLogging ( document , range ) ;
29- let message : string = null ;
30-
31- try {
32- if ( this . _tableValidator . isValid ( selection ) ) {
33- const table : Table = this . _tableFactory . getModel ( selection ) ;
34- const tableVm : TableViewModel = this . _viewModelFactory . build ( table ) ;
35- const formattedTable : string = this . _writer . writeTable ( tableVm ) ;
36- result . push ( new vscode . TextEdit ( range , formattedTable ) ) ;
37- } else {
38- message = "Can't parse table from invalid text."
39- }
40- } catch ( ex ) {
41- this . _loggers . forEach ( _ => _ . logError ( ex ) ) ;
42- }
43-
44- if ( ! ! message )
45- this . _loggers . forEach ( _ => _ . logInfo ( message ) ) ;
46-
47- return result ;
48- }
49-
50- private toogleLogging ( document : vscode . TextDocument , range : vscode . Range ) {
51- const toogler = new SelectionBasedLogToogler ( document , range ) ;
52- toogler . toogleLoggers ( this . _loggers ) ;
53- }
1+ import * as vscode from "vscode" ;
2+ import { ILogger } from "../diagnostics/logger" ;
3+ import { SelectionBasedLogToogler } from "../diagnostics/selectionBasedLogToogler" ;
4+ import { Table } from "../models/table" ;
5+ import { TableFactory } from "../modelFactory/tableFactory" ;
6+ import { TableValidator } from "../modelFactory/tableValidator" ;
7+ import { TableViewModel } from "../viewModels/tableViewModel" ;
8+ import { TableViewModelFactory } from "../viewModelFactories/tableViewModelFactory" ;
9+ import { TableStringWriter } from "../writers/tableStringWriter" ;
10+
11+ export class TableDocumentRangePrettyfier implements vscode . DocumentRangeFormattingEditProvider {
12+
13+ constructor (
14+ private _tableFactory : TableFactory ,
15+ private _tableValidator : TableValidator ,
16+ private _viewModelFactory : TableViewModelFactory ,
17+ private _writer : TableStringWriter ,
18+ private _loggers : ILogger [ ]
19+ ) { }
20+
21+ public provideDocumentRangeFormattingEdits (
22+ document : vscode . TextDocument , range : vscode . Range ,
23+ options : vscode . FormattingOptions , token : vscode . CancellationToken ) : vscode . TextEdit [ ]
24+ {
25+ const result : vscode . TextEdit [ ] = [ ] ;
26+ const selection = document . getText ( range ) ;
27+
28+ this . toogleLogging ( document , range ) ;
29+ let message : string = null ;
30+
31+ try {
32+ if ( this . _tableValidator . isValid ( selection ) ) {
33+ const table : Table = this . _tableFactory . getModel ( selection ) ;
34+ const tableVm : TableViewModel = this . _viewModelFactory . build ( table ) ;
35+ const formattedTable : string = this . _writer . writeTable ( tableVm ) ;
36+ result . push ( new vscode . TextEdit ( range , formattedTable ) ) ;
37+ } else {
38+ message = "Can't parse table from invalid text."
39+ }
40+ } catch ( ex ) {
41+ this . _loggers . forEach ( _ => _ . logError ( ex ) ) ;
42+ }
43+
44+ if ( ! ! message )
45+ this . _loggers . forEach ( _ => _ . logInfo ( message ) ) ;
46+
47+ return result ;
48+ }
49+
50+ private toogleLogging ( document : vscode . TextDocument , range : vscode . Range ) {
51+ const toogler = new SelectionBasedLogToogler ( document , range ) ;
52+ toogler . toogleLoggers ( this . _loggers ) ;
53+ }
5454}
0 commit comments