Lua templating/Basics

Lua is implemented in MediaWiki wikis using the Scribunto/Lua extension and stored in resource pages using the Module: namespace.http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual 
__TOC__
== 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 FANDOM 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, 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 like return '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 it p.
# function p.hello() adds a function named hello to the table. Functions can be invoked (called) by name from outside the module.
# return 'Hello!' returns the string Hello! 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, and loads something
# 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 ==
Congratulations! You've now created, tested, edited, and understood your first Lua script.
==Learn more==
* See Wikiversity:Lua for more lessons
* See Wikibooks:Lua for lua basics
== References ==
Category:Lua