fob_graph/analysis/extractors/mod.rs
1//! Framework script extractors.
2//!
3//! This module provides extractors for extracting JavaScript/TypeScript from
4//! framework-specific file formats.
5//!
6//! # Usage
7//!
8//! ```rust,no_run
9//! use fob_graph::analysis::extractors::{extract_scripts, ExtractedScript};
10//! use std::path::Path;
11//!
12//! # fn example() -> Result<(), Box<dyn std::error::Error>> {
13//! let path = Path::new("component.js");
14//! let content = std::fs::read_to_string(path)?;
15//! let scripts = extract_scripts(path, &content)?;
16//!
17//! for script in scripts {
18//! println!("Found script: {}", script.source_text);
19//! }
20//! # Ok(()) }
21//! ```
22
23mod common;
24
25pub use common::{ExtractedScript, Extractor, ExtractorError, ScriptContext};
26
27// Re-export constants for convenience
28pub use common::{MAX_FILE_SIZE, MAX_SCRIPT_TAGS};
29
30use std::path::Path;
31
32/// Extract scripts from a framework file, auto-detecting the framework by extension.
33///
34/// # Arguments
35///
36/// * `path` - The file path (used to determine framework by extension)
37/// * `content` - The file content
38///
39/// # Returns
40///
41/// A vector of extracted scripts, or an error if extraction fails.
42///
43/// Currently, no framework-specific extractors are supported.
44/// This function returns an empty vector for all file types.
45///
46/// # Example
47///
48/// ```rust,no_run
49/// use fob_graph::analysis::extractors::extract_scripts;
50/// use std::path::Path;
51///
52/// # fn example() -> Result<(), Box<dyn std::error::Error>> {
53/// let path = Path::new("component.js");
54/// let content = "const x = 1;";
55///
56/// let scripts = extract_scripts(path, content)?;
57/// assert_eq!(scripts.len(), 0);
58/// # Ok(()) }
59/// ```
60pub fn extract_scripts<'a>(
61 _path: &Path,
62 _content: &'a str,
63) -> Result<Vec<ExtractedScript<'a>>, ExtractorError> {
64 // No framework extractors currently supported
65 Ok(vec![])
66}
67
68#[cfg(test)]
69mod tests {
70 use super::*;
71
72 #[test]
73 fn test_extract_scripts_unknown_extension() {
74 let path = Path::new("test.js");
75 let content = "const x = 1";
76 let scripts = extract_scripts(path, content).unwrap();
77 assert_eq!(scripts.len(), 0);
78 }
79}