1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5pub enum FileFormat {
6 Tex,
8 Lua,
10 Fmt,
12 Tfm,
14 OpenType,
16 TrueType,
18 Type1,
20 Enc,
22 Map,
24 Vf,
26 Bib,
28 Bst,
30 Pict,
32 Text,
34}
35
36#[derive(Debug, Clone, Copy)]
38pub struct FormatInfo {
39 pub env_vars: &'static [&'static str],
41 pub default_path: &'static str,
43 pub suffixes: &'static [&'static str],
45}
46
47impl FileFormat {
48 pub fn info(self) -> FormatInfo {
50 let (env_vars, suffixes): (&[&str], &[&str]) = match self {
51 FileFormat::Tex => (&["TEXINPUTS"], &[".tex"]),
52 FileFormat::Lua => (
53 &["LUAINPUTS"],
54 &[
55 ".lua", ".luatex", ".luc", ".luctex", ".texlua", ".texluc", ".tlu",
56 ],
57 ),
58 FileFormat::Fmt => (&["TEXFORMATS"], &[".fmt"]),
59 FileFormat::Tfm => (&["TFMFONTS"], &[".tfm"]),
60 FileFormat::OpenType => (&["OPENTYPEFONTS"], &[".otf", ".OTF"]),
61 FileFormat::TrueType => (&["TTFONTS"], &[".ttf", ".ttc", ".TTF", ".TTC", ".dfont"]),
62 FileFormat::Type1 => (&["T1FONTS", "T1INPUTS"], &[".pfa", ".pfb"]),
63 FileFormat::Enc => (&["ENCFONTS"], &[".enc"]),
64 FileFormat::Map => (&["TEXFONTMAPS"], &[".map"]),
65 FileFormat::Vf => (&["VFFONTS"], &[".vf"]),
66 FileFormat::Bib => (&["BIBINPUTS"], &[".bib"]),
67 FileFormat::Bst => (&["BSTINPUTS"], &[".bst"]),
68 FileFormat::Pict => (&["TEXPICTS", "TEXINPUTS"], &[]),
69 FileFormat::Text => (&["TEXINPUTS"], &[]),
70 };
71 FormatInfo {
72 env_vars,
73 default_path: ".",
74 suffixes,
75 }
76 }
77}