Пользовательские дополнения

На главную


AddonBase.lua

Скрипт содержит различные общеупотребительные функции.

Путь: '''/Interface/Common/CoreScripts/AddonBase.lua'''

Зависимости:

Функции, алиасы и переменные доступные всегда:

Глобальные переменные:
 ADDON_NAME - string - системное имя аддона
 HALF_PI = math.pi / 2
 DOUBLE_PI = math.pi * 2
 TO_DEGREES = 180 / math.pi
 TO_RADIANS = math.pi / 180

Алиасы:
 apitype = common.GetApiType
 IsWs = common.IsWString
 IsVt = common.IsValuedText
 IsVo = common.IsValuedObject
 IsValidText = common.IsValidText
 IntWs = common.FormatInt
 FloatWs = common.FormatFloat
 NumberWs = common.FormatNumber
 GetIntWs = common.GetIntFromWString
 GetEWs = common.GetEmptyWString      -- Пояснение: Оптимизировано, возвращает статическую переменную а не новый экземпляр пустого WString
 GetEVt = common.CreateValuedText     -- Пояснение: Рекомендуется использовать только без параметров
 GetEVo = common.CreateValuedObject
 CreateVt = common.CreateValuedText   -- Пояснение: Рекомендуется использовать только с параметром textValues

Функции:
 table.isempty( tab ) - Проверка таблицы tab на пустоту, без проверки типов
 table.size( tab ) - Количество ключей в таблице tab, без проверки типов
 table.map( tab ) - "Перевернуть" таблицу tab (ключ-значение => значение-ключ), без проверки типов, без проверки корректности биективного преобразования
 table.minn( tab ) - Возвращает минимальный числовой ключ в таблице tab, при отсутствии числовых ключей возвращает nil, без проверки типов
 table.maxn2( tab ) - Возвращает максимальный числовой ключ в таблице tab, при отсутствии числовых ключей возвращает nil, без проверки типов
 table.append( tab, arg1, arg2 ) - Аналог table.insert по параметрам, но вставляет не одно значение а все из таблицы
 table.normalize( tab ) - Меняет индексацию таблицы с 0 на 1, без проверки типов
 table.denormalize( tab ) - Меняет индексацию таблицы с 1 на 0, без проверки типов
 table.index( tab, ... ) - Эквивалент val = tab[ arg1 ][ arg2 ]...[ argN ], без проверки типов
 table.newindex( tab, ... ) - Эквивалент tab[ arg1 ][ arg2 ]...[ argN - 1 ] = argN, без проверки типов

 table.getcount( tab, entry, [equal] ) - Количество элементов entry в таблице tab, без проверки типов
  Параметры:
   tab - table - таблица в которой производится подсчет
   entry - any - искомое значение
   equal - function or nil - Функция компаратор (по умолчанию проверка на равенство)
  Возвращаемые значения:
   number - количество вхождений

 table.search( tab, entry, [equal] ) - Поиск элемента entry в таблице tab, без проверки типов
  Параметры:
   tab - table - таблица в которой производится поиск
   entry - any - искомое значение
   equal - function or nil - Функция компаратор (по умолчанию проверка на равенство)
  Возвращаемые значения:
   boolean - найдено или нет
   [any] - ключ по которому найден entry (если найден, если несколько то произвольный из их числа)

 table.binsearch( tab, entry, [comp], [equal] ) - Бинарный поиск элемента entry в таблице tab, tab должна иметь непрерывную индексацию с 1 и быть отсортирована, без проверки типов
  Параметры:
   tab - table - таблица в которой производится поиск
   entry - any - искомое значение
   comp - function or nil - Функция компаратор "меньше" (по умолчанию проверка на меньше)
   equal - function or nil - Функция компаратор "равно" (по умолчанию проверка на равенство)
  Возвращаемые значения:
   Если элемент найден:
    true
    any - ключ по которому найден entry (если несколько то произвольный из их числа)
    any - значение по данному ключу
   Если элемент не найден:
    false
    any - ключ при вставке по которому entry (через table.insert) сортировка таблицы сохранится
    any - текущее значение по данному ключу

 table.getrandom( tab ) - Получить случайную пару ключ/значение из таблицы tab, без проверки типов
 string.escape( str ) - Экранировать управляющие символы регулярных выражений в строке str, без проверки типов

 string.split( str, [separators], [noEscape] ) - Разбить строку на массив подстрок по заданным сепараторам
  Разбиение выполняется по регулярке: "([^" .. separators .. "]+)"
  Параметры:
   str - string - строка к разбиению
   separators- string or nil - символы по которым будет выполнено разбиение (по умолчанию - пробельные символы)
   noEscape- boolean or nil - не экранировать управляющие символы в separators (по умолчанию false)
  Возвращаемые значения:
   table of strings (from 1) - результат разбиения: массив строк индексированный с 1

 ValidateText( text ) - Валидирует текст (через common.IsValidText), при запуске с lua невалидный текст меняется на подробное сообщение об ошибке, при запуске с luac - на пустую строку
 JoinTextValues( values, [glueFormatWString], [iter] ) - Склеивает все тексты из values в один
  Параметры:
   values - table - исходные тексты (WString, ValuedText или ValuedObject в любых комбинациях)
   glueFormatWString - WString or nil - Формат склейки двух элементов, должен содержать теги __accumulated_value, __added_value. По умолчанию State::DefaultJoinTextValuesFormat
   iter - function or nil - Итератор по values, по умолчанию ipairs
  Возвращаемые значения:
   ValuedText - результирующий текст

 GetAddonText( [sysGroup], sysName, [optional] ) - получить текст sysName из группы аддона sysGroup с кешированием
 GetStateText( [sysGroup], sysName, [optional] ) - получить текст sysName из группы стейта sysGroup с кешированием
 GetAddonTexture( [sysGroup], sysName, [optional] ) - получить текстуру sysName из группы аддона sysGroup с кешированием
 GetStateTexture( [sysGroup], sysName, [optional] ) - получить текстуру sysName из группы стейта sysGroup с кешированием
 GetAddonSound( [sysGroup], sysName, [optional] ) - получить простой звук sysName из группы аддона sysGroup с кешированием
 GetStateSound( [sysGroup], sysName, [optional] ) - получить простой звук sysName из группы стейта sysGroup с кешированием
  Параметр sysGroup может быть не задан - по умолчанию Common
  Параметр optional - если задано то отсутствие ресурса (или группы) не считается ошибкой

 getindex( val ) - Алиас для getindex_rw
  Получить "индекс" от произвольного значения
  Если значение это не userdata - вернет само значение
  Если значение это userdata - вернет эквивалентную userdata, при этом
   1) Все методы userdata и API продолжают корректно с ней работать
   2) Гарантируется что getindex( userdata1 ) == getindex( userdata2 ) выполняется тогда и только тогда когда юзердаты равны по значению (равенство по ссылке не требуется)
   3) Выполнение предыдущего пункта гарантируется независимо от времени вызова getindex (до перезапуска аддона)
  Варианты getindex:
   getindex_rw - Получить и сохранить индекс
   getindex_ro - получить, но не сохранять индекс (если от данной юзердаты (по значению) не брался getindex_rw то последующие вызовы getindex не будут удовлетворять свойству 2)
   getindex_fast_rw - getindex_rw без проверок, требуется действительная userdata на входе (иначе ошибка)
   getindex_fast_ro - getindex_ro без проверок, требуется действительная userdata на входе (иначе ошибка)

 zpairs - аналог ipairs для индексации с 0

Функции, алиасы и переменные доступные при наличии логирования (определяется по наличию FromWs):

Глобальные переменные:
 LOG_MULTILINE_FORMAT = true - Выполнять преобразование вывода N строк за раз в в вывод N раз по одной строке (удобно для вывода в консоль)

Функции:
 ReloadAddon() - Перезагрузить самого себя
 advtostring( val ) - Преобразовать что угодно в "красивую" строку
 LogInfo( ... ) - Вывести произвольные данные в лог с уровнем INFO
 LogWarning( ... ) - Вывести произвольные данные в лог с уровнем WARNING
 LogError( ... ) - Вывести произвольные данные в лог с уровнем ERROR
 LogInfoTS( ... ) - Вывести произвольные данные в лог с уровнем INFO, время прошедшее с первого и последнего вызова LogInfoTS
 LogInfoTN( ... ) - Вывести произвольные данные в лог с уровнем INFO, время прошедшее с первого и последнего вызова LogInfoTS и сбросить таймер.
 LogMemoryUsage() - Вывести в лог информацию о потреблении памяти аддоном
 LogTrace() - Вывести в лог lua-стектрейс

Функции, алиасы и переменные доступные при запуске с lua (без компиляции):

Глобальные переменные:
 DEBUG_BYPASS_ASSERTS = false - игнорировать ассерты

Алиасы:
 print = LogInfo

Функции:
 error( format, ... ) - Ошибка, поддерживает вывод сложного сообщения об ошибке с параметрами (через string.format, поддерживается только %s, все параметры приводятся к строкам через advtostring)
 assert( check, format, ... ) = function( check, format, ... ) if not check then return error( format, ... ) end end
 LogIndexSize - Вывести подробную статистику по размеру индекса для getindex
 ResetIndex - Сбросить индекс для getindex. МОЖЕТ СЛОМАТЬ РАБОТУ АДДОНА.

Связанные страницы: CategoryLuaApi CategoryCoreScripts


CategoryCoreScripts

На главную