package goutil import ( "errors" "math" "os" "regexp" "time" "github.com/hako/durafmt" ) func FilterToAlnum(input string) string { re := regexp.MustCompile("[^a-zA-Z0-9]+") return re.ReplaceAllString(input, "") } func TimeDiffHuman(first time.Time, second time.Time) string { if first.Before(second) { return durafmt.ParseShort(second.Sub(first)).String() } else { return durafmt.ParseShort(first.Sub(second)).String() } } // Does anyone else use uints for things that are always >=0 like counts and func TimeDiffAbsSeconds(first time.Time, second time.Time) uint { return uint(math.Abs(first.Sub(second).Truncate(time.Second).Seconds())) } func Mkdirp(p string) error { src, err := os.Stat(p) if os.IsNotExist(err) { errDir := os.MkdirAll(p, 0755) if errDir != nil { return err } return nil } if src.Mode().IsRegular() { return errors.New("file already exists at path") } return nil }