Module:Param Parse: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
(Fix yes_no) |
No edit summary |
||
Line 52:
-- Standardized image function
function parse.image_func(img)
if img and
return img
end
|
Revision as of 02:32, 6 April 2024
Module documentation
This documentation is transcluded from Module:Param Parse/doc. [edit] [history] [purge]
Module:Param Parse is required by
.These params and functions are used to validate and format information passed into an Infobox. See Module:Infobox for details and instructions on creating an Infobox. If the information is missing or not valid, the functions here should return nil.
Here is a summary of all the params:
param | explanation |
---|---|
parse.actions | Actions listed in the action menu |
parse.name | Title |
parse.description | Description of the entity in its card |
parse.image | [[File:IMAGE.png]]. Use the class infobox-image in the table |
parse.image_size300 | [[File:IMAGE.png|300x300px]] by default unless overridden. Use the class infobox-image in the table |
parse.episode | Episode name |
parse.additional_episode | Episode name |
parse.premium | Premium (Yes, No, N/A) |
parse.release | Release Date in the format YYYY-MM-DD |
parse.value | Shows the value as a denomination of coins |
parse.profession | TODO |
parse.profession_bubble_a, parse.profession_bubble_b | Takes parameters profession_a + profession_a_level, or profession_b + profession_b_level |
parse.profession_a_smw, parse.profession_a_level_smw, parse.profession_b_smw, parse.profession_b_level_smw | Exports the data from profession_bubble_a and profession_bubble_b to smw |
parse.variant | TODO - Which category the subject is a variant of |
parse.passive | Passiveness (Yes, No, N/A) |
parse.aggressive | Aggressive (Yes, No, N/A) |
parse.difficulty | Quest difficulty (0-5) |
parse.quest | Quest name (or No) |
parse.unlock_level | Unlocked at |
parse.knowledge | Knowledge |
Here are some general use functions that can be used for custom or new params:
function name | explanation |
---|---|
has_content(arg) | Returns arg if any non-whitespace character is found in the string. |
number(num) | Removes any commas and parses the string as a number |
yes_no(text) | Only accepts "Yes", "No" and "N/A" |
yes_no_smw(text) | Maps "Yes", "No" to true and false respectively |
Creating New Params
Ideally, params should be defined here so that they can be reused between different Infoboxes. Here is how to create a new param:
parse.paramname = {
name = <param>,
func = <func>,
empty = 'empty', -- optional
category_never = 'category', -- optional
category_partial = 'category', -- optional
category_incomplete = 'category', -- optional
category_complete = 'category', -- optional
smw_property = 'Property', -- optional
smw_func = <func>, -- optional
}
key | value | ||||
---|---|---|---|---|---|
name | parameter name as used in the Template | ||||
func | A function in Module:Param Parse to validate and process the Template argument. You can also use a local function, but this is not recommended.
If func is a function, will call func(Infobox.raw_param(name)): {name = <param>, func = <func>, ... },
If func is a table, it takes the following parameters: {name = <param>, func = { name = <func>, params = <func_params>}, ... },
| ||||
empty (optional) | text to display in the infobox if func returns nil; defaults to "? (edit)" | ||||
category_never (optional) | category to add if func returns nil for all versions | ||||
category_partial (optional) | category to add if func returns nil for some versions, but a value for other versions | ||||
category_incomplete (optional) | category to add if func returns nil for at least 1 version (i.e. category_never and category_partial combined) | ||||
category_complete (optional) | category to add if func returns a value for all versions | ||||
smw_property (optional) | if this string is defined, the parameter will be saved into SMW | ||||
smw_func (optional) | function to validate and process the Template argument to save into SMW. func is used by default if smw_func is not defined |
--[=[
-- Standardized functions to parse Infobox params
--]=]
-- <nowiki>
local parse = {}
-- Generic functions --
-----------------------
-- Standardized "has content" function
function parse.has_content(arg)
-- Return arg if any non-whitespace character is found
return string.match(arg or '', '%S') and arg or nil
end
-- Standardized numbers
function parse.number(num)
num = string.gsub(num or '',',','')
return tonumber(num)
end
-- Yes/No
local yes_no = {
['Yes'] = true,
['No'] = false,
['N/A'] = 'NIL',
}
function parse.yes_no(text)
if yes_no[text] ~= nil then
return text
end
return nil
end
function parse.yes_no_smw(text)
if text == 'N/A' then
return nil
end
return yes_no[text] or nil
end
-- Premade Params --
--------------------
-- Standardized name function
parse.name = {
name = 'name',
func = parse.has_content,
smw_property = 'Name',
}
-- Standardized image function
function parse.image_func(img)
if img and string.match('[[File:.-%.png]]') then
return img
end
return nil
end
function parse.image_smw(img)
return img and string.match(img, "File:.-%.png") or nil
end
parse.image = {
name = 'image',
func = parse.image_func,
smw_property = 'Image',
smw_func = parse.image_smw,
empty = '[[Special:Upload|Please upload an image!]]',
category_incomplete = 'Needs image',
}
-- Episode
local valid_episodes = {['Hopeport'] = 1, ['Hopeforest'] = 1, ['Mine of Mantuban'] = 1, ['Crenopolis'] = 1}
function parse.episode_func(episode)
if valid_episodes[episode] then
return '[[File:'..episode..' episode icon.png|18px]] [['..episode..']]'
end
return nil
end
function parse.episode_smw(episode)
if valid_episodes[episode] then
return episode
end
return nil
end
parse.episode = {
name = 'episode',
func = parse.episode_func,
smw_property = 'Episode',
smw_func = parse.episode_smw,
category_incomplete = 'Needs episode',
}
-- Premium
parse.premium = {
name = 'premium',
func = parse.yes_no,
smw_property = 'Premium',
smw_func = parse.yes_no,
category_incomplete = 'Needs premium status',
}
-- Release (TODO)
parse.release = {
name = 'release',
func = parse.has_content,
}
return parse
-- </nowiki>