Skip to main content

texform_knowledge/builtin/
mod.rs

1use crate::specs::{
2    BuiltinCharacterRecord, BuiltinCommandRecord, BuiltinDelimiterRecord, BuiltinEnvironmentRecord,
3};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq)]
6pub struct BuiltinPackage {
7    pub name: &'static str,
8    pub commands: &'static [&'static BuiltinCommandRecord],
9    pub environments: &'static [&'static BuiltinEnvironmentRecord],
10    pub characters: &'static [&'static BuiltinCharacterRecord],
11    pub delimiters: &'static [&'static BuiltinDelimiterRecord],
12}
13
14mod generated_prelude {
15    pub use crate::specs::{
16        AllowedMode, BuiltinCharacterAttributes, BuiltinCharacterRecord, BuiltinCommandRecord,
17        BuiltinDelimiterRecord, BuiltinEnvironmentRecord, CommandKind, ContentMode,
18    };
19}
20
21include!(concat!(env!("OUT_DIR"), "/builtin_generated.rs"));
22
23pub fn lookup_package(name: &str) -> Option<&'static BuiltinPackage> {
24    ALL_PACKAGES.iter().find(|pkg| pkg.name == name)
25}
26
27pub fn managed_package_import_order() -> &'static [PackageName] {
28    MANAGED_PACKAGE_IMPORT_ORDER
29}
30
31pub fn all_package_names() -> Vec<&'static str> {
32    ALL_PACKAGES.iter().map(|pkg| pkg.name).collect()
33}