pub struct ImportOptimizer;Expand description
Import analysis, optimization, and unused import detection. Import optimizer for analyzing and optimizing Perl import statements
The optimizer currently supports:
- Parsing basic
use Module qw(symbols)statements - Detecting unused imported symbols
- Finding duplicate imports that can be merged
- Generating consolidated import statements
Implementations§
Source§impl ImportOptimizer
impl ImportOptimizer
Sourcepub fn new() -> ImportOptimizer
pub fn new() -> ImportOptimizer
Sourcepub fn analyze_file(&self, file_path: &Path) -> Result<ImportAnalysis, String>
pub fn analyze_file(&self, file_path: &Path) -> Result<ImportAnalysis, String>
Analyze imports in a Perl file during the Analyze stage.
§Arguments
file_path- Path to the Perl file to analyze.
§Returns
ImportAnalysis with detected issues on success.
§Errors
Returns an error string if the file cannot be read or parsing fails.
§Examples
use perl_parser::import_optimizer::ImportOptimizer;
let optimizer = ImportOptimizer::new();
let _analysis = optimizer.analyze_file(std::path::Path::new("script.pl"))?;Sourcepub fn analyze_content(&self, content: &str) -> Result<ImportAnalysis, String>
pub fn analyze_content(&self, content: &str) -> Result<ImportAnalysis, String>
Analyze imports in Perl content during the Analyze stage.
§Arguments
content- The Perl source code content to analyze.
§Returns
ImportAnalysis with detected issues on success.
§Errors
Returns an error string if regex parsing or analysis fails.
§Examples
use perl_parser::import_optimizer::ImportOptimizer;
let optimizer = ImportOptimizer::new();
let analysis = optimizer.analyze_content("use strict;")?;
assert!(analysis.imports.len() >= 1);Sourcepub fn generate_optimized_imports(&self, analysis: &ImportAnalysis) -> String
pub fn generate_optimized_imports(&self, analysis: &ImportAnalysis) -> String
Generate optimized import statements from analysis results.
Used in the Analyze stage to prepare refactoring edits for imports.
§Arguments
analysis- The import analysis results.
§Returns
A string containing optimized import statements, one per line.
§Examples
use perl_parser::import_optimizer::ImportOptimizer;
let optimizer = ImportOptimizer::new();
let analysis = optimizer.analyze_content("use strict;")?;
let imports = optimizer.generate_optimized_imports(&analysis);
assert!(!imports.is_empty());Sourcepub fn generate_edits(
&self,
content: &str,
analysis: &ImportAnalysis,
) -> Vec<TextEdit>
pub fn generate_edits( &self, content: &str, analysis: &ImportAnalysis, ) -> Vec<TextEdit>
Generate text edits to apply optimized imports during Analyze workflows.
§Arguments
content- Original Perl source content.analysis- Import analysis results.
§Returns
Text edits to apply to the source document.
§Examples
use perl_parser::import_optimizer::ImportOptimizer;
let optimizer = ImportOptimizer::new();
let analysis = optimizer.analyze_content("use strict;")?;
let edits = optimizer.generate_edits("use strict;", &analysis);
assert!(!edits.is_empty());