include!(concat!(env!("OUT_DIR"), "/ls_colours.rs"));
#[cfg(test)]
mod test;
#[inline]
pub fn colour_path_or_alternative<'a>(extension: &'a [u8], or_alternative: &'a [u8]) -> &'a [u8] {
LS_COLOURS_HASHMAP
.get(extension)
.map(|v| &**v)
.unwrap_or_else(|| or_alternative)
}
#[inline]
pub fn colour_path(extension: &[u8]) -> Option<&'static [u8]> {
LS_COLOURS_HASHMAP.get(extension).map(|v| &**v)
}
#[inline]
pub fn colour_path_or_reset(extension: &[u8]) -> &'static [u8] {
LS_COLOURS_HASHMAP
.get(extension)
.map(|v| &**v)
.unwrap_or_else(|| NO_COLOUR)
}
#[macro_export]
macro_rules! file_type_colour {
(symlink) => {
unsafe { $crate::colour_path(b"symlink").unwrap_unchecked() }
};
(directory) => {
unsafe { $crate::colour_path(b"directory").unwrap_unchecked() }
};
(executable) => {
unsafe { $crate::colour_path(b"executable").unwrap_unchecked() }
};
(socket) => {
unsafe { $crate::colour_path(b"socket").unwrap_unchecked() }
};
(pipe) => {
unsafe { $crate::colour_path(b"pipe").unwrap_unchecked() }
};
(block_device) => {
unsafe { $crate::colour_path(b"block_device").unwrap_unchecked() }
};
(character_device) => {
unsafe { $crate::colour_path(b"character_device").unwrap_unchecked() }
};
(sticky) => {
unsafe { $crate::colour_path(b"sticky").unwrap_unchecked() }
};
(orphan_symlink) => {
unsafe { $crate::colour_path(b"orphan_symlink").unwrap_unchecked() }
};
(setuid) => {
unsafe { $crate::colour_path(b"setuid").unwrap_unchecked() }
};
(setgid) => {
unsafe { $crate::colour_path(b"setgid").unwrap_unchecked() }
};
(other_writable) => {
unsafe { $crate::colour_path(b"other_writable").unwrap_unchecked() }
};
($other:expr) => {
$crate::colour_path_or_alternative($other, $crate::NO_COLOUR)
};
}