run.go 587 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package ec
  2. import(
  3. "fmt"
  4. "io"
  5. "os"
  6. "bufio"
  7. "log"
  8. "surdeus.su/core/cli/mtool"
  9. )
  10. const(
  11. esc = '\\'
  12. )
  13. var(
  14. CharMap = map[string]string{
  15. "n":"\n",
  16. "b":"\b",
  17. "r":"\r",
  18. }
  19. )
  20. func
  21. handleEscChar(rd *bufio.Reader) error {
  22. r, _, e := rd.ReadRune()
  23. if e != nil {
  24. return e
  25. }
  26. fmt.Print(CharMap[string(r)])
  27. return nil
  28. }
  29. func
  30. Run(flags *mtool.Flags) {
  31. rd := bufio.NewReader(os.Stdin)
  32. for {
  33. r, _, e := rd.ReadRune()
  34. if e == io.EOF {
  35. break;
  36. } else if e != nil {
  37. log.Fatal(e)
  38. }
  39. if r == esc {
  40. handleEscChar(rd)
  41. } else {
  42. fmt.Print(string(r))
  43. }
  44. }
  45. }