Lua/Scribunto Lua
Lua is implemented in MediaWiki wikis using the Scribunto/Lua extension and stored in resource pages using the Module: namespace.[1]
Create Your First Lua Script
editTo create your first Lua script:
- Navigate to Module:Sandbox.
- Clear all existing code.
- It's a sandbox. Everyone is free to play in the sandbox. But if you find another user is actively editing the sandbox at the same time, you may also use Module:Sandbox/Username, where Username is your Wikiversity username.
- Add the following code and save the page:
local p = {} function p.hello() return 'Hello!' end return p
Test Your First Lua Script
editTo test your first Lua script:
- Navigate to either the Module_talk:Sandbox page, the Wikiversity:Sandbox page, or your own user or sandbox page.
- Add the following code and save the page:
{{#invoke:Sandbox|hello}}
The result should be:
Hello!
Edit Your First Lua Script
editTo edit your first Lua script:
- Return to the Module:Sandbox.
- Edit the line with
return 'Hello!'
and add your name inside the single quotes. You should end up with something likereturn 'Hello Lua!'
. - Save the page.
- Return to the sandbox test page you used above to test your changes. Using the module's talk page is very convenient for quick testing.
- Refresh the page to see your name returned from the script.
The result should be similar to:
Hello Lua!
Understand Your First Lua Script
editNow that you see what the script does, it's time to understand how it works.
local p = {}
creates a local table or array for your code and names itp
.function p.hello()
adds a function namedhello
to the table. Functions can be invoked (called) by name from outside the module.return 'Hello!'
returns the stringHello!
when the function is invoked (called).end
ends the function.return p
returns the code table to whatever process loads this Lua module.
The code that runs the script includes:
#invoke:
invokes (calls) a Lua module.Sandbox
specifies the name of the module to be loaded.hello
specifies the name of the function inside the module that is to be invoked (called).
{{#invoke:Sandbox|hello}} | Keyword | 1st Parameter | 2nd Parameter |
---|---|---|---|
Code |
#invoke: |
Sandbox |
hello |
What it does |
specifies action - here load module and implement function |
specifies the name of the module to be loaded |
specifies the name of the function inside the module that is to be invoked (called). |
Conclusion
editCongratulations! You've now created, tested, edited, and understood your first Lua script. Continue on to the Modules lesson.