deft 0.15.0

Cross platform ui framework
#[cfg(feature = "http")]
mod http_loader;

use anyhow::anyhow;
use quick_js::loader::JsModuleLoader;
use std::collections::HashMap;
use std::io::{Error, ErrorKind};

#[cfg(feature = "http")]
pub use crate::loader::http_loader::DevModuleLoader;

pub struct StaticModuleLoader {
    sources: HashMap<String, String>,
}

impl StaticModuleLoader {
    pub fn new() -> Self {
        StaticModuleLoader {
            sources: HashMap::new(),
        }
    }
    pub fn add_module(&mut self, module_name: String, source: String) {
        self.sources.insert(module_name, source);
    }
}

impl JsModuleLoader for StaticModuleLoader {
    fn load(&mut self, module_name: &str) -> Result<String, Error> {
        match self.sources.get(module_name) {
            None => Err(Error::new(ErrorKind::NotFound, anyhow!("Not found"))),
            Some(s) => Ok(s.to_string()),
        }
    }
}