2021-02-15 20:18:31 +01:00
|
|
|
# renderer.nim
|
|
|
|
#
|
|
|
|
# a terminal renderer for readline-like libraries
|
|
|
|
|
|
|
|
import strutils
|
2021-02-19 14:11:25 +01:00
|
|
|
import uniterm
|
2021-02-15 20:18:31 +01:00
|
|
|
|
2021-02-19 14:11:25 +01:00
|
|
|
proc renderLine*(wr: var TermWriter, prompt: string, content: string, hscroll: int = 0) =
|
|
|
|
wr.cr()
|
2021-02-15 20:18:31 +01:00
|
|
|
var content = prompt & content
|
2021-02-19 14:11:25 +01:00
|
|
|
if content.len() < wr.terminalWidth():
|
|
|
|
content &= " ".repeat(wr.terminalWidth() - content.len())
|
|
|
|
if content.len() > wr.terminalWidth():
|
2021-02-15 20:18:31 +01:00
|
|
|
var lower = hscroll
|
2021-02-19 14:11:25 +01:00
|
|
|
var upper = hscroll + wr.terminalWidth() - 1
|
2021-02-15 20:18:31 +01:00
|
|
|
if upper > content.high():
|
|
|
|
upper = content.high()
|
|
|
|
content = content[lower..upper]
|
2021-02-19 14:11:25 +01:00
|
|
|
wr &= content
|
2021-02-15 20:18:31 +01:00
|
|
|
|