コンテンツにスキップ

Wikipedia:Lua


20133MediaWikiScribuntoLua使Lua{{#invoke:}}使Scribunto20223Lua 5.1.5

Lua:Bananas:Bananas/doc{{#invoke:Bananas|hello}}Hello, world!

モジュールを実行する[編集]


#invokeHelp:使#invoke#invoke[1]111Lua

Lua1

{{#invoke:|}}

:Bananas"hello"

{{#invoke:Bananas|hello}}  Hello, world!

[]


1"|"12: {{#invoke:||1|2|=}}

:BananasArgs"hello"1

{{#invoke:BananasArgs|hello|Kate}}  Hello, Kate!

{{#invoke:BananasArgs|hello|Fred}}  Hello, Fred!

BananaArgs"count_fruit"bananasapples

{{#invoke:BananasArgs|count_fruit|apples=3|bananas=4}}  I have 4 bananas and 3 apples

{{#invoke:BananasArgs|count_fruit|bananas=5|apples=2}}  I have 5 bananas and 2 apples

使

サンプルモジュール[編集]

Luaスクリプトの作成依頼[編集]

ウィキペディア日本語版で特定のタスクを行うためにLuaスクリプトが必要になった場合、プロジェクト:ウィキ技術部にて依頼を提出することができます。

導入までの経緯[編集]

Luaは長年にわたる議論を経て、2012年にテスト用としてtest2.wikipedia.orgに導入され、すべての編集者に試験運用を勧める知らせが出されました(2012年8月のお知らせを参照)。その後、Luaはウィキメディアのテストウィキとmediawiki.orgでの試験運用を経て、2013年2月にウィキペディア英語版に導入され、3月にはウィキペディア日本語版に導入されました(2013年3月のお知らせを参照)。

Luaについて[編集]


Lua使使

:HelloWorldHello, World!
-- WikipediaのLuaモジュールは、外部からアクセスできる関数を入れる変数の
-- 宣言から始める必要があります。この変数の名前は何でもよく、変数にデータを入れることもできます。
local p = {};

-- そして、変数に関数を追加します。そうすることで、Wikipediaから#invokeして呼び出せるようになります。
-- frame変数には、呼び出し時にWikipediaから渡されるデータが入ります。
p.hello = function( frame )

    -- ローカル変数を宣言して"Hello World!"に初期化
    local str = "Hello World!"

    -- str変数の中身をWikipedia側に戻して関数を脱出します。
    -- printのような関数は使えないので、出力はこのように文字列の返り値でやり取りします。
    return str

-- hello関数の終わり
end

-- モジュールの終わりでは、関数を含んだ変数をWikipedia側に返します。
return p

-- こうすれば、{{#invoke: HelloWorld | hello }}のような形でこのモジュールを使えます。
-- #invokeでは、直後にモジュール自体の名前、次の引数に関数名を渡します。

MediaWikiでLuaを使う上でのガイドが、mw:Extension:Scribunto/Lua reference manual/jaにあります(翻訳途中)。

ユニットテスト[編集]


Lua:UnitTests

: :Bananastestcases: :Bananas/testcases:Bananas/testcases{{#invoke: Bananas/testcases | run_tests}}"test"Module:Bananas/testcases1
-- [[Module:Bananas]]のユニットテスト例です。ノートをクリックして動作確認をしてください。
local p = require('Module:UnitTests')

function p:test_hello()
    self:preprocess_equals('{{#invoke:Bananas | hello}}', 'Hello, world!')
end

return p

ユニットテストが作成されたモジュールの一覧は特別:リンク元/モジュール:UnitTestsをご参照ください。

Wikipedia固有のポイント[編集]

概要[編集]


Lua{{#invoke:}}frame使Lua{{...}}Lua10Luamw:Extension:Scribunto/Lua reference manual#Differences from standard Lua

Lua[]


ScribuntoLua使LuaSVG

[]


[[Wikipedia:|]]Lua[[Wikipedia:|]]~~~~{{...}}<ref><nowiki>MediaWikiLua

[]


Lua使require()使

extern_hello=require(":HelloWorld")extern_hello.hello()

Luaを使用するテンプレート[編集]

Luaを使用するテンプレートの解説サブページには{{Lua}}テンプレートを追加してください。Luaが使用されていることを明示できます。

注釈[編集]

  1. ^ ウィキページで実行する関数では出力を1つだけ返すことが大半です。出力を2つ以上返す関数は一般的にはウィキページで実行することを想定しておらず、ほかのモジュールや引数で実行することを想定しています。

関連項目[編集]

ウィキペディア内のページ[編集]

MediaWikiにおける解説ページ[編集]