Итак, позвольте мне сначала прояснить, что я понятия не имею, как на самом деле работает Lua, никогда не писал в нем более 10 строк кода, и что я вообще запутался в том, как работает MediaWiki + Scribunto + Lua...
Так...
У меня есть этот модуль/шаблон викисловаря:
https://en.wiktionary.org/w/index.php?title=Module:pl-IPA&action=edit
Мне это кажется совершенно правильным кодом lua.
Когда я пытаюсь запустить какой-нибудь простой пример (например, вызов функции export.convert_to_IPA("something")
), Lua, кажется, жалуется, что не знает, что такое mw
.
Насколько я знаю, mw
означает MediaWiki и является ссылкой на модуль Scribunto.
Вопрос в том... как мне найти и импортировать этот mw
модуль в простой скрипт Lua, работающий с терминала... с помощью интерпретатора Lua на Mac?
В общем, вы не можете использовать mw
в автономном Lua без MediaWiki. Почти все функции, которые он предоставляет, являются обратными вызовами в PHP MediaWiki. Однако похоже, что вы просто хотите использовать convert_to_IPA
, а не template_IPA
, и единственное использование mw
, которое есть у первого, это эта строка: for ch in mw.ustring.gmatch(mw.ustring.lower(word), ".") do
. Вам повезло: mw.ustring
является исключением из правил, и у него есть реализация на чистом Lua: https://github.com/wikimedia/mediawiki-extensions-Scribunto/tree/master/includes/engines/LuaCommon /луалиб/ustring
Вот пример того, как вы можете его использовать (при условии, что ваш текущий каталог содержит как pl-IPA.lua
, так и каталог ustring
, который я связал):
$ lua5.1
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> mw = {ustring = require 'ustring/ustring'}
> export = require 'pl-IPA'
> =export.convert_to_IPA("something")
sɔˈmɛt.xʲink
>
Большое спасибо. Потрясающий ответ. Тем временем я также нашел это: (по сути, это часть парсера Викисловаря на Python — почти то, над чем я работаю, но на Ruby) github.com/tatuylonen/wikitextprocessor