Editing Module:Param Parse

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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 6: Line 6:
local Infobox = require('Module:Infobox')
local Infobox = require('Module:Infobox')
local currency = require('Module:Currency').parse
local currency = require('Module:Currency').parse
local editbutton = require('Module:Edit button')
local edit = editbutton("'''?''' (edit)")


local parse = {}
local parse = {}
Line 312: Line 310:
category_incomplete = 'Needs release date',
category_incomplete = 'Needs release date',
smw_property = 'Release Date',
smw_property = 'Release Date',
smw_func = parse.release_smw,
}
parse.removal = {
name = 'removal',
func = parse.release_func,
smw_property = 'Removal Date',
smw_func = parse.release_smw,
smw_func = parse.release_smw,
}
}
Line 323: Line 315:
-- Value
-- Value
function parse.value_func(val)
function parse.value_func(val)
if val == '' or val == ' ' then
return
elseif val == 'N/A' then
return 'N/A'
end
local status, val = pcall(currency, val)
local status, val = pcall(currency, val)
if status then
if status then
Line 449: Line 436:
end
end
function parse.variant_category_func(v)
function parse.variant_category_func(v)
v = parse.has_content(v)
if v == nil then
if v == nil then
return nil
return nil
elseif v == 'N/A' then
return 'N/A'
end
end
v = strip_link(v)
v = strip_link(v)
Line 461: Line 445:
end
end
return ('[[%s|%s]]'):format(v, name)
return ('[[%s|%s]]'):format(v, name)
end
function parse.variant_smw_func(v)
v = parse.has_content(v)
if v == 'N/A' then
return
end
return v
end
end
local function name_without_variant_category(name, variant_name)
local function name_without_variant_category(name, variant_name)
variant_name = parse.variant_smw_func(variant_name)
if name:sub(-1-#variant_name) == ' '..variant_name then
if variant_name and name:sub(-1-#variant_name) == ' '..variant_name then
-- Ends with the variant name. Remove it
-- Ends with the variant name. Remove it
name = name:sub(1, -2-#variant_name)
name = name:sub(1, -2-#variant_name)
Line 478: Line 454:
end
end
local function name_with_variant_category(name, v, passive, is_for_smw)
local function name_with_variant_category(name, v, passive, is_for_smw)
v = parse.variant_smw_func(v)
if v == nil then
if v == nil then
return name
return name
Line 522: Line 497:
name = 'variant',
name = 'variant',
func = parse.variant_category_func,
func = parse.variant_category_func,
smw_func = parse.variant_smw_func,
smw_func = parse.has_content,
smw_property = 'Variant of',
smw_property = 'Variant of',
category_incomplete = 'Needs variant'
category_incomplete = 'Needs variant'
Line 542: Line 517:


-- Variant type
-- Variant type
parse.variant_type = {
name = 'variant_type',
func = parse.variant_type_func,
smw_func = parse.has_content,
smw_property = 'Variant type',
category_incomplete = 'Needs variant type'
}

local valid_variant_types = {
local valid_variant_types = {
['item'] = 'Item',
['item'] = 'Item',
['monster'] = 'Monster',
['monster'] = 'Monster',
['skill node'] = 'Skill node',
['skill node'] = 'Skill node'
['venture'] = 'Venture'
}
}
function parse.variant_type_func(type)
function parse.variant_type_func(type)
local valid_type = valid_variant_types[string.lower(type or '')]
local valid_type = valid_variant_types[string.lower(type or '')]
if valid_type then
if valid_type then
return valid_type..'[[Category:'..valid_type..' variants]]'
return valid_type..'[[Category:'..valid_type..' variant]]'
else
else
return edit..'[[Category:Invalid variant type]]'
return '[[Category:Invalid variant type]]'
end
end
return nil
return nil
end
end

parse.variant_type = {
name = 'variant_type',
func = parse.variant_type_func,
smw_func = parse.has_content,
smw_property = 'Variant type',
category_incomplete = 'Needs variant type'
}


parse.passive = {
parse.passive = {
Line 576: Line 550:
function parse.duration_func(hours)
function parse.duration_func(hours)
hours = string.gsub(hours or '',',','')
hours = string.gsub(hours or '',',','')
hours = tonumber(hours) or edit
return (tonumber(hours) .. " Hours")
return (hours .. " Hours")
end
end


Line 686: Line 659:


-- Unlock Level
-- Unlock Level
function parse.unlock_profession_func(unlock_profession, profession, level)
function parse.unlock_level_func(profession, level)
if level == 'N/A' then
return parse.has_content(unlock_profession or 'N/A')
end
return parse.has_content(unlock_profession or profession)
end

function parse.unlock_profession_func_smw(unlock_profession, profession, level)
local prof = parse.unlock_profession_func(unlock_profession, profession, level)
if prof == 'N/A' then
return nil
end
return prof
end

function parse.unlock_level_func(unlock_profession, profession, level)
if parse.has_content(level) == 'N/A' then
-- unlock_profession set but level = N/A is not handled, handle it here
-- (and in the smw func) if needed for whatever reason
return 'N/A'
end

local level_valid = parse.number(level)
local level_valid = parse.number(level)
local profession_valid = parse.unlock_profession_func(unlock_profession, profession, level)
local profession_valid = parse.has_content(profession)
local profession_valid_link = profession_valid
local profession_valid_link = profession_valid

if not profession_valid and not level_valid then
if not profession_valid and not level_valid then
return nil
return nil
end
end

if not profession_valid and level_valid then
if not profession_valid and level_valid then
-- Profession undefined but level defined, invalid, show an unknown profession
-- Profession undefined but level defined, invalid, show an unknown profession
Line 721: Line 673:
profession_valid_link = ''
profession_valid_link = ''
end
end

if profession_valid and not level_valid then
if profession_valid and not level_valid then
-- Profession defined without level, invalid, show an unknown level
-- Profession defined without level, invalid, show an unknown level
level_valid = '?'
level_valid = '?'
end
end

return '[[File:'..profession_valid..'_icon.png|link='..profession_valid_link..'|width=18x18]] '..level_valid
return '[[File:'..profession_valid..'_icon.png|link='..profession_valid_link..'|width=18x18]] '..level_valid
end
end


function parse.unlock_level_smw(unlock_profession, profession, level)
function parse.unlock_level_smw(profession, level)
if parse.has_content(level) == 'N/A' then
local profession_valid = parse.has_content(profession)
return nil
end
local profession_valid = parse.unlock_profession_func(unlock_profession, profession)
local level_valid = parse.number(level)
local level_valid = parse.number(level)

if not profession_valid then
if not profession_valid then
return nil
return nil
end
end

if not level_valid then
if not level_valid then
return nil
return nil
Line 747: Line 696:
return level_valid
return level_valid
end
end

parse.unlock_profession = {
name = 'unlock_profession',
func = {name = parse.unlock_profession_func, params = {Infobox.raw_param('unlock_profession'), Infobox.raw_param('profession_a'), Infobox.raw_param('unlock_level')}},
smw_property = 'Unlock profession',
smw_func = {name = parse.unlock_profession_func_smw, params = {Infobox.raw_param('unlock_profession'), Infobox.raw_param('profession_a'), Infobox.raw_param('unlock_level')}},
}


parse.unlock_level = {
parse.unlock_level = {
name = 'unlock_level',
name = 'unlock_level',
func = {name = parse.unlock_level_func, params = {Infobox.raw_param('unlock_profession'), Infobox.raw_param('profession_a'), Infobox.raw_param('unlock_level')}},
func = {name = parse.unlock_level_func, params = {Infobox.raw_param('profession_a'), Infobox.raw_param('unlock_level')}},
smw_property = 'Unlock level',
smw_property = 'Unlock level',
smw_func = {name = parse.unlock_level_smw, params = {Infobox.raw_param('unlock_profession'), Infobox.raw_param('profession_a'), Infobox.raw_param('unlock_level')}},
smw_func = {name = parse.unlock_level_smw, params = {Infobox.raw_param('profession_a'), Infobox.raw_param('unlock_level')}},
category_incomplete = 'Needs unlock level',
category_incomplete = 'Needs unlock level',
}
}
Line 868: Line 810:
func = parse.has_content,
func = parse.has_content,
smw_property = 'Slot',
smw_property = 'Slot',
}

-- Event predecessor
parse.predecessor = {
name = 'predecessor',
func = parse.has_content
}

-- Event successor
parse.successor = {
name = 'successor',
func = parse.has_content
}
}


Please note that all contributions to Brighter Shores Wiki are considered to be released under the CC BY-NC-SA 3.0 (see Brighter Shores:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)
Preview page with this template

This page is a member of a hidden category: