jsx_one/
code.rs

1use swc_common::{
2    errors::{ColorConfig, Handler},
3    sync::Lrc,
4    FileName, SourceMap,
5};
6
7use swc_ecmascript::parser::{lexer::Lexer, Capturing, Parser, StringInput, Syntax};
8
9use crate::codegen::react::ReactCodgen;
10pub fn code(st: &str) {
11    let cm: Lrc<SourceMap> = Default::default();
12    let handler = Handler::with_tty_emitter(ColorConfig::Auto, true, false, Some(cm.clone()));
13    let fm = cm.new_source_file(FileName::Custom("test.js".into()), st.into());
14
15    let lexer = Lexer::new(
16        Syntax::Typescript(Default::default()),
17        Default::default(),
18        StringInput::from(&*fm),
19        None,
20    );
21
22    let capturing = Capturing::new(lexer);
23
24    let mut parser = Parser::new_from(capturing);
25
26    for e in parser.take_errors() {
27        e.into_diagnostic(&handler).emit();
28    }
29
30    let module = parser
31        .parse_typescript_module()
32        .map_err(|e| e.into_diagnostic(&handler).emit())
33        .expect("Failed to parse module.");
34    let reactcodegen = ReactCodgen::new(module.clone());
35    let i = reactcodegen.parse_react();
36    println!(" {:#?} {}", &module, i)
37}