settings.rs

 1use std::ops::Range;
 2use tree_sitter::{Query, QueryMatch};
 3
 4use crate::MigrationPatterns;
 5use crate::patterns::SETTINGS_ASSISTANT_TOOLS_PATTERN;
 6
 7pub const SETTINGS_PATTERNS: MigrationPatterns =
 8    &[(SETTINGS_ASSISTANT_TOOLS_PATTERN, rename_tools)];
 9
10fn rename_tools(contents: &str, mat: &QueryMatch, query: &Query) -> Option<(Range<usize>, String)> {
11    let tool_name_capture_ix = query.capture_index_for_name("tool_name")?;
12    let tool_name_range = mat
13        .nodes_for_capture_index(tool_name_capture_ix)
14        .next()?
15        .byte_range();
16    let tool_name = contents.get(tool_name_range.clone())?;
17
18    let new_name = match tool_name {
19        "find_replace_file" => "edit_file",
20        "regex_search" => "grep",
21        _ => return None,
22    };
23
24    Some((tool_name_range, new_name.to_string()))
25}