ntfsanitise 0.3.0

Sanitise filenames for use on NTFS filesystems
Documentation
ntfsanitise
===

[![Unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)
](https://github.com/rust-secure-code/safety-dance/)
[![Latest Version](https://img.shields.io/crates/v/ntfsanitise.svg)](https://crates.io/crates/ntfsanitise)
[![docs.rs](https://img.shields.io/docsrs/ntfsanitise)](https://docs.rs/ntfsanitise)
![MSRV](https://img.shields.io/crates/msrv/ntfsanitise)
![License](https://img.shields.io/crates/l/ntfsanitise)
[![Coverage](https://gitlab.com/Lynnesbian/ntfsanitise/badges/main/coverage.svg?job=cargo-tarpaulin)
](https://gitlab.com/Lynnesbian/ntfsanitise/-/graphs/main/charts#:~:text=Code%20coverage%20statistics)
[![Pipeline Status](https://gitlab.com/Lynnesbian/ntfsanitise/badges/main/pipeline.svg)
](https://gitlab.com/Lynnesbian/ntfsanitise/-/pipelines)

A tiny crate for sanitising filenames for use on NTFS filesystems.

The set of banned characters are exported as the constant
[`BANNED`](https://docs.rs/ntfsanitise/latest/ntfsanitise/constant.BANNED.html).

# Usage

```rust
// path-related features require the standard library
#[cfg(feature = "std")]
fn main() {
	use ntfsanitise::{sanitise, is_dirty, is_clean, PathExt, PathBufExt};
	use std::path::PathBuf;

	// sanitise strings
	let input = "unsuitable:filename?.txt";
	assert!(is_dirty(input));
	let sanitised = sanitise(input, "_");
	assert_eq!(sanitised, "unsuitable_filename_.txt");
	assert!(is_clean(sanitised));

	// sanitise paths
	let mut path = PathBuf::from("/home/user/<file>.txt");
	assert!(path.is_dirty());
	path.sanitise_filename("_");

	assert!(path.is_clean());
	assert!(path.file_name().is_some_and(|file_name| file_name.to_str() == Some("_file_.txt")));
}

#[cfg(not(feature = "std"))]
fn main() {
	use ntfsanitise::{BANNED, is_clean, is_dirty};

	// no_std support
	assert!(is_dirty("unsuitable:filename.txt"));
	assert!(is_clean("suitable_filename.txt"));
	assert!(BANNED.contains(&'<'));
}
```