Spec-Zone.ru › Nim 1

терминал

Этот модуль содержит несколько процедур для управления терминалом (также называемым консолью). В UNIX реализация просто использует последовательности ANSI-экранов и не зависит от других модулей, в Windows используется API Windows. Изменение стиля сохраняется даже после завершения программы! Используйте код system.addQuitProc(resetAttributes) для восстановления значений по умолчанию. Аналогично, если вы скрыли курсор, убедитесь, что вы его покажете с помощью showCursor перед выходом.

Импорты

macros, strformat, strutils, colors, termios, posix, os, parseutils, termios

Типы

Style = enum
  styleBright = 1,          ## bright text
  styleDim,                 ## dim text
  styleItalic,              ## italic (or reverse on terminals not supporting)
  styleUnderscore,          ## underscored text
  styleBlink,               ## blinking/bold text
  styleBlinkRapid,          ## rapid blinking/bold text (not widely supported)
  styleReverse,             ## reverse
  styleHidden,              ## hidden text
  styleStrikethrough         ## strikethrough
различные стили вывода текста Исходный код Редактировать
ForegroundColor = enum
  fgBlack = 30,             ## black
  fgRed,                    ## red
  fgGreen,                  ## green
  fgYellow,                 ## yellow
  fgBlue,                   ## blue
  fgMagenta,                ## magenta
  fgCyan,                   ## cyan
  fgWhite,                  ## white
  fg8Bit,                   ## 256-color (not supported, see ``enableTrueColors`` instead.)
  fgDefault                  ## default terminal foreground color
цвета переднего плана терминала Исходный код Редактировать
BackgroundColor = enum
  bgBlack = 40,             ## black
  bgRed,                    ## red
  bgGreen,                  ## green
  bgYellow,                 ## yellow
  bgBlue,                   ## blue
  bgMagenta,                ## magenta
  bgCyan,                   ## cyan
  bgWhite,                  ## white
  bg8Bit,                   ## 256-color (not supported, see ``enableTrueColors`` instead.)
  bgDefault                  ## default terminal background color
цвета заднего плана терминала Исходный код Редактировать
TerminalCmd = enum
  resetStyle,               ## reset attributes
  fgColor,                  ## set foreground's true color
  bgColor                    ## set background's true color
команды, которые могут быть выражены как аргументы Исходный код Редактировать

Константы

ansiResetCode = "\e[0m"
Исходный код Редактировать

Процедуры

proc terminalWidthIoctl(fds: openArray[int]): int {...}{.raises: [], tags: [].}
Возвращает ширину терминала из первого файла описания, поддерживающего ioctl. Исходный код Редактировать
proc terminalHeightIoctl(fds: openArray[int]): int {...}{.raises: [], tags: [].}
Возвращает высоту терминала из первого файла описания, поддерживающего ioctl. Исходный код Редактировать
proc terminalWidth(): int {...}{.raises: [ValueError], tags: [ReadEnvEffect].}
Возвращает разумную ширину терминала, используя стандартные файлы описания, управляющий терминал, переменные окружения или традиционные методы. Исходный код Редактировать
proc terminalHeight(): int {...}{.raises: [ValueError], tags: [ReadEnvEffect].}
Возвращает разумную высоту терминала, используя стандартные файлы описания, управляющий терминал, переменные окружения или традиционные методы. Возвращает ноль, если высота не может быть определена. Исходный код Редактировать
proc terminalSize(): tuple[w, h: int] {...}{.raises: [ValueError],
                                        tags: [ReadEnvEffect].}
Возвращает ширину и высоту терминала в виде кортежа. Внутренне вызывает terminalWidth и terminalHeight, поэтому применяются те же предположения. Исходный код Редактировать
proc hideCursor(f: File) {...}{.raises: [IOError], tags: [WriteIOEffect].}
Скрывает курсор. Исходный код Редактировать
proc showCursor(f: File) {...}{.raises: [IOError], tags: [WriteIOEffect].}
Показать курсор. Исходный код Редактировать
proc setCursorPos(f: File; x, y: int) {...}{.raises: [IOError, ValueError],
                                        tags: [WriteIOEffect].}
Устанавливает курсор терминала в позицию (x, y). (0,0) — верхний левый угол экрана. Исходный код Редактировать
proc setCursorXPos(f: File; x: int) {...}{.raises: [IOError, ValueError],
                                      tags: [WriteIOEffect].}
Устанавливает курсор терминала в позицию x. Позиция y не изменяется. Исходный код Редактировать
proc cursorUp(f: File; count = 1) {...}{.raises: [IOError], tags: [WriteIOEffect].}
Перемещает курсор вверх на count строк. Исходный код Редактировать
proc cursorDown(f: File; count = 1) {...}{.raises: [IOError, ValueError],
                                      tags: [WriteIOEffect].}
Перемещает курсор вниз на count строк. Исходный код Редактировать
proc cursorForward(f: File; count = 1) {...}{.raises: [IOError, ValueError],
    tags: [WriteIOEffect].}
Перемещает курсор вправо на count столбцов. Исходный код Редактировать
proc cursorBackward(f: File; count = 1) {...}{.raises: [IOError, ValueError],
    tags: [WriteIOEffect].}
Перемещает курсор влево на count столбцов. Исходный код Редактировать
proc eraseLine(f: File) {...}{.raises: [IOError, ValueError], tags: [WriteIOEffect].}
Очищает текущую строку. Исходный код Редактировать
proc eraseScreen(f: File) {...}{.raises: [IOError], tags: [WriteIOEffect].}
Очищает экран с цветом фона и перемещает курсор в начало. Исходный код Редактировать
proc resetAttributes(f: File) {...}{.raises: [IOError], tags: [WriteIOEffect].}
Сбрасывает все атрибуты. Исходный код Редактировать
proc ansiStyleCode(style: int): string {...}{.raises: [ValueError], tags: [].}
Исходный код Редактировать
proc setStyle(f: File; style: set[Style]) {...}{.raises: [IOError, ValueError],
    tags: [WriteIOEffect].}
Устанавливает стиль терминала. Исходный код Редактировать
proc writeStyled(txt: string; style: set[Style] = {styleBright}) {...}{.
    raises: [IOError, ValueError], tags: [WriteIOEffect].}
Выводит текст txt в заданный style в стандартный вывод. Исходный код Редактировать
proc setForegroundColor(f: File; fg: ForegroundColor; bright = false) {...}{.
    raises: [IOError, ValueError], tags: [WriteIOEffect].}
Устанавливает цвет переднего плана терминала. Исходный код Редактировать
proc setBackgroundColor(f: File; bg: BackgroundColor; bright = false) {...}{.
    raises: [IOError, ValueError], tags: [WriteIOEffect].}
Устанавливает цвет фона терминала. Исходный код Редактировать
proc ansiForegroundColorCode(fg: ForegroundColor; bright = false): string {...}{.
    raises: [ValueError], tags: [].}
Исходный код Редактировать
proc ansiForegroundColorCode(color: Color): string {...}{.raises: [ValueError],
    tags: [].}
Исходный код Редактировать
proc ansiBackgroundColorCode(color: Color): string {...}{.raises: [ValueError],
    tags: [].}
Исходный код Редактировать
proc setForegroundColor(f: File; color: Color) {...}{.raises: [IOError, ValueError],
    tags: [RootEffect, WriteIOEffect].}
Устанавливает истинный цвет переднего плана терминала. Исходный код Редактировать
proc setBackgroundColor(f: File; color: Color) {...}{.raises: [IOError, ValueError],
    tags: [RootEffect, WriteIOEffect].}
Устанавливает истинный цвет фона терминала. Исходный код Редактировать
proc isatty(f: File): bool {...}{.raises: [], tags: [].}
Возвращает true, если f ассоциирован с устройством терминала. Исходный код Редактировать
proc getch(): char {...}{.raises: [IOError, EOFError], tags: [ReadIOEffect].}
Считывает один символ из терминала, блокируя до его ввода. Символ не выводится на терминал. Исходный код Редактировать
proc readPasswordFromStdin(prompt: string; password: var TaintedString): bool {...}{.
    tags: [ReadIOEffect, WriteIOEffect], raises: [IOError].}
Исходный код Редактировать
proc readPasswordFromStdin(prompt = "password: "): TaintedString {...}{.
    raises: [IOError], tags: [ReadIOEffect, WriteIOEffect].}
Считывает пароль из стандартного ввода без его вывода. Исходный код Редактировать
proc resetAttributes() {...}{.noconv, raises: [IOError], tags: [WriteIOEffect].}
Сбрасывает все атрибуты в стандартном выводе. Рекомендуется зарегистрировать эту функцию как процедуру выхода с помощью system.addQuitProc(resetAttributes). Исходный код Редактировать
proc isTrueColorSupported(): bool {...}{.raises: [], tags: [RootEffect].}
Возвращает true, если терминал поддерживает истинный цвет. Исходный код Редактировать
proc enableTrueColors() {...}{.raises: [], tags: [RootEffect, ReadEnvEffect].}
Включить истинный цвет. Исходный код Редактировать
proc disableTrueColors() {...}{.raises: [], tags: [RootEffect].}
Отключить истинный цвет. Исходный код Редактировать

Макросы

macro styledWrite(f: File; m: varargs[typed]): untyped

Аналогично write, но обрабатывает аргументы стиля терминала специально. Когда какой-либо аргумент является Style, set[Style], ForegroundColor, BackgroundColor или TerminalCmd, он не передаётся непосредственно в f, а вместо этого вызывается соответствующая процедура стиля терминала.

Пример:

stdout.styledWrite(fgRed, "red text ")
stdout.styledWrite(fgGreen, "green text")
Исходный код Редактировать

Шаблоны

template ansiStyleCode(style: Style): string
Исходный код Редактировать
template ansiStyleCode(style: static[Style]): string
Исходный код Редактировать
template ansiForegroundColorCode(fg: static[ForegroundColor];
                                 bright: static[bool] = false): string
Исходный код Редактировать
template ansiForegroundColorCode(color: static[Color]): string
Исходный код Редактировать
template ansiBackgroundColorCode(color: static[Color]): string
Исходный код Редактировать
template styledWriteLine(f: File; args: varargs[untyped])

Вызывает styledWrite и добавляет перевод строки в конце.

Пример:

proc error(msg: string) =
  styledWriteLine(stderr, fgRed, "Error: ", resetStyle, msg)
Исходный код Редактировать
template styledEcho(args: varargs[untyped])
Выводит аргументы стилей в стандартный вывод, используя styledWriteLine. Исходный код Редактировать
template hideCursor()
Исходный код Редактировать
template showCursor()
Исходный код Редактировать
template setCursorPos(x, y: int)
Исходный код Редактировать
template setCursorXPos(x: int)
Исходный код Редактировать
template cursorUp(count = 1)
Исходный код Редактировать
template cursorDown(count = 1)
Исходный код Редактировать
template cursorForward(count = 1)
Исходный код Редактировать
template cursorBackward(count = 1)
Исходный код Редактировать
template eraseLine()
Исходный код Редактировать
template eraseScreen()
Исходный код Редактировать
template setStyle(style: set[Style])
Исходный код Редактировать
template setForegroundColor(fg: ForegroundColor; bright = false)
Исходный код Редактировать
template setBackgroundColor(bg: BackgroundColor; bright = false)
Исходный код Редактировать
template setForegroundColor(color: Color)
Исходный код Редактировать
template setBackgroundColor(color: Color)
Исходный код Редактировать

© 2006–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/terminal.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API