ktrs_compose/ktlint/
material2_check.rs1use ktrs_ast::Ast;
4use ktrs_ast::psi::KtFile;
5
6use crate::core::compose_kt_config::ComposeKtConfig;
7use crate::core::compose_kt_visitor::ComposeKtVisitor;
8use crate::core::emitter::Emitter;
9use crate::ktlint::editor_config_properties::{ALLOWED_FROM_M2, ComposeProperty, DISALLOW_MATERIAL2};
10use crate::ktlint::ktlint_rule::KtlintRule;
11use crate::rules::material2::Material2;
12
13pub struct Material2Check {
14 visitor: Material2,
15}
16
17impl ComposeKtVisitor for Material2Check {
18 fn visit_file(&self, ast: &mut Ast, file: KtFile, emitter: &mut dyn Emitter, config: &dyn ComposeKtConfig) {
19 if config.get_boolean("disallowMaterial2", false) {
20 self.visitor.visit_file(ast, file, emitter, config);
21 }
22 }
23}
24
25pub const CHECK: Option<fn() -> KtlintRule> = Some(material2_check);
26
27pub fn material2_check() -> KtlintRule {
28 KtlintRule::new(
29 "compose:material-two",
30 vec![ComposeProperty::String(&ALLOWED_FROM_M2), ComposeProperty::Boolean(&DISALLOW_MATERIAL2)],
31 Box::new(Material2Check { visitor: Material2 }),
32 )
33}