Skip to main content

oparry_parser/
javascript.rs

1//! JavaScript/TypeScript parser using Oxc
2
3use oparry_core::Result;
4
5/// JavaScript/TypeScript parser
6pub struct JavaScriptParser;
7
8impl JavaScriptParser {
9    /// Create new parser
10    pub fn new() -> Self {
11        Self
12    }
13}
14
15impl Default for JavaScriptParser {
16    fn default() -> Self {
17        Self::new()
18    }
19}
20
21impl super::Parser for JavaScriptParser {
22    fn parse(&self, source: &str) -> Result<super::ParsedCode> {
23        // For MVP, just return generic parsed code
24        // Full Oxc integration would require more work with lifetimes
25        Ok(super::ParsedCode::Generic(source.to_string()))
26    }
27}
28
29#[cfg(test)]
30mod tests {
31    use super::*;
32    use crate::{Parser as _, SimpleJavaScriptParser};
33
34    type TestParser = SimpleJavaScriptParser;
35
36    #[test]
37    fn test_parse_javascript() {
38        let parser = TestParser::new();
39        let source = r#"
40            function hello(name) {
41                return "Hello " + name;
42            }
43        "#;
44
45        let result = parser.parse(source);
46        assert!(result.is_ok());
47    }
48
49    #[test]
50    fn test_parse_react() {
51        let parser = TestParser::new();
52        let source = r#"
53            import React from 'react';
54
55            function Button({ children }) {
56                return <button>{children}</button>;
57            }
58        "#;
59
60        let result = parser.parse(source);
61        assert!(result.is_ok());
62    }
63}