Documentation for this module may be created at Module:Appearances/doc
local p = {}
local getArgs = require('Dev:Arguments').getArgs
local h = require("Module:HF")
-- ****************************************************************************************************************
-- *** LOCAL FUNCTIONS ***
-- ****************************************************************************************************************
--------------------------------------------------------------------------------
local function outdated_field(args)
local value = args[1]
local output = ''
if ( not h.isempty(value) and not h.is_link(value) ) or not h.isempty(args[2]) or not h.isempty(args[3])
then output = h.Category('Outdated Fields/Tags')
end
return output
end
--------------------------------------------------------------------------------
local function build(arg, arg2, category)
local link = ""
local text = ""
local output = ''
if not h.isempty(arg)
then
if not h.isempty(arg2)
then
link = arg
text = arg2
else
link = string.match(arg, "([^%[%|%]]+)")
text = string.match(arg, "%|([^%]%|]+)")
end
if string.find(link, "w:c:") == nil and string.find(link, "Glossary:") == nil and string.find(link, "#") == nil
then
if not h.isempty(link)
then output = h.Link(link, text)..h.Category(link..category)
else output = arg
end
else
output = arg
end
end
return output
end
--------------------------------------------------------------------------------
local function build2(arg, category)
local link = ""
local text = ""
local output = ''
if not h.isempty(arg)
then
link = string.match(arg, "([^%[%|%]]+)")
text = string.match(arg, "%|([^%]%|]+)")
if string.find(link, "w:c:") == nil and string.find(link, "Glossary:") == nil and string.find(link, "#") == nil
then
if not h.isempty(link)
then output = h.Link(link, text)..h.Category(link..category)
else output = arg
end
else
output = arg
end
end
return output
end
--------------------------------------------------------------------------------
local function suffixTag(value)
local output = ''
if not h.isempty(value)
then output = ' '..tostring( mw.html.create('span'):addClass('green_text'):wikitext('('..value..')'):done() )
end
return output
end
-- ****************************************************************************************************************
-- *** APPEARANCES ***
-- ****************************************************************************************************************
--------------------------------------------------------------------------------
function p.appearances(frame)
local args = getArgs(frame)
return build(args[1], args[2], '/Appearances')..suffixTag(args[3])
end
--------------------------------------------------------------------------------
-- used in "Template:Apn"
function p.apn(frame)
local standard = require("Module:StandardizedName")
local function get_link(value, pagename, is_next)
local info = {}
local issue_number
local output = ''
if not h.isempty(value)
then
if value ~= '-'
then output = value
end
elseif string.find(pagename, ' Vol ') ~= nil or string.find(pagename, ' Season ') ~= nil
then
if string.find(pagename, ' Vol ') ~= nil
then info = standard.lua_get_title_volume_issue(pagename, 'Vol')
else info = standard.lua_get_title_volume_issue(pagename, 'Season')
end
issue_number = tonumber(info.issue)
if issue_number ~= nil
then
if is_next
then output = info.noissue..' '..(issue_number + 1)
elseif issue_number > 1
then output = info.noissue..' '..(issue_number - 1)
end
end
end
if output ~= ''
then
if is_next
then output = ' '..h.Link(output, '🢒')
else output = h.Link(output, '🢐')..' '
end
end
return output
end
local pagename = mw.title.getCurrentTitle().text
local args = getArgs(frame)
local output = build2(args[1], '/Appearances')
return get_link(args[2], pagename, false)..output..get_link(args[3], pagename, true)
end
--------------------------------------------------------------------------------
-- used in "Template:1st"
function p.first_appearance(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('First appearance')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:1stas"
function p.first_as(frame)
local args = getArgs(frame)
local arg1 = args[1]
local arg2 = args[2]
local output = ''
if not h.isempty(arg1)
then
if not h.isempty(arg2)
then output = build2(arg1, '/Appearances')..suffixTag('First appearance as '..arg2)
elseif h.is_link(arg1)
then output = build2(arg1, '/Appearances')..suffixTag('First appearance as '..arg1)
else output = suffixTag('First appearance as '..arg1)
end
end
return output
end
--------------------------------------------------------------------------------
-- used in "Template:1stChron"
function p.first_chronologically(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('First appearance chronologically')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:1stFull"
function p.first_full(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('First full appearance')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:1stHist"
function p.first_historically(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('First appearance historically')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:1st Real Name"
function p.first_real_name(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Name first revealed')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:1st Unnamed"
function p.first_unnamed(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('First appearance; unnamed')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:ApDeath"
function p.apparent_death(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Apparent death')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Cameo"
function p.cameo(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Cameo')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:ChronoFB"
function p.chronological_flashback(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag( h.Link('#Chronology Notes', 'Appears in flashback') )..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Chronology"
function p.chronology(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag( h.Link('#Chronology Notes', 'See chronology') )..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Death"
function p.death(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Death')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Deceased"
function p.deceased(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Deceased')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Defunct"
function p.defunct(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Defunct')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Destroyed"
function p.destroyed(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Destroyed')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Destruction"
function p.destruction(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Destruction')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Disbands"
function p.disbands(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Disbands')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Final"
function p.final(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Final appearance')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Final Dies"
function p.final_dies(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Final appearance; dies')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Flashback"
function p.flashback(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Main story and flashback')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Flashback and Flashforward"
function p.flashback_flashforward(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Main story, flashback and flashforward')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Flashforward"
function p.flashforward(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Main story and flashforward')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:FlashOnly"
function p.flashback_only(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Only in flashback')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:FlashforwardOnly"
function p.flashforward_only(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Only in flashforward')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Ghost"
function p.ghost_soul_spirit(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Ghost, soul or spirit')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Hologram"
function p.hologram(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('As hologram')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Joins"
function p.joins(frame)
local args = getArgs(frame)
local arg2 = args[2]
if not h.isempty(arg2)
then return build2(args[1], '/Appearances')..suffixTag('Joins '..arg2)
else return build2(args[1], '/Appearances')..suffixTag('Joins group')
end
end
--------------------------------------------------------------------------------
-- used in "Template:Last"
function p.last(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Last appearance')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Leaves"
function p.leaves(frame)
local args = getArgs(frame)
local arg2 = args[2]
if not h.isempty(arg2)
then return build2(args[1], '/Appearances')..suffixTag('Leaves '..arg2)
else return build2(args[1], '/Appearances')..suffixTag('Leaves group')
end
end
--------------------------------------------------------------------------------
-- used in "Template:Only"
function p.only(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('First and only known appearance')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Only Destruction"
function p.only_destruction(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('First and only known appearance; destruction')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Only Dies"
function p.only_dies(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('First and only known appearance; dies')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:OnScreen"
function p.on_screen(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Appears on screen')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Origin"
function p.origin(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Origin revealed')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:PossessedBy"
function p.possessed_by(frame)
local args = getArgs(frame)
local value1 = args[1]
local value2 = args[2]
local output_categories = {}
if not h.isempty(value1)
then
if h.is_link(value1)
then table.insert(output_categories, h.break_link(value1)..'/Appearances')
end
else
value1 = ''
end
if not h.isempty(value2)
then
if h.is_link(value2)
then table.insert(output_categories, h.break_link(value2)..'/Appearances')
end
value2 = suffixTag('Possessed by '..value2)
else
value2 = ''
end
return value1..value2..h.add_categories(output_categories)
end
--------------------------------------------------------------------------------
-- used in "Template:Possesses"
function p.possesses(frame)
local args = getArgs(frame)
local value1 = args[1]
local value2 = args[2]
local output_categories = {}
if not h.isempty(value1)
then
if h.is_link(value1)
then table.insert(output_categories, h.break_link(value1)..'/Appearances')
end
else
value1 = ''
end
if not h.isempty(value2)
then
if h.is_link(value2)
then table.insert(output_categories, h.break_link(value2)..'/Appearances')
end
value2 = suffixTag('Possesses '..value2)
else
value2 = ''
end
return value1..value2..h.add_categories(output_categories)
end
--------------------------------------------------------------------------------
-- used in "Template:Recap"
function p.recap(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Main story and recap')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Rejoins"
function p.rejoins(frame)
local args = getArgs(frame)
local arg2 = args[2]
if not h.isempty(arg2)
then return build2(args[1], '/Appearances')..suffixTag('Rejoins '..arg2)
else return build2(args[1], '/Appearances')..suffixTag('Rejoins group')
end
end
--------------------------------------------------------------------------------
-- used in "Template:Repaired"
function p.repaired(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Repaired')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Resurrection"
function p.resurrection(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Resurrection')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Revealed Alive"
function p.revealed_alive(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Revealed to be alive')
end
--------------------------------------------------------------------------------
-- used in "Template:Shadow"
function p.shadow(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Shadow only')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Topical Reference"
function p.topical_reference(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag( h.Link('Glossary:Topical Reference', 'Topical Reference') )..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Unnamed"
function p.unnamed(frame)
local args = getArgs(frame)
return build2(args[1], '/Appearances')..suffixTag('Unnamed')..outdated_field(args)
end
-- ****************************************************************************************************************
--------------------------------------------------------------------------------
function p.minor(frame)
local args = getArgs(frame)
return build(args[1], args[2], '/Minor Appearances')..suffixTag(args[3])
end
--------------------------------------------------------------------------------
-- used in "Template:BTS"
function p.behind_the_scenes(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Behind the scenes')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Carving"
function p.carving(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Carving')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Corpse"
function p.corpse(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Corpse, skeleton or other remains')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Drawing"
function p.drawing(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Drawing')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Dream"
function p.dream(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Dream')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Illusion"
function p.illusion_or_hologram(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Illusion or holographic simulation')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Imagination"
function p.imagination(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Imagination')
end
--------------------------------------------------------------------------------
-- used in "Template:OnScreenOnly"
function p.on_screen_only(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Only on screen as a static image or video record')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Photo"
function p.photo(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Photo')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Poster"
function p.poster(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Poster')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:RecapOnly"
function p.recap_only(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Only in recap')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Wreckage"
function p.wreckage(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Wreckage, ruins, debris, fragments')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Statue"
function p.statue(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Statue')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Toy"
function p.toy(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Toy')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Vision"
function p.vision(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Vision')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Voice"
function p.voice(frame)
local args = getArgs(frame)
return build2(args[1], '/Minor Appearances')..suffixTag('Voice')..outdated_field(args)
end
-- ****************************************************************************************************************
--------------------------------------------------------------------------------
-- used in "Template:Mentioned"
function p.mentioned(frame)
local args = getArgs(frame)
return build2(args[1], '/Mentions')..suffixTag('Mentioned')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Map"
function p.map(frame)
local args = getArgs(frame)
return build2(args[1], '/Mentions')..suffixTag('Map')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Named"
function p.named(frame)
local args = getArgs(frame)
return build2(args[1], '/Mentions')..suffixTag('Name only')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Referenced"
function p.referenced(frame)
local args = getArgs(frame)
return build2(args[1], '/Mentions')..suffixTag('Referenced')..outdated_field(args)
end
--------------------------------------------------------------------------------
-- used in "Template:Tombstone"
function p.tombstone(frame)
local args = getArgs(frame)
return build2(args[1], '/Mentions')..suffixTag('Tombstone')
end
-- ****************************************************************************************************************
--------------------------------------------------------------------------------
-- used in "Template:Invoked"
function p.invoked(frame)
local args = getArgs(frame)
return build2(args[1], '/Invocations')..suffixTag('Invoked')..outdated_field(args)
end
-- ****************************************************************************************************************
--------------------------------------------------------------------------------
-- used in "Template:Impersonates"
function p.impersonates(frame)
local args = getArgs(frame)
return suffixTag('Impersonates '..args[1])
end
--------------------------------------------------------------------------------
-- used in "Template:Killed"
function p.killed(frame)
local args = getArgs(frame)
local output = 'Killed'
if not h.isempty(args[1])
then output = 'Killed by '..args[1]
end
return suffixTag(output)
end
--------------------------------------------------------------------------------
-- used in "Template:RevealedAs"
function p.revealed_as(frame)
local args = getArgs(frame)
return suffixTag('Revealed as '..args[1])
end
return p