local p = {}; --Setiap modul Lua di Wikipedia harus dimulai dengan mendefinisikan
--sebuah variabel yang akan memegang fungsinya yang dapat diakses
--secara eksternal.
--Variabel-variabel tersebut dapat dinamai sesuai keinginan Anda
--dan mungkin mengandung bermacam-macam data maupun fungsi juga.
p.hello = function( frame ) --Menambahkan sebuah fungsi ke "p".
--Fungsi tersebut dapat dipanggil di Wikipedia
--melalui perintah #invoke.
--"frame" akan berisi data yang dikirim Wikipedia
--ketika fungsi ini dijalankan.
-- 'Hello' adalah nama yang Anda pilih. Nama yang sama dirujuk ketika modul digunakan.
local str = "Hello World!" --Mendeklarasikan variabel lokal dan mengaturnya
--sama dengan "Hello World!"
return str --Pemberitahuan untuk keluar dari fungsi ini dan mengirimkan
--informasi di "str" kembali ke Wikipedia.
end --akhir dari fungsi "hello"
function p.hello_to(frame) --Menambahkan fungsi lain
local name = frame.args[1] --Untuk mengakses argumen yang diteruskan ke modul,
--gunakan `frame.args`, `frame.args[1]` merujuk
--kepada parameter tanpa nama pertama yang diberikan
--kepada modul.
return "Halo, " .. name .. "!" -- `..` menggabungkan string. Ini akan memunculkan
-- salam yang disesuaikan dengan nama yang diberikan,
-- seperti "Halo, Fred!"
end
function p.count_fruit(frame)
local num_bananas = frame.args.bananas -- Argumen bernama ({{#invoke:Example|count_fruit|foo=bar}}) yang juga
local num_apples = frame.args.apples -- diakses dengan mengindeks `frame.args` dari nama (`frame.args["bananas"]`, or)
-- ekuivalen dengan `frame.args.bananas`.
return 'Aku punya ' .. num_bananas .. ' pisang dan ' .. num_apples .. ' apel'
-- Sama seperti yang di atas, menggabungkan
-- sekelompok string bersama-sama untuk
-- menghasilkan sebuah kalimat berdasarkan
-- argumen yang diberikan.
end
return p --Semua modul diakhiri dengan me-return variabelnya yang berisi fungsinya ke Wikipedia.
-- Sekarang kita bisa gunakan modulnya dengan memanggil {{#invoke: Example | hello }},
-- {{#invoke: Example | hello_to | foo }}, atau {{#invoke:Example|count_fruit|bananas=5|apples=6}}
-- Perhatikan bahwa bagian pertama invoke adalah nama halaman wiki dari Modul,
-- dan bagian kedua adalah nama salah satu fungsi yang melekat kepada
-- variabel yang Anda return-kan.
-- Fungsi "print" tidak diperbolehkan di Wikipedia. Semua output diselesaikan
-- melalui string "returned" (dikembalikan) ke Wikipedia.