use crate::symbol::Language;
use serde::Serialize;
use std::path::PathBuf;
pub mod apply;
pub mod search;
pub use apply::*;
pub use search::*;
#[derive(Debug, Clone)]
pub struct PatternReplaceConfig {
pub glob_pattern: String,
pub find_pattern: String,
pub replace_pattern: String,
pub language: Option<Language>,
pub validate: bool,
}
#[derive(Debug, Clone, Serialize)]
pub struct PatternMatch {
pub file: PathBuf,
pub byte_start: usize,
pub byte_end: usize,
pub line: usize,
pub column: usize,
pub matched_text: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub context_before: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub context_after: Option<Vec<String>>,
}
#[derive(Debug, Clone)]
pub struct PatternReplaceResult {
pub files_patched: Vec<PathBuf>,
pub replacements_count: usize,
pub validation_errors: Vec<String>,
}
#[cfg(test)]
#[path = "pattern_tests.rs"]
mod tests;