1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
extern crate reproto_backend as backend; extern crate reproto_core as core; #[macro_use] extern crate genco; #[macro_use] mod utils; mod js_field; mod listeners; mod js_backend; mod js_compiler; mod js_file_spec; mod js_options; use self::backend::{App, ArgMatches, CompilerOptions, Environment, Options}; use self::backend::errors::*; use self::js_backend::JsBackend; use self::js_options::JsOptions; use self::listeners::Listeners; const TYPE: &str = "type"; const TYPE_SEP: &str = "_"; const EXT: &str = "js"; const JS_CONTEXT: &str = "js"; fn setup_module(module: &str) -> Result<Box<Listeners>> { let _module: Box<Listeners> = match module { _ => return Err(format!("No such module: {}", module).into()), }; } pub fn setup_listeners(modules: Vec<String>) -> Result<(JsOptions, Box<Listeners>)> { let mut listeners: Vec<Box<Listeners>> = Vec::new(); for module in modules { listeners.push(setup_module(module.as_str())?); } let mut options = JsOptions::new(); for listener in &listeners { listener.configure(&mut options)?; } Ok((options, Box::new(listeners))) } pub fn compile_options<'a, 'b>(out: App<'a, 'b>) -> App<'a, 'b> { out.about("Compile for JavaScript") } pub fn verify_options<'a, 'b>(out: App<'a, 'b>) -> App<'a, 'b> { out.about("Verify for JavaScript") } pub fn compile( env: Environment, opts: Options, compiler_options: CompilerOptions, _matches: &ArgMatches, ) -> Result<()> { let id_converter = opts.id_converter; let (options, listeners) = setup_listeners(opts.modules)?; let backend = JsBackend::new(env, options, listeners, id_converter); let compiler = backend.compiler(compiler_options)?; compiler.compile() } pub fn verify(env: Environment, opts: Options, _matches: &ArgMatches) -> Result<()> { let id_converter = opts.id_converter; let (options, listeners) = setup_listeners(opts.modules)?; let backend = JsBackend::new(env, options, listeners, id_converter); backend.verify() }