LuaΒΆ
Guerilla uses the Lua 5.1 scripting language. You can find the documentation about the language and its basic libraries on the Lua Homepage. Here is a quick presentation of the language :
Types
-- *** nil
local a
-- Verify a is nil
assert (a == nil)
-- *** number
local a = 1
local b = math.floor (a + 0.5)
-- *** string
local a = "First "
-- Concatenation
local b = a .. "Name"
-- *** boolean
local a = true
local b = false
-- c is false, because is 12 is true
local c = not 12
-- *** table
local a = {} -- Empty table
a[1] = "David"
a[2] = "Ben"
a[3] = "Antoine"
print (#a) -- Print the size (the last non-nil element) of the table, 3
table.insert (a, "Cyril") -- Append a new element
local b = {} -- Empty table
b["FirstName"] = "Cyril"
b.LastName = "Corvazier" -- b.LastName is an alias for b["LastName"]
-- *** function
function sum (a, b)
return a+b
end
Conditional
-- *** if
if a == b then
print (a)
end
if a ~= b or not a < c then
print (a)
elseif a == b then -- Notice else and if are glued together!
print (b)
end
-- nil and false are false, all other are true
if 0 then
print ("Yes, O is true") -- Beware of this one!
end
-- If object and object.Value are not nil, value gets object.Value else value gets ""
local value = object and object.Value or ""
Loop
-- *** for
-- Simple loop
for i=1,10 do
print (i)
end
-- Iterate a table
for key,value in pairs (a_table) do
assert (value == a_table[key])
end
-- While
while node do
print (node.Name)
node = node.Parent
end
Functions
-- Fun with functions
function compose (functionA, functionB)
-- Craft a new function, the composition of functionA and functionB
return function (x)
return functionB (functionA (x))
end
end
Methods
local a = { Value = 12 }
-- All these definition are equivalent: a:method () is syntaxical sugar for a.method (self)
a.method = function (self) print (self.Value) end
function a.method (self) print (self.Value) end
function a:method () print (self.Value) end
-- All these calls are equivalent: a:method () is syntaxical sugar for a.method (a)
a.method (a)
a:method ()