util.go 1023 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package parser
  2. import (
  3. "bufio"
  4. "github.com/tal-tech/go-zero/tools/goctl/api/spec"
  5. )
  6. var emptyType spec.Type
  7. func GetType(api *spec.ApiSpec, t string) spec.Type {
  8. for _, tp := range api.Types {
  9. if tp.Name == t {
  10. return tp
  11. }
  12. }
  13. return emptyType
  14. }
  15. func isLetterDigit(r rune) bool {
  16. return (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z') || ('0' <= r && r <= '9')
  17. }
  18. func isSpace(r rune) bool {
  19. return r == ' ' || r == '\t'
  20. }
  21. func isSlash(r rune) bool {
  22. return r == '/'
  23. }
  24. func isNewline(r rune) bool {
  25. return r == '\n' || r == '\r'
  26. }
  27. func read(r *bufio.Reader) (rune, error) {
  28. ch, _, err := r.ReadRune()
  29. return ch, err
  30. }
  31. func readLine(r *bufio.Reader) (string, error) {
  32. line, _, err := r.ReadLine()
  33. if err != nil {
  34. return "", err
  35. } else {
  36. return string(line), nil
  37. }
  38. }
  39. func skipSpaces(r *bufio.Reader) error {
  40. for {
  41. next, err := read(r)
  42. if err != nil {
  43. return err
  44. }
  45. if !isSpace(next) {
  46. return unread(r)
  47. }
  48. }
  49. }
  50. func unread(r *bufio.Reader) error {
  51. return r.UnreadRune()
  52. }