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