@@ -12,96 +12,89 @@ List<RuleConfig>? parseLintRuleConfigs(YamlMap optionsMap) {
1212 var options = optionsMap.valueAt ('linter' );
1313 // Quick check of basic contract.
1414 if (options is YamlMap ) {
15- return LintConfig .parseMap (options).ruleConfigs;
16- }
17-
18- return null ;
19- }
20-
21- /// The configuration of lint rules within an analysis options file.
22- class LintConfig {
23- final List <RuleConfig > ruleConfigs;
24-
25- factory LintConfig .parseMap (YamlMap yaml) {
2615 var ruleConfigs = < RuleConfig > [];
27- var rulesNode = yaml .valueAt (AnalyzerOptions .rules);
16+ var rulesNode = options .valueAt (AnalyzerOptions .rules);
2817 if (rulesNode != null ) {
2918 ruleConfigs.addAll (_ruleConfigs (rulesNode));
3019 }
3120
32- return LintConfig ._( ruleConfigs) ;
21+ return ruleConfigs;
3322 }
3423
35- LintConfig ._(this .ruleConfigs);
24+ return null ;
25+ }
3626
37- static bool ? _asBool (YamlNode scalar) {
38- var value = scalar is YamlScalar ? scalar.valueOrThrow : scalar;
39- return switch (value) {
40- bool () => value,
41- 'true' => true ,
42- 'false' => false ,
43- _ => null ,
44- };
45- }
27+ /// Returns [scalar] as a [bool] , if it can be parsed as one.
28+ bool ? _asBool (YamlNode scalar) {
29+ var value = scalar is YamlScalar ? scalar.valueOrThrow : scalar;
30+ return switch (value) {
31+ bool () => value,
32+ 'true' => true ,
33+ 'false' => false ,
34+ _ => null ,
35+ };
36+ }
4637
47- static String ? _asString (Object scalar) {
48- var value = scalar is YamlScalar ? scalar.value : scalar;
49- return value is String ? value : null ;
50- }
38+ /// Returns [scalar] as a [String] , if it can be parsed as one.
39+ String ? _asString (Object scalar) {
40+ var value = scalar is YamlScalar ? scalar.value : scalar;
41+ return value is String ? value : null ;
42+ }
5143
52- static Map <String , bool > _parseArgs (YamlNode args) {
53- var enabled = _asBool (args);
54- if (enabled != null ) {
55- return {'enabled' : enabled};
56- }
57- return {};
44+ Map <String , bool > _parseArgs (YamlNode args) {
45+ var enabled = _asBool (args);
46+ if (enabled != null ) {
47+ return {'enabled' : enabled};
5848 }
49+ return {};
50+ }
5951
60- static List <RuleConfig > _ruleConfigs (YamlNode value) {
61- // For example:
62- //
63- // ```yaml
64- // - unnecessary_getters
65- // - camel_case_types
66- // ```
67- if (value is YamlList ) {
68- return [
69- for (var rule in value.nodes)
70- RuleConfig (name: _asString (rule), args: {'enabled' : true }),
71- ];
72- }
52+ /// Returns the [RuleConfig] s that are parsed from [value] , which can be either
53+ /// a YAML list or a YAML map.
54+ List <RuleConfig > _ruleConfigs (YamlNode value) {
55+ // For example:
56+ //
57+ // ```yaml
58+ // - unnecessary_getters
59+ // - camel_case_types
60+ // ```
61+ if (value is YamlList ) {
62+ return [
63+ for (var rule in value.nodes)
64+ RuleConfig (name: _asString (rule), args: {'enabled' : true }),
65+ ];
66+ }
7367
74- // style_guide: {unnecessary_getters: false, camel_case_types: true}
75- if (value is YamlMap ) {
76- var ruleConfigs = < RuleConfig > [];
77- value.nodes.cast <Object , YamlNode >().forEach ((key, value) {
78- // For example: `{unnecessary_getters: false}`.
79- var valueAsBool = _asBool (value);
80- if (valueAsBool != null ) {
68+ // style_guide: {unnecessary_getters: false, camel_case_types: true}
69+ if (value is YamlMap ) {
70+ var ruleConfigs = < RuleConfig > [];
71+ value.nodes.cast <Object , YamlNode >().forEach ((key, value) {
72+ // For example: `{unnecessary_getters: false}`.
73+ var valueAsBool = _asBool (value);
74+ if (valueAsBool != null ) {
75+ ruleConfigs.add (RuleConfig (
76+ name: _asString (key),
77+ args: {'enabled' : valueAsBool},
78+ ));
79+ }
80+
81+ // style_guide: {unnecessary_getters: false, camel_case_types: true}
82+ if (value is YamlMap ) {
83+ value.nodes.cast <Object , YamlNode >().forEach ((rule, args) {
84+ // TODO(brianwilkerson): verify format.
85+ // For example: `unnecessary_getters: false`.
8186 ruleConfigs.add (RuleConfig (
82- name: _asString (key),
83- args: {'enabled' : valueAsBool},
87+ name: _asString (rule),
88+ args: _parseArgs (args),
89+ group: _asString (key),
8490 ));
85- }
86-
87- // style_guide: {unnecessary_getters: false, camel_case_types: true}
88- if (value is YamlMap ) {
89- value.nodes.cast <Object , YamlNode >().forEach ((rule, args) {
90- // TODO(brianwilkerson): verify format.
91- // For example: `unnecessary_getters: false`.
92- ruleConfigs.add (RuleConfig (
93- name: _asString (rule),
94- args: _parseArgs (args),
95- group: _asString (key),
96- ));
97- });
98- }
99- });
100- return ruleConfigs;
101- }
102-
103- return const [];
91+ });
92+ }
93+ });
94+ return ruleConfigs;
10495 }
96+
97+ return const [];
10598}
10699
107100/// The configuration of a single lint rule within an analysis options file.
0 commit comments