You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
2.6KB

  1. (module format (terminal-code-reset terminal-code-bold terminal-code-fg-red)
  2. (import scheme)
  3. (import (chicken base))
  4. (import matchable)
  5. (define (terminal-code str)
  6. (string-append "\u001b[" str "m"))
  7. (define terminal-code-reset
  8. (terminal-code "0"))
  9. (define terminal-code-bold
  10. (terminal-code "1"))
  11. (define terminal-code-fg-black
  12. (terminal-code "30"))
  13. (define terminal-code-fg-red
  14. (terminal-code "31"))
  15. (define terminal-code-fg-green
  16. (terminal-code "32"))
  17. (define terminal-code-fg-yellow
  18. (terminal-code "33"))
  19. (define terminal-code-fg-blue
  20. (terminal-code "34"))
  21. (define terminal-code-fg-magenta
  22. (terminal-code "35"))
  23. (define terminal-code-fg-cyan
  24. (terminal-code "36"))
  25. (define terminal-code-fg-white
  26. (terminal-code "37"))
  27. (define terminal-code-fg-bright-black
  28. (terminal-code "30;1"))
  29. (define terminal-code-fg-bright-red
  30. (terminal-code "31;1"))
  31. (define terminal-code-fg-bright-green
  32. (terminal-code "32;1"))
  33. (define terminal-code-fg-bright-yellow
  34. (terminal-code "33;1"))
  35. (define terminal-code-fg-bright-blue
  36. (terminal-code "34;1"))
  37. (define terminal-code-fg-bright-magenta
  38. (terminal-code "35;1"))
  39. (define terminal-code-fg-bright-cyan
  40. (terminal-code "36;1"))
  41. (define terminal-code-fg-bright-white
  42. (terminal-code "37;1"))
  43. (define terminal-code-bg-black
  44. (terminal-code "40"))
  45. (define terminal-code-bg-red
  46. (terminal-code "41"))
  47. (define terminal-code-bg-green
  48. (terminal-code "42"))
  49. (define terminal-code-bg-yellow
  50. (terminal-code "43"))
  51. (define terminal-code-bg-blue
  52. (terminal-code "44"))
  53. (define terminal-code-bg-magenta
  54. (terminal-code "45"))
  55. (define terminal-code-bg-cyan
  56. (terminal-code "46"))
  57. (define terminal-code-bg-white
  58. (terminal-code "47"))
  59. (define terminal-code-bg-bright-black
  60. (terminal-code "40;1"))
  61. (define terminal-code-bg-bright-red
  62. (terminal-code "41;1"))
  63. (define terminal-code-bg-bright-green
  64. (terminal-code "42;1"))
  65. (define terminal-code-bg-bright-yellow
  66. (terminal-code "43;1"))
  67. (define terminal-code-bg-bright-blue
  68. (terminal-code "44;1"))
  69. (define terminal-code-bg-bright-magenta
  70. (terminal-code "45;1"))
  71. (define terminal-code-bg-bright-cyan
  72. (terminal-code "46;1"))
  73. (define terminal-code-bg-bright-white
  74. (terminal-code "47;1"))
  75. (define (format str)
  76. (let loop (input result state)
  77. (if (null? input)
  78. (list->string (reverse result))
  79. (match (cons (car input) state)
  80. ((#\< . 'text) (loop (cdr input) result 'enter-tag))
  81. ((#\b . 'enter-tag) (loop (cdr input)