use std::collections::HashMap;
use std::sync::LazyLock;
include!(concat!(env!("OUT_DIR"), "/latex_specs_data.rs"));
struct SpecTables {
macros: HashMap<&'static str, &'static str>,
verbatim_macros: std::collections::HashSet<&'static str>,
environments: HashMap<&'static str, &'static str>,
verbatim_environments: std::collections::HashSet<&'static str>,
}
static TABLES: LazyLock<SpecTables> = LazyLock::new(|| SpecTables {
macros: MACROS.iter().copied().collect(),
verbatim_macros: VERBATIM_MACROS.iter().copied().collect(),
environments: ENVIRONMENTS.iter().copied().collect(),
verbatim_environments: VERBATIM_ENVIRONMENTS.iter().copied().collect(),
});
pub fn macro_argspec(name: &str) -> Option<&'static str> {
TABLES.macros.get(name).copied()
}
pub fn is_verbatim_macro(name: &str) -> bool {
TABLES.verbatim_macros.contains(name)
}
pub fn environment_argspec(name: &str) -> Option<&'static str> {
TABLES.environments.get(name).copied()
}
pub fn is_verbatim_environment(name: &str) -> bool {
TABLES.verbatim_environments.contains(name)
}
pub fn specials() -> &'static [&'static str] {
SPECIALS
}