1515 */
1616package com .diffplug .spotless .glue .ktlint .compat ;
1717
18+ import java .util .ArrayList ;
19+ import java .util .Collections ;
1820import java .util .LinkedHashSet ;
1921import java .util .List ;
2022import java .util .Map ;
2729import com .pinterest .ktlint .core .LintError ;
2830import com .pinterest .ktlint .core .Rule ;
2931import com .pinterest .ktlint .core .RuleProvider ;
30- import com .pinterest .ktlint .core .api .DefaultEditorConfigProperties ;
3132import com .pinterest .ktlint .core .api .EditorConfigDefaults ;
3233import com .pinterest .ktlint .core .api .EditorConfigOverride ;
3334import com .pinterest .ktlint .core .api .UsesEditorConfigProperties ;
35+ import com .pinterest .ktlint .core .api .editorconfig .CodeStyleEditorConfigPropertyKt ;
36+ import com .pinterest .ktlint .core .api .editorconfig .DisabledRulesEditorConfigPropertyKt ;
3437import 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 ;
3543import com .pinterest .ktlint .ruleset .experimental .ExperimentalRuleSetProvider ;
3644import com .pinterest .ktlint .ruleset .standard .StandardRuleSetProvider ;
3745
4149
4250public class KtLintCompat0Dot48Dot0Adapter implements KtLintCompatAdapter {
4351
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+
4468 static class FormatterCallback implements Function2 <LintError , Boolean , Unit > {
4569 @ Override
4670 public Unit invoke (LintError lint , Boolean corrected ) {
4771 if (!corrected ) {
4872 KtLintCompatReporting .report (lint .getLine (), lint .getCol (), lint .getRuleId (), lint .getDetail ());
4973 }
50- return null ;
74+ return Unit . INSTANCE ;
5175 }
5276 }
5377
@@ -66,7 +90,7 @@ public String format(final String text, final String name, final boolean isScrip
6690
6791 EditorConfigOverride editorConfigOverride ;
6892 if (editorConfigOverrideMap .isEmpty ()) {
69- editorConfigOverride = EditorConfigOverride .Companion .getEmptyEditorConfigOverride ();
93+ editorConfigOverride = EditorConfigOverride .Companion .getEMPTY_EDITOR_CONFIG_OVERRIDE ();
7094 } else {
7195 editorConfigOverride = createEditorConfigOverride (allRuleProviders .stream ().map (
7296 RuleProvider ::createNewRuleInstance ).collect (
@@ -82,7 +106,7 @@ public String format(final String text, final String name, final boolean isScrip
82106 formatterCallback ,
83107 isScript ,
84108 false ,
85- EditorConfigDefaults .Companion .getEmptyEditorConfigDefaults (),
109+ EditorConfigDefaults .Companion .getEMPTY_EDITOR_CONFIG_DEFAULTS (),
86110 editorConfigOverride ,
87111 false ));
88112 }
@@ -98,7 +122,7 @@ private static EditorConfigOverride createEditorConfigOverride(final List<Rule>
98122
99123 // Create a mapping of properties to their names based on rule properties and default properties
100124 Map <String , EditorConfigProperty <?>> supportedProperties = Stream
101- .concat (ruleProperties , DefaultEditorConfigProperties . INSTANCE . getEditorConfigProperties () .stream ())
125+ .concat (ruleProperties , DEFAULT_EDITOR_CONFIG_PROPERTIES .stream ())
102126 .distinct ()
103127 .collect (Collectors .toMap (EditorConfigProperty ::getName , property -> property ));
104128
@@ -109,6 +133,18 @@ private static EditorConfigOverride createEditorConfigOverride(final List<Rule>
109133 EditorConfigProperty <?> property = supportedProperties .get (entry .getKey ());
110134 if (property != null ) {
111135 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 ());
112148 } else {
113149 return null ;
114150 }
0 commit comments