use ktrs_lint::engine::KtlintSuppression;
use ktrs_lint::{Code, KtLintRuleEngine, RuleId, RuleV2Provider};
use super::assert_that::{DummyRule, trim_indent};
pub const SOME_RULE_ID: RuleId = RuleId("standard:some-rule-id");
pub fn engine() -> KtLintRuleEngine {
KtLintRuleEngine::new(vec![RuleV2Provider::new(|| {
Box::new(DummyRule(SOME_RULE_ID.0))
})])
}
pub fn insert(code: &str, suppression: KtlintSuppression) -> String {
engine()
.insert_suppression(&Code::from_snippet(code, false), &suppression)
.unwrap_or_else(|e| panic!("{e:?}"))
}
pub fn at_offset(code: &str, line: usize, col: usize, rule_id: &'static str) -> String {
let code = trim_indent(code);
let code_line = code.split('\n').nth(line - 1).expect("line <= lines.size");
assert!(col <= code_line.chars().count(), "col <= codeLine.length");
insert(
&code,
KtlintSuppression::AtOffset {
line,
col,
rule_id: RuleId(rule_id),
},
)
}
pub fn char_at(code: &str, line: usize, col: usize) -> char {
trim_indent(code)
.split('\n')
.nth(line - 1)
.unwrap()
.chars()
.nth(col - 1)
.unwrap()
}