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
To 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
To 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
To 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
Now 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 namedhelloto the table. Functions can be invoked (called) by name from outside the module.return 'Hello!'returns the stringHello!when the function is invoked (called).endends the function.return preturns the code table to whatever process loads this Lua module.
The code that runs the script includes:
#invoke:invokes (calls) a Lua module.Sandboxspecifies the name of the module to be loaded.hellospecifies 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
Congratulations! You've now created, tested, edited, and understood your first Lua script. Continue on to the Modules lesson.