2

MediaWiki のウィキでは、各ユーザーがコードを挿入できるユーザー JavaScript ページを持っています。GreaseMonkey によく似ていますが、拡張機能はありません。のようにUser:YourUsername/vector.js

MediaWiki には、Scribuntoと呼ばれる Lua も組み込まれています。

Lua モジュールを MediaWiki テンプレートから呼び出すことができることは知っています。それが主な用途だと思います。しかし、Google で MediWiki のドキュメントを検索しても、ユーザーの JavaScript から Lua モジュールを呼び出す方法があるかどうかわかりません。


(言語の名前を JS の言語コードにマップする必要があります。2 番目の言語でコード (主にデータ) を複製することなく、それを行うための Lua モジュールがあります。)

4

1 に答える 1

2

JS はクライアント上で実行され、Lua はサーバー上で実行されるため、これを直接行うことはできません。できることは、JS から MediaWiki API を使用してモジュールを呼び出すことです。具体的にはexpandtemplatesAPI モジュールを使用します。

たとえば、Module:Hexh2dからパラメーター(ウィキテキスト内) と結果を使用して関数を呼び出したい場合、JS は次のようになります。FF{{#invoke:hex|h2d|FF}}alert

var api = new mw.Api();
api.get( {
    action: 'expandtemplates',
    text: '{{#invoke:hex|h2d|FF}}'
} ).done ( function ( data ) {
    alert(data.expandtemplates['*']);
} );

OPの特定のケースでは、英語のウィクショナリーで実行されています:

var langName = 'Esperanto';
(new mw.Api()).get({
  action: 'expandtemplates',
  format: 'json',
  prop: 'wikitext',
  text: '{{#invoke:languages/templates|getByCanonicalName|' + langName + '|getCode}}'
}).done(function(data) {
  alert('Language name: ' + langName + '\nLanguage code: ' + data.expandtemplates.wikitext);
});

( prop: 'wikitext'API からの警告を回避しdata.expandtemplates.wikitext、少し不可解な ではなくas として結果にアクセスできるようにしますdata.expandtemplates['*']。それ以外の場合、違いはありません。)

于 2015-04-06T22:14:10.157 に答える