#![deny(missing_docs)]
mod executor;
mod languages;
mod types;
#[cfg(feature = "interpreters-wasm")]
mod wasm_bindings;
pub use executor::Executor;
pub use types::*;
pub mod lang {
#[cfg(feature = "interpreters-rhai")]
pub use super::languages::rhai::RhaiExecutor;
#[cfg(feature = "interpreters-lua")]
pub use super::languages::lua::LuaExecutor;
#[cfg(feature = "interpreters-js")]
pub use super::languages::javascript::JavaScriptExecutor;
#[cfg(feature = "interpreters-python")]
pub use super::languages::python::PythonExecutor;
}
#[allow(clippy::vec_init_then_push)]
pub fn supported_languages() -> Vec<Language> {
let mut languages = Vec::new();
#[cfg(feature = "interpreters-rhai")]
languages.push(Language::Rhai);
#[cfg(feature = "interpreters-lua")]
languages.push(Language::Lua);
#[cfg(feature = "interpreters-js")]
languages.push(Language::JavaScript);
#[cfg(feature = "interpreters-python")]
languages.push(Language::Python);
languages
}
pub fn is_language_supported(language: Language) -> bool {
match language {
#[cfg(feature = "interpreters-rhai")]
Language::Rhai => true,
#[cfg(feature = "interpreters-lua")]
Language::Lua => true,
#[cfg(feature = "interpreters-js")]
Language::JavaScript => true,
#[cfg(feature = "interpreters-python")]
Language::Python => true,
#[allow(unreachable_patterns)]
_ => false,
}
}