This module depends on the following other modules: |
This module contains several display helper functions for the Module:InfoboxBuilder and Module:DatatableBuilder. The only dependency this module has is Module:List; this is required to use list(listType)
and is only loaded when needed.
Functions
image
DisplayFunctions.image(imageSize)
Pass the desired image size as a parameter when setting it as the display function for a row. When called, this function will return a function that uses the first parameter as the filename.
link
DisplayFunctions.link
When called, this function will use the first parameter as the link.
list
DisplayFunctions.list(listType)
Pass the desired type of list as a parameter when setting it as the display function for a row. When called, this function will return a function that turns an array into a list.
Valid list types are:
- bulleted
- unbulleted
- horizontal
- ordered
- horizontal_ordered
Examples of these lists can be found on Wikipedia's documentation for Module:List.
trueFalseOther
DisplayFunctions.trueFalseOther(trueVal, falseVal, otherVal)
Pass the true value, false value, and value if other as parameters when setting it as the display function for a row. When called, this function will return a function that takes a boolean value and returns the corresponding true, false, or other value.
yesAndNo
DisplayFunctions.yesAndNo
When called, this function will display "Yes" for true
, "No" for false
, and nil
for everything else. This is a special case of trueFalseOther(trueVal, falseVal, otherVal)
.
checkAndX
DisplayFunctions.checkAndX
When called, this function will display "✓" for true
, "✗" for false
, and nil
for everything else. This is a special case of trueFalseOther(trueVal, falseVal, otherVal)
.
pluralHeader
DisplayFunctions.pluralHeader(forms)
Pass in a table of grammatical forms (see MediaWiki's documentation on the correct format) as the parameter when setting it as the display function for a row. When called, this function will return a function that selects the correct plurality based on the array passed in as parameter.
minutesAndSeconds
DisplayFunctions.minutesAndSeconds
When called, this function will format a number (assumed to be seconds) into the "m:ss" format.
hoursAndMinutes
DisplayFunctions.hoursAndMinutes
When called, this function will format a number (assumed to be minutes, with decimals being assumed to be seconds) into the "h:mm:ss" format. If you pass in "65.67" you will get "1:05:40".
local Functions = {}
function Functions.image(imageSize)
return function(imageName)
if imageName == nil or mw.text.trim(imageName) == '' then
return nil
end
return string.format('[[File:%s|%s]]', imageName, imageSize)
end
end
function Functions.link(pageName)
if pageName == nil or pageName == '' then return nil end
return string.format('[[%s]]', pageName)
end
function Functions.list(listType)
return function(array)
if array == nil then return nil end
local List = require('Module:List')
local data = List.makeListData(listType, array)
return List.renderList(data)
end
end
function Functions.trueFalseOther(trueVal, falseVal, otherVal)
return function(val)
-- probably should not use == with bool, but this is more explicit
if val == true then
return trueVal
elseif val == false then
return falseVal
end
return otherVal
end
end
function Functions.yesAndNo(val)
return Functions.trueFalseOther('Yes', 'No', nil)(val)
end
function Functions.checkAndX(val)
return Functions.trueFalseOther('✓', '✗', nil)(val)
end
function Functions.pluralHeader(forms)
local contentLang = mw.getContentLanguage()
return function(list)
return contentLang:convertPlural(#(list or {}), forms)
end
end
function Functions.minutesAndSeconds(seconds)
if seconds == nil then return nil end
return string.format(
'%d:%02d',
math.floor(seconds / 60),
math.floor(seconds % 60)
)
end
function Functions.hoursAndMinutes(minutes)
if minutes == nil then return nil end
return string.format(
'%d:%s',
math.floor(minutes / 60),
math.floor(minutes % 60)
)
end
return Functions