Plugin:MirLua/ru: Difference between revisions

From Miranda NG
Plugin:MirLua/ru
Jump to navigation Jump to search
No edit summary
(Updating to match new version of source page)
 
(43 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{PluginCard}}
<languages/>{{PluginCard}}
Расширяет функциональность Miranda NG с помощью скриптов на языке Lua.
Расширяет функциональность Miranda NG с помощью скриптов на языке Lua.


== Глобальные функции ==
== Lua ==
{| class="wikitable collapsible collapsed"
Плагин использует Lua 5.3.4, поставляемый в виде библиотеки lua53.dll.
!Название
 
!Описание
== Дополнительные возможности ==
!Пример
 
|-
=== toansi ===
|print
Перекодирует строку из utf-8 в ansi. Полезен, когда требуется передать строку в качестве параметра ansi-функции.
|выводит данные в network-лог Miranda NG
 
|<code>print('Hello, World!')</code>
<code>m.CallService('mRadio/Import', 0, toansi(m.Parse('%miranda_path%\\Plugins\\mradio.ini')))</code>
|-
 
|a
Имеет краткую версию '''<code>a</code>'''.
|конвертирует содержимое lua строки в ANSI
 
|<code>m.CallService("Some/AnsiService", 0, a'строка в ansi')</code>
<code>m.CallService('DB/Ini/ImportFile', 0, a'import\\autoexec.ini')</code>
|-
 
|u
=== toucs2 ===
|конвертирует содержимое lua строки в Unicode
Аналогичен <code>toansi</code>, но предназначен для utf-16. Тоже имеет краткую версию — '''<code>u</code>'''.
|<code>m.CallService("Some/UnicodeService", 0, u'строка в unicode')</code>
 
|-
=== tonumber ===
|totable
Если получает параметр <code>light userdata</code>, то возвращает его адрес в виде числа, в противном случае используется стандартное поведение <code>tonumber</code> языка Lua.
|позволяет обращаться к полям переменной как к полям lua таблицы
 
|<code>local bcd = totable(l, "CustomButtonClickData")
=== topointer ===
print(bcd.Module)</code>
Преобразует lua-типы <code>bool</code>, <code>number</code>, <code>string</code> в $light userdata.
|-
 
|}
=== string.interpolate ===
Обеспечивает более читаемый и удобный синтаксис для форматирования вывода строки.
 
<code>
local h = 'Hello'
print('{h}, {w}!' % {w = 'World'})
</code>


== Модули ==
== Модули ==
=== m_core ===
* [[Special:MyLanguage/Plugin:MirLua/Module/m_clist|m_clist]]
Этот модуль изначально импортирован в глобальную таблицу и доступен через переменную '''m''' в любом модуле.
* [[Special:MyLanguage/Plugin:MirLua/Module/m_core|m_core]]
Он предоставляет доступ к основной функциональности Miranda NG.
* [[Special:MyLanguage/Plugin:MirLua/Module/m_database|m_database]]
{| class="wikitable collapsible collapsed"
* [[Special:MyLanguage/Plugin:MirLua/Module/m_genmenu|m_genmenu]]
!colspan="3"|Именованные события
* [[Special:MyLanguage/Plugin:MirLua/Module/m_hotkeys|m_hotkeys]]
|-
* [[Special:MyLanguage/Plugin:MirLua/Module/m_http|m_http]]
|CreateHookableEvent
* [[Special:MyLanguage/Plugin:MirLua/Module/m_icolib|m_icolib]]
|Создает именованное событие
* [[Special:MyLanguage/Plugin:MirLua/Module/m_json|m_json]]
|<code>local hEvent = m.CreateHookableEvent('MyEvent')</code>
* [[Special:MyLanguage/Plugin:MirLua/Module/m_message|m_message]]
|-
* [[Special:MyLanguage/Plugin:MirLua/Module/m_options|m_options]]
|HookEvent
* [[Special:MyLanguage/Plugin:MirLua/Module/m_protocols|m_protocols]]
|Создает подписку на именованное событие
* [[Special:MyLanguage/Plugin:MirLua/Module/m_sounds|m_sounds]]
|<code>local hHook = m.HookEvent('MyEvent', function(w, l)
* [[Special:MyLanguage/Plugin:MirLua/Module/m_srmm|m_srmm]]
  print('MyEvent is raised!')
 
end)</code>
 
|-
* EN
|NotifyEventHooks
** [[Plugin:MirLua/en/m_core|m_core]]
|Оповещает всех подписчиков именованного события
** [[Plugin:MirLua/en/m_database|m_database]]
|<code>m.NotifyEventHooks(hEvent)</code>
** [[Plugin:MirLua/en/m_genmenu|m_genmenu]]
|-
** [[Plugin:MirLua/en/m_hotkeys|m_hotkeys]]
|UnhookEvent
** [[Plugin:MirLua/en/m_icolib|m_icolib]]
|Удаляет подписку на именованное событие
** [[Plugin:MirLua/en/m_sounds|m_sounds]]
|<code>m.UnhookEvent(hHook)</code>
|-
|DestroyHookableEvent
|Удаляет именованное событие
|<code>m.DestroyHookableEvent(hEvent)</code>
|-
!colspan="3"|Именованные сервисные функции
|-
|CreateServiceFunction
|Создает именованную сервисную функцию
|<code>local hService = m.CreateServiceFunction('MyService', function(w, l)
  print('MyServiceis called!')
end)</code>
|-
|CallService
|Вызывает именованную сервисную функцию
|<code>m.CallService('MyService', 0, 0)</code>
|-
|ServiceExists
|Проверяет существование сервиса по имени
|<code>if m.ServiceExists('MyService') then
  m.CallService('MyService')
end
</code>
|-
|DestroyServiceFunction
|Удаляет сервисную функцию
|<code>m.DestroyServiceFunction(hService)</code>
|-
!colspan="3"|Остальное
|-
|IsPluginLoaded
|Проверяет загружен ли плагин по его muuid
|<code>if m.IsPluginLoaded('{F0FDF73A-753D-499d-8DBA-336DB79CDD41}') then
  print('Advanced auto away plugin is loaded!')
end
</code>
|-
|Utf8DecodeA
|Конвертирует содержимое lua строки в ANSI
|<code>m.CallService("Quotes/Import", 0, Utf8DecodeA('c:\\quotes.xml'))</code>
|-
|Utf8DecodeW
|Конвертирует содержимое lua строки в Unicode
|<code>m.CallService("Popup/ShowMessageW", m.Utf8DecodeW('Hello, World!'), 2)</code>
|-
|Translate
|Переводит строку на язык текущего языкового пакета
|<code>m.Translate('Exit')</code>
|-
|ReplaceVariables
|Заменяет переменные ядра Miranda NG в строке
|<code>local profileName = m.ReplaceVariables('%miranda_profilename%')</code>
|-
|}


=== m_database ===
* RU
Предоставляет доступ к данным и контактам в профиле пользователя.
** [[Plugin:MirLua/ru/m_clist|m_clist]]
<br/>Подключение модуля: <code>local db = require('m_database')</code>
** [[Plugin:MirLua/ru/m_core|m_core]]
{| class="wikitable collapsible collapsed"
** [[Plugin:MirLua/ru/m_database|m_database]]
!colspan="3"|Контакты
** [[Plugin:MirLua/ru/m_genmenu|m_genmenu]]
|-
** [[Plugin:MirLua/ru/m_hotkeys|m_hotkeys]]
|AllContacts
** [[Plugin:MirLua/ru/m_icolib|m_icolib]]
|Итератор для списка контактов протокола или всех контактов, если в качестве параметра передан nil
** [[Plugin:MirLua/ru/m_sounds|m_sounds]]
|<code>
for hContact in db.AllContacts(proto.Name) do
  print(db.GetSetting(hContact, proto.Name, 'Nick'))
end
</code>
|-
!colspan="3"|События
|-
|GetEventCount
|Возвращает количество событий для контакта
|<code>db.GetEventCount(hContact)</code>
|-
|AllEvents
|Итератор для списка событий контакта
|<code>
for hEvent in db.AllEvents(hContact) do
  local event = totable(hEvent, "DBEVENTINFO")
  print(event.Blob)
end
</code>
|-
!colspan="3"|Настройки
|-
|WriteSetting
|Сохраняет значение настройки
|db.WriteSetting(nil, 'test', 'some', true)
|-
|GetSetting
|Возвращает значение настройки
|db.GetSetting(nil, 'test', 'some')
|-
|AllSettings
|Итератор для списка настроек из секции контакта или из глобальной секции, если в качестве параметра передан nil
|<code>
for setting in db.AllSettings(nil, 'CList') do
  local message = string.format("%s/%s = ", 'CList', setting, ...)
  .. db.GetSetting(nil, 'CList', setting)
  print(message)
end
</code>
|-
|DeleteSetting
|Удаляет настройку
|db.DeleteSetting(nil, 'test', 'some')
|-
|DeleteModule
|Удаляет секцию
|db.DeleteModule(nil, 'test')
|-
|}


== Примеры ==
== Примеры ==
{{Content:MirLua/Examples}}


[[Special:PrefixIndex/Content:MirLua/Examples/|Some examples]].
<!-- Todo use this after https://github.com/ProfessionalWiki/SubPageList/issues/74 will be fixed
{{Content:MirLua/Examples}} -->


== Ссылки ==
== Ссылки ==
* [http://forum.miranda-ng.org/index.php?topic=4161.0 Примеры скриптов в теме на форуме]
 
* [http://www.lua.org Веб-сайт Lua]{{RefLang|en}}
* [https://forum.miranda-ng.org/index.php?topic=4161.0 Примеры скриптов в теме на форуме]{{RefLang|ru}}
* [https://ru.wikipedia.org/wiki/Lua Lua в Википедии]
* [https://www.lua.org Веб-сайт Lua]
* [[wikipedia:en:Lua_(programming_language)|Lua в Википедии]]


{{PluginGroups}}
{{PluginGroups}}

Latest revision as of 17:54, 28 September 2023

Other languages:
MirLua
MirLua
Имя файла MirLua.dll
Автор Miranda NG team
Скачать
Стабильная версия: 32-bit, 64-bit
Версия в разработке: 32-bit, 64-bit

Расширяет функциональность Miranda NG с помощью скриптов на языке Lua.

Lua

Плагин использует Lua 5.3.4, поставляемый в виде библиотеки lua53.dll.

Дополнительные возможности

toansi

Перекодирует строку из utf-8 в ansi. Полезен, когда требуется передать строку в качестве параметра ansi-функции.

m.CallService('mRadio/Import', 0, toansi(m.Parse('%miranda_path%\\Plugins\\mradio.ini')))

Имеет краткую версию a.

m.CallService('DB/Ini/ImportFile', 0, a'import\\autoexec.ini')

toucs2

Аналогичен toansi, но предназначен для utf-16. Тоже имеет краткую версию — u.

tonumber

Если получает параметр light userdata, то возвращает его адрес в виде числа, в противном случае используется стандартное поведение tonumber языка Lua.

topointer

Преобразует lua-типы bool, number, string в $light userdata.

string.interpolate

Обеспечивает более читаемый и удобный синтаксис для форматирования вывода строки.

local h = 'Hello' print('{h}, {w}!' % {w = 'World'})

Модули


Примеры

Some examples.


Ссылки