Sanity is a fast and easily extensible file name (and in fact any other string) sanitizer.
Sanity provides a sensible default rule set for Windows and Linux file names that will be enough in most cases:
package main
import (
"fmt"
"github.com/dreamscached/sanity/filename"
)
func main() {
// Prints 'con_.txt'
fmt.Println(filename.Windows.Sanitize("con.txt"))
// Prints 'foobar'
fmt.Println(filename.Unix.Sanitize("foo\x00bar.txt"))
}
Sanity provides a clean and obvious way to create custom rule sets with Rule factory functions. For example, here's Linux default file name rule set.
package main
import (
"github.com/dreamscached/sanity"
"github.com/aquilax/truncate"
)
var Unix = sanity.New(
sanity.Replace("/", " "),
sanity.StripRune(0x0),
sanity.Truncate(255, truncate.DEFAULT_OMISSION, truncate.PositionEnd),
)