1- import * as vscode from 'vscode' ;
2- import { TableDocumentPrettyfier } from './tableDocumentPrettyfier' ;
3- import { TableFinder } from '../tableFinding/tableFinder' ;
4- import { TableDocumentRangePrettyfier } from "./tableDocumentRangePrettyfier" ;
5- import { ConsoleLogger } from '../diagnostics/consoleLogger' ;
6- import { VsWindowLogger } from '../diagnostics/vsWindowLogger' ;
7- import { TableFactory } from "../modelFactory/tableFactory" ;
8- import { AlignmentFactory } from "../modelFactory/alignmentFactory" ;
9- import { TableValidator } from "../modelFactory/tableValidator" ;
10- import { TableStringWriter } from "../writers/tableStringWriter" ;
11- import { ContentPadCalculator } from '../padCalculation/contentPadCalculator' ;
12- import { TableViewModelFactory } from '../viewModelFactories/tableViewModelFactory' ;
13- import { RowViewModelFactory } from '../viewModelFactories/rowViewModelFactory' ;
14- import { TrimmerTransformer } from '../modelFactory/transformers/trimmerTransformer' ;
15- import { BorderTransformer } from '../modelFactory/transformers/borderTransformer' ;
16- import { SelectionInterpreter } from '../modelFactory/selectionInterpreter' ;
17- import { PadCalculatorSelector } from '../padCalculation/padCalculatorSelector' ;
18- import { AlignmentMarkerStrategy } from '../viewModelFactories/alignmentMarking' ;
19-
20- export function getDocumentRangePrettyfier ( strict : boolean = false ) {
21- return new TableDocumentRangePrettyfier (
22- new TableFactory (
23- new AlignmentFactory ( ) , new SelectionInterpreter ( strict ) ,
24- new TrimmerTransformer ( new BorderTransformer ( null ) )
25- ) ,
26- new TableValidator ( new SelectionInterpreter ( strict ) ) ,
27- new TableViewModelFactory (
28- new RowViewModelFactory (
29- new ContentPadCalculator ( new PadCalculatorSelector ( ) , " " ) ,
30- new AlignmentMarkerStrategy ( ":" )
31- )
32- ) ,
33- new TableStringWriter ( ) ,
34- [
35- ...( canShowWindowMessages ( ) ? [ new VsWindowLogger ( ) ] : [ ] ) ,
36- new ConsoleLogger ( )
37- ]
38- ) ;
39- }
40-
41- export function getDocumentPrettyfier ( strict : boolean = true ) : vscode . DocumentFormattingEditProvider {
42- return new TableDocumentPrettyfier (
43- new TableFinder ( new TableValidator ( new SelectionInterpreter ( strict ) ) ) ,
44- getDocumentRangePrettyfier ( strict )
45- ) ;
46- }
47-
48- function canShowWindowMessages ( ) : boolean {
49- return getConfigurationValue < boolean > ( "showWindowMessages" , true ) ;
50- }
51-
52- function getConfigurationValue < T > ( key : string , defaultValue : T ) : T {
53- return vscode . workspace . getConfiguration ( "markdownTablePrettify" ) . get ( key , defaultValue ) ;
1+ import * as vscode from 'vscode' ;
2+ import { SizeLimitChecker } from './sizeLimitCheker' ;
3+ import { TableDocumentPrettyfier } from './tableDocumentPrettyfier' ;
4+ import { TableFinder } from '../tableFinding/tableFinder' ;
5+ import { TableDocumentRangePrettyfier } from "./tableDocumentRangePrettyfier" ;
6+ import { ILogger } from '../diagnostics/logger' ;
7+ import { ConsoleLogger } from '../diagnostics/consoleLogger' ;
8+ import { VsWindowLogger } from '../diagnostics/vsWindowLogger' ;
9+ import { TableFactory } from "../modelFactory/tableFactory" ;
10+ import { AlignmentFactory } from "../modelFactory/alignmentFactory" ;
11+ import { TableValidator } from "../modelFactory/tableValidator" ;
12+ import { TableStringWriter } from "../writers/tableStringWriter" ;
13+ import { ContentPadCalculator } from '../padCalculation/contentPadCalculator' ;
14+ import { TableViewModelFactory } from '../viewModelFactories/tableViewModelFactory' ;
15+ import { RowViewModelFactory } from '../viewModelFactories/rowViewModelFactory' ;
16+ import { TrimmerTransformer } from '../modelFactory/transformers/trimmerTransformer' ;
17+ import { BorderTransformer } from '../modelFactory/transformers/borderTransformer' ;
18+ import { SelectionInterpreter } from '../modelFactory/selectionInterpreter' ;
19+ import { PadCalculatorSelector } from '../padCalculation/padCalculatorSelector' ;
20+ import { AlignmentMarkerStrategy } from '../viewModelFactories/alignmentMarking' ;
21+
22+ export function getDocumentRangePrettyfier ( strict : boolean = false , sizeLimitCheker : SizeLimitChecker = null , loggers : ILogger [ ] = null ) {
23+ loggers = loggers || getLoggers ( ) ;
24+ sizeLimitCheker = sizeLimitCheker || getSizeLimitChecker ( loggers ) ;
25+
26+ return new TableDocumentRangePrettyfier (
27+ new TableFactory (
28+ new AlignmentFactory ( ) , new SelectionInterpreter ( strict ) ,
29+ new TrimmerTransformer ( new BorderTransformer ( null ) )
30+ ) ,
31+ new TableValidator ( new SelectionInterpreter ( strict ) ) ,
32+ new TableViewModelFactory (
33+ new RowViewModelFactory (
34+ new ContentPadCalculator ( new PadCalculatorSelector ( ) , " " ) ,
35+ new AlignmentMarkerStrategy ( ":" )
36+ )
37+ ) ,
38+ new TableStringWriter ( ) ,
39+ loggers ,
40+ sizeLimitCheker
41+ ) ;
42+ }
43+
44+ export function getDocumentPrettyfier ( strict : boolean = true ) : vscode . DocumentFormattingEditProvider {
45+ const loggers = getLoggers ( ) ;
46+ const sizeLimitCheker = getSizeLimitChecker ( loggers ) ;
47+
48+ return new TableDocumentPrettyfier (
49+ new TableFinder ( new TableValidator ( new SelectionInterpreter ( strict ) ) ) ,
50+ getDocumentRangePrettyfier ( strict , sizeLimitCheker , loggers ) ,
51+ sizeLimitCheker
52+ ) ;
53+ }
54+
55+ function getLoggers ( ) : ILogger [ ] {
56+ const canShowWindowMessages = getConfigurationValue < boolean > ( "showWindowMessages" , true ) ;
57+ return [
58+ ...( canShowWindowMessages ? [ new VsWindowLogger ( ) ] : [ ] ) ,
59+ new ConsoleLogger ( )
60+ ]
61+ }
62+
63+ function getSizeLimitChecker ( loggers : ILogger [ ] ) : SizeLimitChecker {
64+ const maxTextLength = getConfigurationValue < number > ( "maxTextLength" , 1000000 ) ;
65+ return new SizeLimitChecker ( loggers , maxTextLength ) ;
66+ }
67+
68+ function getConfigurationValue < T > ( key : string , defaultValue : T ) : T {
69+ return vscode . workspace . getConfiguration ( "markdownTablePrettify" ) . get ( key , defaultValue ) ;
5470}
0 commit comments