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 parse = {} |
local parse = {} |
||
-- Generic functions -- |
|||
----------------------- |
|||
-- Standardized "has content" function |
-- Standardized "has content" function |
||
Line 16: | Line 13: | ||
end |
end |
||
-- Standardized numbers |
|||
function parse.number(num) |
|||
num = string.gsub(num or '',',','') |
|||
return tonumber(num) |
|||
end |
|||
-- Standardized image function |
|||
-- Yes/No |
|||
function parse.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 parse. |
function parse.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 |
||
parse. |
function parse.number(num) |
||
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 |
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 |
|||
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 parse.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 parse.episode_smw(episode) |
function parse.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', |
|||
} |
|||
return parse |
|||
-- 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 |
|||
} |
|||
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> |