#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum FileFormat {
Tex,
Lua,
Fmt,
Tfm,
OpenType,
TrueType,
Type1,
Enc,
Map,
Vf,
Bib,
Bst,
Pict,
Text,
}
#[derive(Debug, Clone, Copy)]
pub struct FormatInfo {
pub env_vars: &'static [&'static str],
pub default_path: &'static str,
pub suffixes: &'static [&'static str],
}
impl FileFormat {
pub fn info(self) -> FormatInfo {
let (env_vars, suffixes): (&[&str], &[&str]) = match self {
FileFormat::Tex => (&["TEXINPUTS"], &[".tex"]),
FileFormat::Lua => (
&["LUAINPUTS"],
&[
".lua", ".luatex", ".luc", ".luctex", ".texlua", ".texluc", ".tlu",
],
),
FileFormat::Fmt => (&["TEXFORMATS"], &[".fmt"]),
FileFormat::Tfm => (&["TFMFONTS"], &[".tfm"]),
FileFormat::OpenType => (&["OPENTYPEFONTS"], &[".otf", ".OTF"]),
FileFormat::TrueType => (&["TTFONTS"], &[".ttf", ".ttc", ".TTF", ".TTC", ".dfont"]),
FileFormat::Type1 => (&["T1FONTS", "T1INPUTS"], &[".pfa", ".pfb"]),
FileFormat::Enc => (&["ENCFONTS"], &[".enc"]),
FileFormat::Map => (&["TEXFONTMAPS"], &[".map"]),
FileFormat::Vf => (&["VFFONTS"], &[".vf"]),
FileFormat::Bib => (&["BIBINPUTS"], &[".bib"]),
FileFormat::Bst => (&["BSTINPUTS"], &[".bst"]),
FileFormat::Pict => (&["TEXPICTS", "TEXINPUTS"], &[]),
FileFormat::Text => (&["TEXINPUTS"], &[]),
};
FormatInfo {
env_vars,
default_path: ".",
suffixes,
}
}
}