kind.go 951 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package ast
  2. import "fmt"
  3. type Kind int
  4. const (
  5. // meta
  6. Invalid Kind = iota
  7. Comment
  8. Key
  9. // top level structures
  10. Table
  11. ArrayTable
  12. KeyValue
  13. // containers values
  14. Array
  15. InlineTable
  16. // values
  17. String
  18. Bool
  19. Float
  20. Integer
  21. LocalDate
  22. LocalTime
  23. LocalDateTime
  24. DateTime
  25. )
  26. func (k Kind) String() string {
  27. switch k {
  28. case Invalid:
  29. return "Invalid"
  30. case Comment:
  31. return "Comment"
  32. case Key:
  33. return "Key"
  34. case Table:
  35. return "Table"
  36. case ArrayTable:
  37. return "ArrayTable"
  38. case KeyValue:
  39. return "KeyValue"
  40. case Array:
  41. return "Array"
  42. case InlineTable:
  43. return "InlineTable"
  44. case String:
  45. return "String"
  46. case Bool:
  47. return "Bool"
  48. case Float:
  49. return "Float"
  50. case Integer:
  51. return "Integer"
  52. case LocalDate:
  53. return "LocalDate"
  54. case LocalTime:
  55. return "LocalTime"
  56. case LocalDateTime:
  57. return "LocalDateTime"
  58. case DateTime:
  59. return "DateTime"
  60. }
  61. panic(fmt.Errorf("Kind.String() not implemented for '%d'", k))
  62. }