- mf.abs = math.abs
- mf.atoi = tonumber
- mf.float — нет необходимости, строки и числа автоматически конвертируются в выражениях
- iif ~ при необходимости элементарно пишется на Lua, хотя в большинстве случаев принято использовать идиому
V = Expr and True or False
(тут необходимо помнить что выражение "True" не должно быть false/nil) - mf.int = math.modf (позволяет получить сразу целую и дробную часть).
Кроме того: math.ceil и math.floor - mf.itoa ≈ string.format (ограниченно)
- mf.max = math.max (параметров может быть >2)
- mf.min = math.min (параметров может быть >2)
- mf.mod = Оператор %
- mf.asc = string.byte
- mf.chr = string.char
- mf.date = os.date, os.time
- mf.index, mf.rindex ≈ string.find, regex.find (оба варианта поддерживают регулярные выражения — регэкспы или паттерны).
mf.rindex не имеет точного соответствия в Lua. При необходимости можно реализовать на Lua, но в большинстве случаев достаточно использовать правильно составленное регулярное выражение. - mf.lcase, mf.ucase = string.lower, string.upper
- mf.len = string.len
- mf.replace = string.gsub, regex.gsub (оба варианта поддерживают регулярные выражения — регэкспы или паттерны).
- mf.string = tostring, string.format
- mf.substr = string.sub
- mf.trim ~ не имеет соответствия в LuaFAR, хотя в АПИ плагинов есть.
Тем не менее в большинстве случаев string.match, regex.match прекрасно справляются с задачей.
- mf.env ≈ win.GetEnv
Отличие: win.GetEnv получает значение, а mf.env может устанавливать/удалять.
Для несуществующей переменной win.GetEnv ничего не возвращает (mf.env возвращает пустую строку) - mf.sleep = win.Sleep
- mf.xlat = far.XLat
Способ указания параметров отличается, при использовании без параметров действие то же. - mf.msgbox = far.Message
Порядок и способ указания параметров отличается. Функциональность шире -> параметров больше.
Нельзя использовать без параметров (первый обязателен). - mf.prompt = far.InputBox
Порядок и способ указания параметров отличается. Функциональность шире -> параметров больше (может быть сложнее в использовании) - mf.fattr ≈ win.GetFileAttr
Отличается способом представления атрибутов (строка а не флаги)
Следующие атрибуты не обрабатываются:
Необходимо учитывать для mf.fattr есть парная функция panel.fattr - mf.fexist ≈ win.GetFileInfo
(Если файл не существует, то функция возвращает nil) - mf.fmatch ≈ far.ProcessName
far.ProcessName имеет более широкую функциональность (может быть сложнее в использовании)
Также в некоторых случаях удобнее воспользоваться string.match или regex.match.
- key, а также akey(0), waitkey(N,1) (бесполезны, т.к. "числовой эквивалент клавиши" не имеет применения в актуальной версии фара).
Кроме того, key может проверять корректность текстового представления клавиши (имхо: малополезно, да и работает с ошибками). - exit позволяет заканчивать исполнение макроса из вложенных функций и корутин. Имхо: избыточная функция.
- В настоящий момент Far поставляется с библиотекой LuaJIT, и некоторые функции имеют расширенное применение: http://luajit.org/extensions.html
- Для поддержки интернациональных символов вместо стандартной библиотеки string используется unicode.utf8 (Selene Unicode)
На практике это означает прозрачную поддержку UTF-8