Editing Module:Param Parse
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 3: | Line 3: | ||
--]=] |
--]=] |
||
-- <nowiki> |
-- <nowiki> |
||
local Infobox = require('Module:Infobox') |
|||
local |
local param = {} |
||
-- Generic functions -- |
|||
----------------------- |
|||
-- Standardized "has content" function |
-- Standardized "has content" function |
||
function |
function param.has_content(arg) |
||
-- Return arg if any non-whitespace character is found |
-- Return arg if any non-whitespace character is found |
||
return string.match(arg or '', '%S') and arg or nil |
return string.match(arg or '', '%S') and arg or nil |
||
end |
end |
||
-- Standardized numbers |
|||
function parse.number(num) |
|||
num = string.gsub(num or '',',','') |
|||
return tonumber(num) |
|||
end |
|||
-- Standardized image function |
|||
-- Yes/No |
|||
function param.image(img) |
|||
local yes_no = { |
|||
if img and img:find('%S') then |
|||
['Yes'] = 'true', |
|||
return img |
|||
['No'] = 'false', |
|||
['N/A'] = 'NIL', |
|||
} |
|||
function parse.yes_no(text) |
|||
if yes_no[text] ~= nil then |
|||
return text |
|||
end |
end |
||
return nil |
return nil |
||
end |
end |
||
function |
function param.image_smw(img) |
||
return string.match(img, "File:.-%.png") |
|||
if text == 'N/A' then |
|||
return nil |
|||
end |
|||
local bool = yes_no[text] |
|||
if bool ~= nil then |
|||
return bool |
|||
end |
|||
return nil |
|||
end |
end |
||
-- Premade Params -- |
|||
-------------------- |
|||
-- Standardized |
-- Standardized numbers |
||
function param.number(num) |
|||
parse.name = { |
|||
num = string.gsub(num or '',',','') |
|||
name = 'name', |
|||
return tonumber(num) |
|||
func = parse.has_content, |
|||
smw_property = 'Name', |
|||
category_incomplete = 'Needs name', |
|||
} |
|||
-- Standardized examine function |
|||
parse.examine = { |
|||
name = 'examine', |
|||
func = parse.has_content, |
|||
smw_property = 'Examine', |
|||
category_incomplete = 'Needs examine', |
|||
} |
|||
-- Standardized image function |
|||
function parse.image_name(img) |
|||
if img then |
|||
return string.match(img, '%[%[(File:.+%.%w%w%w)|?%d*x?%d*p?x?%]%]') |
|||
end |
|||
return nil |
|||
end |
|||
function parse.image_height(img, default) |
|||
if img then |
|||
return string.match(img, '%[%[File:.+%.%w%w%w|%d*x(%d*)px%]%]') or default |
|||
end |
|||
return default |
|||
end |
|||
function parse.image_width(img, default) |
|||
if img then |
|||
return string.match(img, '%[%[File:.+%.%w%w%w|(%d*)x?%d*px%]%]') or default |
|||
end |
|||
return default |
|||
end |
|||
function parse.image_func(img, default_width, default_height) |
|||
local name = parse.image_name(img) |
|||
local width = parse.image_width(img, default_width) |
|||
local height = parse.image_height(img, default_height) |
|||
local size = '' |
|||
if width and height then |
|||
size = '|'..width..'x'..height..'px' |
|||
elseif width then |
|||
size = '|'..width..'px' |
|||
elseif height then |
|||
size = '|x'..height..'px' |
|||
end |
|||
if name then |
|||
return '[['..name..size..']]' |
|||
end |
|||
return nil |
|||
end |
|||
function parse.image_smw(img) |
|||
return parse.image_name(img) |
|||
end |
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', |
|||
} |
|||
parse.image_size300 = { |
|||
name = 'image', |
|||
func = {name = parse.image_func, params = {Infobox.raw_param('image'), 300, 300}}, |
|||
smw_property = 'Image', |
|||
smw_func = parse.image_smw, |
|||
empty = '[[Special:Upload|Please upload an image!]]', |
|||
category_incomplete = 'Needs image', |
|||
} |
|||
-- Episode |
-- Episode |
||
local valid_episodes = { |
local valid_episodes = {['Hopeport'] = 1, ['Hopeforest'] = 1, ['Mine of Mantuban'] = 1, ['Crenopolis'] = 1} |
||
function param.episode(episode) |
|||
['hopeport'] = 'Hopeport', |
|||
if valid_episodes[episode] then |
|||
['hopeforest'] = 'Hopeforest', |
|||
return '[[File:'..episode..' episode icon.png|18px]] [['..episode..']]' |
|||
['mine of mantuban'] = 'Mine of Mantuban', |
|||
['crenopolis'] = 'Crenopolis' |
|||
} |
|||
function parse.episode_func(episode) |
|||
local valid_episode = valid_episodes[string.lower(episode or '')] |
|||
if valid_episode then |
|||
return '[[File:'..valid_episode..' episode icon.png|18px]] [['..valid_episode..']]' |
|||
end |
end |
||
return nil |
return nil |
||
end |
end |
||
function |
function param.episode_smw(episode) |
||
if valid_episodes[episode] then |
|||
return episode |
|||
if valid_episode then |
|||
return valid_episode |
|||
end |
end |
||
return nil |
return nil |
||
end |
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_smw, |
|||
category_incomplete = 'Needs premium status', |
|||
} |
|||
-- Release (TODO) |
|||
parse.release = { |
|||
name = 'release', |
|||
func = parse.has_content, |
|||
} |
|||
-- Profession (TODO) |
|||
parse.profession = { |
|||
name = 'profession', |
|||
func = parse.has_content, |
|||
category_incomplete = 'Needs profession', |
|||
smw_property = 'Profession' -- TODO - Need to create property page |
|||
} |
|||
parse.variant = { |
|||
name = 'variant', |
|||
func = parse.has_content, |
|||
category_incomplete = 'Needs variant details', |
|||
smw_property = 'Variant of' -- TODO - Need to create property page |
|||
} |
|||
return param |
|||
parse.passive = { |
|||
name = 'passive', |
|||
func = parse.yes_no, |
|||
smw_property = 'Passive', |
|||
smw_func = parse.yes_no_smw, |
|||
category_incomplete = 'Needs passiveness' |
|||
} |
|||
return parse |
|||
-- </nowiki> |
-- </nowiki> |