15
15
*/
16
16
package com .diffplug .spotless .glue .ktlint .compat ;
17
17
18
+ import java .nio .file .Paths ;
19
+ import java .util .ArrayList ;
20
+ import java .util .Collections ;
18
21
import java .util .LinkedHashSet ;
19
22
import java .util .List ;
20
23
import java .util .Map ;
23
26
import java .util .stream .Collectors ;
24
27
import java .util .stream .Stream ;
25
28
26
- import com .pinterest .ktlint .core .KtLint ;
29
+ import com .pinterest .ktlint .core .KtLintRuleEngine ;
27
30
import com .pinterest .ktlint .core .LintError ;
28
31
import com .pinterest .ktlint .core .Rule ;
29
32
import com .pinterest .ktlint .core .RuleProvider ;
30
- import com .pinterest .ktlint .core .api .DefaultEditorConfigProperties ;
31
33
import com .pinterest .ktlint .core .api .EditorConfigDefaults ;
32
34
import com .pinterest .ktlint .core .api .EditorConfigOverride ;
33
35
import com .pinterest .ktlint .core .api .UsesEditorConfigProperties ;
36
+ import com .pinterest .ktlint .core .api .editorconfig .CodeStyleEditorConfigPropertyKt ;
37
+ import com .pinterest .ktlint .core .api .editorconfig .DisabledRulesEditorConfigPropertyKt ;
34
38
import com .pinterest .ktlint .core .api .editorconfig .EditorConfigProperty ;
39
+ import com .pinterest .ktlint .core .api .editorconfig .IndentSizeEditorConfigPropertyKt ;
40
+ import com .pinterest .ktlint .core .api .editorconfig .IndentStyleEditorConfigPropertyKt ;
41
+ import com .pinterest .ktlint .core .api .editorconfig .InsertFinalNewLineEditorConfigPropertyKt ;
42
+ import com .pinterest .ktlint .core .api .editorconfig .MaxLineLengthEditorConfigPropertyKt ;
43
+ import com .pinterest .ktlint .core .api .editorconfig .RuleExecutionEditorConfigPropertyKt ;
35
44
import com .pinterest .ktlint .ruleset .experimental .ExperimentalRuleSetProvider ;
36
45
import com .pinterest .ktlint .ruleset .standard .StandardRuleSetProvider ;
37
46
38
47
import kotlin .Pair ;
39
48
import kotlin .Unit ;
40
49
import kotlin .jvm .functions .Function2 ;
41
50
42
- public class KtLintCompat0Dot48Dot0Adapter implements KtLintCompatAdapter {
51
+ public class KtLintCompat0Dot48Dot1Adapter implements KtLintCompatAdapter {
52
+
53
+ private static final List <EditorConfigProperty <?>> DEFAULT_EDITOR_CONFIG_PROPERTIES ;
54
+
55
+ static {
56
+ List <EditorConfigProperty <?>> list = new ArrayList <>();
57
+ list .add (CodeStyleEditorConfigPropertyKt .getCODE_STYLE_PROPERTY ());
58
+ //noinspection deprecation
59
+ list .add (DisabledRulesEditorConfigPropertyKt .getDISABLED_RULES_PROPERTY ());
60
+ //noinspection KotlinInternalInJava,deprecation
61
+ list .add (DisabledRulesEditorConfigPropertyKt .getKTLINT_DISABLED_RULES_PROPERTY ());
62
+ list .add (IndentStyleEditorConfigPropertyKt .getINDENT_STYLE_PROPERTY ());
63
+ list .add (IndentSizeEditorConfigPropertyKt .getINDENT_SIZE_PROPERTY ());
64
+ list .add (InsertFinalNewLineEditorConfigPropertyKt .getINSERT_FINAL_NEWLINE_PROPERTY ());
65
+ list .add (MaxLineLengthEditorConfigPropertyKt .getMAX_LINE_LENGTH_PROPERTY ());
66
+ DEFAULT_EDITOR_CONFIG_PROPERTIES = Collections .unmodifiableList (list );
67
+ }
43
68
44
69
static class FormatterCallback implements Function2 <LintError , Boolean , Unit > {
45
70
@ Override
46
71
public Unit invoke (LintError lint , Boolean corrected ) {
47
72
if (!corrected ) {
48
73
KtLintCompatReporting .report (lint .getLine (), lint .getCol (), lint .getRuleId (), lint .getDetail ());
49
74
}
50
- return null ;
75
+ return Unit . INSTANCE ;
51
76
}
52
77
}
53
78
@@ -66,25 +91,18 @@ public String format(final String text, final String name, final boolean isScrip
66
91
67
92
EditorConfigOverride editorConfigOverride ;
68
93
if (editorConfigOverrideMap .isEmpty ()) {
69
- editorConfigOverride = EditorConfigOverride .Companion .getEmptyEditorConfigOverride ();
94
+ editorConfigOverride = EditorConfigOverride .Companion .getEMPTY_EDITOR_CONFIG_OVERRIDE ();
70
95
} else {
71
96
editorConfigOverride = createEditorConfigOverride (allRuleProviders .stream ().map (
72
97
RuleProvider ::createNewRuleInstance ).collect (
73
98
Collectors .toList ()),
74
99
editorConfigOverrideMap );
75
100
}
76
101
77
- return KtLint .INSTANCE .format (new KtLint .ExperimentalParams (
78
- name ,
79
- text ,
80
- allRuleProviders ,
81
- userData ,
82
- formatterCallback ,
83
- isScript ,
84
- false ,
85
- EditorConfigDefaults .Companion .getEmptyEditorConfigDefaults (),
86
- editorConfigOverride ,
87
- false ));
102
+ EditorConfigDefaults editorConfigDefaults = EditorConfigDefaults .Companion .getEMPTY_EDITOR_CONFIG_DEFAULTS ();
103
+ boolean isInvokedFromCli = false ;
104
+ KtLintRuleEngine ktLintRuleEngine = new KtLintRuleEngine (allRuleProviders , editorConfigDefaults , editorConfigOverride , isInvokedFromCli );
105
+ return ktLintRuleEngine .format (text , Paths .get (name ), formatterCallback );
88
106
}
89
107
90
108
/**
@@ -98,7 +116,7 @@ private static EditorConfigOverride createEditorConfigOverride(final List<Rule>
98
116
99
117
// Create a mapping of properties to their names based on rule properties and default properties
100
118
Map <String , EditorConfigProperty <?>> supportedProperties = Stream
101
- .concat (ruleProperties , DefaultEditorConfigProperties . INSTANCE . getEditorConfigProperties () .stream ())
119
+ .concat (ruleProperties , DEFAULT_EDITOR_CONFIG_PROPERTIES .stream ())
102
120
.distinct ()
103
121
.collect (Collectors .toMap (EditorConfigProperty ::getName , property -> property ));
104
122
@@ -109,6 +127,18 @@ private static EditorConfigOverride createEditorConfigOverride(final List<Rule>
109
127
EditorConfigProperty <?> property = supportedProperties .get (entry .getKey ());
110
128
if (property != null ) {
111
129
return new Pair <>(property , entry .getValue ());
130
+ } else if (entry .getKey ().startsWith ("ktlint_" )) {
131
+ String [] parts = entry .getKey ().substring (7 ).split ("_" , 2 );
132
+ if (parts .length == 1 ) {
133
+ // convert ktlint_{ruleset} to {ruleset}
134
+ String qualifiedRuleId = parts [0 ];
135
+ property = RuleExecutionEditorConfigPropertyKt .createRuleSetExecutionEditorConfigProperty (qualifiedRuleId );
136
+ } else {
137
+ // convert ktlint_{ruleset}_{rulename} to {ruleset}:{rulename}
138
+ String qualifiedRuleId = parts [0 ] + ":" + parts [1 ];
139
+ property = RuleExecutionEditorConfigPropertyKt .createRuleExecutionEditorConfigProperty (qualifiedRuleId );
140
+ }
141
+ return new Pair <>(property , entry .getValue ());
112
142
} else {
113
143
return null ;
114
144
}
0 commit comments