moss_core/resolve/
ext_kind.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum ExtKind {
8 Image,
9 Iframe,
10 Pdf,
11 Video,
12 Audio,
13 Model,
14 Transclusion, Notebook, Table, Other, }
19
20pub fn reference_kind_for_ext(ext: &str) -> ExtKind {
23 crate::resolve::asset_registry::asset_info(ext)
24 .map(|a| a.kind)
25 .unwrap_or(ExtKind::Other)
26}
27
28#[cfg(test)]
29mod tests {
30 use super::*;
31
32 #[test]
33 fn classifies_each_family() {
34 assert_eq!(reference_kind_for_ext("png"), ExtKind::Image);
35 assert_eq!(reference_kind_for_ext("html"), ExtKind::Iframe);
36 assert_eq!(reference_kind_for_ext("pdf"), ExtKind::Pdf);
37 assert_eq!(reference_kind_for_ext("mp4"), ExtKind::Video);
38 assert_eq!(reference_kind_for_ext("mp3"), ExtKind::Audio);
39 assert_eq!(reference_kind_for_ext("glb"), ExtKind::Model);
40 assert_eq!(reference_kind_for_ext("md"), ExtKind::Transclusion);
41 assert_eq!(reference_kind_for_ext("ipynb"), ExtKind::Notebook);
42 assert_eq!(reference_kind_for_ext("csv"), ExtKind::Table);
43 assert_eq!(reference_kind_for_ext("xyz"), ExtKind::Other);
44 }
45
46 #[test]
47 fn kind_matches_registry_for_all_known_exts() {
48 use crate::resolve::asset_registry::all_assets;
49 for a in all_assets() {
50 assert_eq!(reference_kind_for_ext(a.ext), a.kind, "kind mismatch for {}", a.ext);
51 }
52 assert_eq!(reference_kind_for_ext("avif"), ExtKind::Image); }
54}