Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright (c) 2016-2017 Daniel Oaks <daniel@danieloaks.net>
  2. // released under the MIT license
  3. package utils
  4. import (
  5. "errors"
  6. "fmt"
  7. "strings"
  8. "time"
  9. )
  10. const (
  11. IRCv3TimestampFormat = "2006-01-02T15:04:05.000Z"
  12. )
  13. var (
  14. ErrInvalidParams = errors.New("Invalid parameters")
  15. )
  16. func StringToBool(str string) (result bool, err error) {
  17. switch strings.ToLower(str) {
  18. case "on", "true", "t", "yes", "y", "enabled":
  19. result = true
  20. case "off", "false", "f", "no", "n", "disabled":
  21. result = false
  22. default:
  23. err = ErrInvalidParams
  24. }
  25. return
  26. }
  27. // Checks that a parameter can be passed as a non-trailing, and returns "*"
  28. // if it can't. See #697.
  29. func SafeErrorParam(param string) string {
  30. if param == "" || param[0] == ':' || strings.IndexByte(param, ' ') != -1 {
  31. return "*"
  32. }
  33. return param
  34. }
  35. type IncompatibleSchemaError struct {
  36. CurrentVersion int
  37. RequiredVersion int
  38. }
  39. func (err *IncompatibleSchemaError) Error() string {
  40. return fmt.Sprintf("Database requires update. Expected schema v%d, got v%d", err.RequiredVersion, err.CurrentVersion)
  41. }
  42. func NanoToTimestamp(nanotime int64) string {
  43. return time.Unix(0, nanotime).UTC().Format(IRCv3TimestampFormat)
  44. }
  45. func BoolDefaultTrue(value *bool) bool {
  46. if value != nil {
  47. return *value
  48. }
  49. return true
  50. }