swc_css_lints/rules/
mod.rs1use crate::{
2 config::LintConfig,
3 error::ConfigError,
4 rule::LintRule,
5 rules::{
6 at_rule_no_unknown::at_rule_no_unknown, block_no_empty::block_no_empty,
7 color_hex_alpha::color_hex_alpha, color_hex_length::color_hex_length,
8 color_no_invalid_hex::color_no_invalid_hex,
9 custom_property_no_missing_var_function::custom_property_no_missing_var_function,
10 declaration_no_important::declaration_no_important,
11 font_family_no_duplicate_names::font_family_no_duplicate_names,
12 keyframe_declaration_no_important::keyframe_declaration_no_important,
13 no_duplicate_at_import_rules::no_duplicate_at_import_rules,
14 no_empty_source::no_empty_source,
15 no_invalid_position_at_import_rule::no_invalid_position_at_import_rule,
16 selector_max_class::selector_max_class, selector_max_combinators::selector_max_combinators,
17 unit_no_unknown::unit_no_unknown,
18 },
19};
20
21pub mod at_rule_no_unknown;
22pub mod block_no_empty;
23pub mod color_hex_alpha;
24pub mod color_hex_length;
25pub mod color_no_invalid_hex;
26pub mod custom_property_no_missing_var_function;
27pub mod declaration_no_important;
28pub mod font_family_no_duplicate_names;
29pub mod keyframe_declaration_no_important;
30pub mod no_duplicate_at_import_rules;
31pub mod no_empty_source;
32pub mod no_invalid_position_at_import_rule;
33pub mod selector_max_class;
34pub mod selector_max_combinators;
35pub mod unit_no_unknown;
36
37pub struct LintParams<'a> {
38 pub lint_config: &'a LintConfig,
39}
40
41pub fn get_rules(
42 LintParams { lint_config }: &LintParams,
43) -> Result<Vec<Box<dyn LintRule>>, ConfigError> {
44 let rules_config = &lint_config.rules;
45
46 let rules = vec![
47 block_no_empty((&rules_config.block_no_empty).into()),
48 at_rule_no_unknown((&rules_config.at_rule_no_unknown).into())?,
49 no_empty_source((&rules_config.no_empty_source).into()),
50 declaration_no_important((&rules_config.declaration_no_important).into()),
51 keyframe_declaration_no_important((&rules_config.keyframe_declaration_no_important).into()),
52 no_invalid_position_at_import_rule(
53 (&rules_config.no_invalid_position_at_import_rule).into(),
54 )?,
55 selector_max_class((&rules_config.selector_max_class).into()),
56 color_hex_length((&rules_config.color_hex_length).into()),
57 color_no_invalid_hex((&rules_config.color_no_invalid_hex).into()),
58 unit_no_unknown((&rules_config.unit_no_unknown).into())?,
59 selector_max_combinators((&rules_config.selector_max_combinators).into()),
60 font_family_no_duplicate_names((&rules_config.font_family_no_duplicate_names).into())?,
61 color_hex_alpha((&rules_config.color_hex_alpha).into()),
62 no_duplicate_at_import_rules((&rules_config.no_duplicate_at_import_rules).into()),
63 custom_property_no_missing_var_function(
64 (&rules_config.custom_property_no_missing_var_function).into(),
65 ),
66 ];
67
68 Ok(rules)
69}