Система.Консоль.Terminfo.Base
| Maintainer | judah.jacobson@gmail.com |
|---|---|
| Stability | experimental |
| Portability | portable (FFI) |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Содержание
Описание
Этот модуль предоставляет низкоуровневый интерфейс к функциям C библиотеки terminfo.
ПРИМЕЧАНИЕ: Поскольку эта библиотека построена поверх интерфейса curses, она не является потокобезопасной.
Инициализация
setupTerm :: String -> IO Terminal Source
Инициализирует библиотеку terminfo для заданной записи терминала.
Выбрасывает SetupTermError если базу данных terminfo не удалось прочитать.
setupTermFromEnv :: IO Terminal Source
Инициализирует библиотеку terminfo, используя переменную окружения TERM. Если TERM не установлена, используется общая, минимальная запись dumb.
Выбрасывает SetupTermError если базу данных terminfo не удалось прочитать.
data SetupTermError Source
Экземпляры
Возможности
data Capability a Source
Функция или операция, которую может определить Terminal.
Экземпляры
getCapability :: Terminal -> Capability a -> Maybe a Source
tiGetFlag :: String -> Capability Bool Source
Ищет булеву возможность в базе данных terminfo.
В отличие от tiGuardFlag, эта возможность никогда не приводит к ошибке; она возвращает False если возможность отсутствует или установлена в false, и возвращает True в противном случае.
tiGuardFlag :: String -> Capability () Source
Ищет булеву возможность в базе данных terminfo и выдает ошибку, если она не определена.
tiGetNum :: String -> Capability Int Source
Ищет числовую возможность в базе данных terminfo.
tiGetStr :: String -> Capability String Source
Устарело: используйте tiGetOutput вместо этого.
Ищет строковую возможность в базе данных terminfo. ПРИМЕЧАНИЕ: Эта функция устарела; используйте tiGetOutput1 вместо этого.
Вывод
Terminfo содержит много строковых возможностей для специальных эффектов. Например, возможность cuu1 перемещает курсор на одну строку вверх; на терминалах ANSI это достигается путем вывода управляющей последовательности "\ESC[A". Однако, некоторые старые терминалы также требуют «дополнительного заполнения» или коротких пауз после некоторых команд. Например, при TERM=vt100 возможность cuu1 является "\ESC[A$<2>", что указывает terminfo на паузу в две миллисекунды после вывода управляющей последовательности.
Моноид TermOutput абстрагирует весь вывод заполнения и управляющих последовательностей. К сожалению, этот тип данных трудно интегрировать в существующие API на основе String, такие как pretty-printers. Таким образом, в качестве обходного пути, tiGetOutput1 также позволяет нам получать доступ к управляющим последовательностям как Strings. Единственное предостережение заключается в том, что он не позволит вам получить доступ к управляющим последовательностям с заполнением как Strings. Например:
> t <- setupTerm "vt100" > isJust (getCapability t (tiGetOutput1 "cuu1") :: Maybe String) False > isJust (getCapability t (tiGetOutput1 "cuu1") :: Maybe TermOutput) True
String возможности будут работать с программными типами терминалов, такими как xterm и linux. Однако, вы должны использовать TermOutput, если совместимость со старыми терминалами важна. Кроме того, возможность visualBell, которая мигает экраном, обычно производит свой эффект с директивой заполнения, поэтому она будет работать только с TermOutput.
tiGetOutput1 :: forall f. OutputCap f => String -> Capability f Source
Ищет возможность вывода, которая принимает фиксированное количество параметров (например, Int -> Int -> TermOutput).
Для возможностей, которые могут содержать заполнение переменной длины, используйте tiGetOutput вместо этого.
Минимальное полное определение
hasOkPadding, outputCap
class (Monoid s, OutputCap s) => TermStr s Source
Экземпляры
TermOutput
data TermOutput Source
Действие, которое отправляет вывод в терминал. Этот вывод может смешивать обычный текст с управляющими символами и escape-последовательностями, а также с задержками (называемыми "padding"), необходимыми для некоторых старых терминалов.
Экземпляры
runTermOutput :: Terminal -> TermOutput -> IO () Source
Записывает вывод терминала в стандартное устройство вывода.
hRunTermOutput :: Handle -> Terminal -> TermOutput -> IO () Source
Записывает вывод терминала в терминал или файл, управляемый данным Handle.
termText :: String -> TermOutput Source
tiGetOutput :: String -> Capability ([Int] -> LinesAffected -> TermOutput) Source
Ищет выходную возможность в базе данных terminfo.
type LinesAffected = Int Source
Параметр для указания количества затронутых строк. Некоторые возможности (например, clear и dch1) используют этот параметр на некоторых терминалах для вычисления заполнения переменной длины.
Функции моноида
Класс моноидов (типы с ассоциативной бинарной операцией, имеющей тождество). Экземпляры должны удовлетворять следующим законам:
mappend mempty x = x
mappend x mempty = x
mappend x (mappend y z) = mappend (mappend x y) z
mconcat =
foldrmappend mempty
Имена методов относятся к моноиду списков при конкатенации, но есть много других экземпляров.
Некоторые типы можно рассматривать как моноид более чем одним способом, например, как сложение, так и умножение чисел. В таких случаях мы часто определяем newtypes и делаем эти экземпляры Monoid, например, Sum и Product.
Методы
Тождество mappend
Ассоциативная операция
Сворачивает список с использованием моноида. Для большинства типов будет использовано стандартное определение для mconcat, но функция включена в определение класса, чтобы можно было предоставить оптимизированную версию для конкретных типов.
Экземпляры
| Monoid Ordering | |
| Monoid () | |
| Monoid TermOutput | |
| Monoid [a] | |
| Ord a => Monoid (Max a) | |
| Ord a => Monoid (Min a) | |
| Monoid a => Monoid (Maybe a) | Поднимает полугруппу в |
| Monoid b => Monoid (a -> b) | |
| (Monoid a, Monoid b) => Monoid (a, b) | |
| Monoid a => Monoid (Const a b) | |
| Monoid (Proxy k s) | |
| (Monoid a, Monoid b, Monoid c) => Monoid (a, b, c) | |
| (Monoid a, Monoid b, Monoid c, Monoid d) => Monoid (a, b, c, d) | |
| (Monoid a, Monoid b, Monoid c, Monoid d, Monoid e) => Monoid (a, b, c, d, e) |
(<#>) :: Monoid m => m -> m -> m infixl 2 Source
Операторная версия mappend.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/terminfo-0.4.0.1/System-Console-Terminfo-Base.html