Difference between revisions of "Module:HonorTitle"
From Pathfinder Wiki
DesignerThan (talk | contribs) |
DesignerThan (talk | contribs) (add support for pilots) |
||
(10 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
local notUseLUAPattern = true | local notUseLUAPattern = true | ||
− | function p.setDisplayTitle( frame | + | function p.setDisplayTitle( frame ) |
-- in case of an error the function doesn't return anything | -- in case of an error the function doesn't return anything | ||
− | if ( customTitle == nil or customTitle == '' ) then | + | local customTitle = '' |
+ | if ( frame.args.customTitle == nil or frame.args.customTitle == '' ) then | ||
local templateVersion = 'name' | local templateVersion = 'name' | ||
− | local | + | local locLandingPage = '' |
− | + | if ( frame.args.customLandingPage ~= nil and frame.args.customLandingPage ~= '' ) then | |
− | + | locLandingPage = frame.args.customLandingPage | |
− | + | mw.log('HonorTitle.setDisplayTitle (customLandingPage): '..locLandingPage) | |
− | + | end | |
− | local transHonorname = | + | local transHonorname = frame:expandTemplate{ title = 'GetHonorName', args = { page = locLandingPage } } |
mw.log('HonorTitle.setDisplayTitle (transHonorname): '..transHonorname) | mw.log('HonorTitle.setDisplayTitle (transHonorname): '..transHonorname) | ||
− | |||
− | |||
− | |||
local tActVariantInfo = honorUtils.getActVariantInfo( frame ) | local tActVariantInfo = honorUtils.getActVariantInfo( frame ) | ||
Line 26: | Line 24: | ||
-- it is a subpage | -- it is a subpage | ||
templateVersion = templateVersion..',subpage' | templateVersion = templateVersion..',subpage' | ||
− | subpage = utilities.localize( | + | subpage = utilities.localize(tActVariantInfo['subPage']) |
local variantType = tActVariantInfo['variantType'] | local variantType = tActVariantInfo['variantType'] | ||
local variantNumber = tActVariantInfo['variantNumber'] | local variantNumber = tActVariantInfo['variantNumber'] | ||
Line 49: | Line 47: | ||
else | else | ||
-- get the country data | -- get the country data | ||
− | if (tVariant['answers'][1]['countries'] ~= nil) then | + | if (tVariant['answers'][1]['countries'] ~= nil and |
− | templateVersion = templateVersion..', | + | tVariant['answers'][1]['countries']['split'] ~= nil and |
− | for key, country in pairs( | + | #tVariant['answers'][1]['countries']['split'] >= 1) then |
+ | templateVersion = templateVersion..',territory' | ||
+ | for key, country in pairs(tVariant['answers'][1]['countries']['split']) do | ||
if (countries == nil) then | if (countries == nil) then | ||
countries = country['translated'] | countries = country['translated'] | ||
Line 63: | Line 63: | ||
-- get req variant data for the authority | -- get req variant data for the authority | ||
local tReqVariant = honorUtils.getVariantsData(frame, '', 'requirements', tVariant['answers'][1]['authority']) | local tReqVariant = honorUtils.getVariantsData(frame, '', 'requirements', tVariant['answers'][1]['authority']) | ||
− | if (tReqVariant ~= nil and tReqVariant[' | + | if (tReqVariant ~= nil and tReqVariant['requirements'] ~= nil) then |
+ | mw.log('HonorTitle.setDisplayTitle: There are requirement variants!') | ||
templateVersion = templateVersion..',authority' | templateVersion = templateVersion..',authority' | ||
for key, authority in pairs(tReqVariant['requirements'][1]['authorities']) do | for key, authority in pairs(tReqVariant['requirements'][1]['authorities']) do | ||
Line 74: | Line 75: | ||
else | else | ||
-- no requirement variant?! | -- no requirement variant?! | ||
+ | mw.log('HonorTitle.setDisplayTitle: There are no requirement variants!') | ||
end | end | ||
end | end | ||
Line 83: | Line 85: | ||
end | end | ||
− | customTitle = getTitle(templateVersion, transHonorname, subpage, countries, authorities) | + | local honorstate = frame.args.state |
+ | if ( honorstate == nil or honorstate == '' ) then | ||
+ | -- try to get it from MetaData | ||
+ | mw.log('HonorTitle.setDisplayTitle: Call GetHonorMetaData for state!') | ||
+ | honorstate = frame:expandTemplate{ title = 'GetHonorMetaData', args = { dontTranslate = 'true', parameter = 'state' } } | ||
+ | end | ||
+ | mw.log('HonorTitle.setDisplayTitle (honorstate): '..tostring(honorstate)) | ||
+ | |||
+ | customTitle = getTitle(templateVersion, transHonorname, subpage, countries, authorities, honorstate) | ||
if (customTitle == nil) then | if (customTitle == nil) then | ||
-- return nothing so the title doesn't get changed | -- return nothing so the title doesn't get changed | ||
return | return | ||
end | end | ||
+ | else | ||
+ | customTitle = frame.args.customTitle | ||
end | end | ||
return mw.ext.displaytitle.set(customTitle) | return mw.ext.displaytitle.set(customTitle) | ||
end | end | ||
− | function getTitle(templateVersion, honorname, subpage, countries, authorities) | + | function getTitle(templateVersion, honorname, subpage, countries, authorities, honorstate) |
+ | if honorstate == 'piloting' then | ||
+ | templateVersion = 'pilot,'..templateVersion | ||
+ | end | ||
+ | |||
local title = utilities.localize(templateVersion, 'HonorTitle') | local title = utilities.localize(templateVersion, 'HonorTitle') | ||
if (title ~= templateVersion) then | if (title ~= templateVersion) then | ||
+ | mw.log('HonorTitle.getTitle: Replace $honorname with '..honorname) | ||
title = mw.ustring.gsub(title, '$honorname', honorname) | title = mw.ustring.gsub(title, '$honorname', honorname) | ||
if (subpage ~= nil) then | if (subpage ~= nil) then | ||
+ | mw.log('HonorTitle.getTitle: Replace $subpage with '..subpage) | ||
title = mw.ustring.gsub(title, '$subpage', subpage) | title = mw.ustring.gsub(title, '$subpage', subpage) | ||
end | end | ||
− | if ( | + | if (countries ~= nil) then |
− | title = mw.ustring.gsub(title, '$ | + | mw.log('HonorTitle.getTitle: Replace $territory with '..countries) |
+ | title = mw.ustring.gsub(title, '$territory', countries) | ||
end | end | ||
− | if ( | + | if (authorities ~= nil) then |
+ | mw.log('HonorTitle.getTitle: Replace $authority with '..authorities) | ||
title = mw.ustring.gsub(title, '$authority', authorities) | title = mw.ustring.gsub(title, '$authority', authorities) | ||
end | end |
Latest revision as of 16:18, 3 April 2022
Documentation for this module may be created at Module:HonorTitle/doc
local p = {}
local utilities = require ( "Module:Utilities" )
local honorUtils = require ( "Module:HonorUtils" )
local notUseLUAPattern = true
function p.setDisplayTitle( frame )
-- in case of an error the function doesn't return anything
local customTitle = ''
if ( frame.args.customTitle == nil or frame.args.customTitle == '' ) then
local templateVersion = 'name'
local locLandingPage = ''
if ( frame.args.customLandingPage ~= nil and frame.args.customLandingPage ~= '' ) then
locLandingPage = frame.args.customLandingPage
mw.log('HonorTitle.setDisplayTitle (customLandingPage): '..locLandingPage)
end
local transHonorname = frame:expandTemplate{ title = 'GetHonorName', args = { page = locLandingPage } }
mw.log('HonorTitle.setDisplayTitle (transHonorname): '..transHonorname)
local tActVariantInfo = honorUtils.getActVariantInfo( frame )
local countries = nil
local authorities = nil
local subpage = nil
if ( tActVariantInfo ~= nil ) then
-- it is a subpage
templateVersion = templateVersion..',subpage'
subpage = utilities.localize(tActVariantInfo['subPage'])
local variantType = tActVariantInfo['variantType']
local variantNumber = tActVariantInfo['variantNumber']
if (variantType == 'requirements') then
local tVariant = honorUtils.getVariantsData( frame, '', variantType, variantNumber)
if (tVariant == nil or tVariant['requirements'] == nil) then
mw.log('HonorTitle.setDisplayTitle: There are no Requirements Variants!')
else
templateVersion = templateVersion..',authority'
for key, authority in pairs(tVariant['requirements'][1]['authorities']) do
if (key == 1) then
authorities = authority['translated']
else
authorities = authorities..' & '..authority['translated']
end
end
end
elseif (variantType == 'answerKey') then
local tVariant = honorUtils.getVariantsData( frame, '', variantType, variantNumber)
if (tVariant == nil or tVariant['answers'] == nil) then
mw.log('HonorTitle.setDisplayTitle: There are no answer key Variants!')
else
-- get the country data
if (tVariant['answers'][1]['countries'] ~= nil and
tVariant['answers'][1]['countries']['split'] ~= nil and
#tVariant['answers'][1]['countries']['split'] >= 1) then
templateVersion = templateVersion..',territory'
for key, country in pairs(tVariant['answers'][1]['countries']['split']) do
if (countries == nil) then
countries = country['translated']
else
countries = countries..' & '..country['translated']
end
end
end
-- get the authority data
if (tVariant['answers'][1]['authority'] ~= nil) then
-- get req variant data for the authority
local tReqVariant = honorUtils.getVariantsData(frame, '', 'requirements', tVariant['answers'][1]['authority'])
if (tReqVariant ~= nil and tReqVariant['requirements'] ~= nil) then
mw.log('HonorTitle.setDisplayTitle: There are requirement variants!')
templateVersion = templateVersion..',authority'
for key, authority in pairs(tReqVariant['requirements'][1]['authorities']) do
if (authorities == nil) then
authorities = authority['translated']
else
authorities = authorities..' & '..authority['translated']
end
end
else
-- no requirement variant?!
mw.log('HonorTitle.setDisplayTitle: There are no requirement variants!')
end
end
end
end
else
-- it is probably the landing page
-- we don't need to do anything
end
local honorstate = frame.args.state
if ( honorstate == nil or honorstate == '' ) then
-- try to get it from MetaData
mw.log('HonorTitle.setDisplayTitle: Call GetHonorMetaData for state!')
honorstate = frame:expandTemplate{ title = 'GetHonorMetaData', args = { dontTranslate = 'true', parameter = 'state' } }
end
mw.log('HonorTitle.setDisplayTitle (honorstate): '..tostring(honorstate))
customTitle = getTitle(templateVersion, transHonorname, subpage, countries, authorities, honorstate)
if (customTitle == nil) then
-- return nothing so the title doesn't get changed
return
end
else
customTitle = frame.args.customTitle
end
return mw.ext.displaytitle.set(customTitle)
end
function getTitle(templateVersion, honorname, subpage, countries, authorities, honorstate)
if honorstate == 'piloting' then
templateVersion = 'pilot,'..templateVersion
end
local title = utilities.localize(templateVersion, 'HonorTitle')
if (title ~= templateVersion) then
mw.log('HonorTitle.getTitle: Replace $honorname with '..honorname)
title = mw.ustring.gsub(title, '$honorname', honorname)
if (subpage ~= nil) then
mw.log('HonorTitle.getTitle: Replace $subpage with '..subpage)
title = mw.ustring.gsub(title, '$subpage', subpage)
end
if (countries ~= nil) then
mw.log('HonorTitle.getTitle: Replace $territory with '..countries)
title = mw.ustring.gsub(title, '$territory', countries)
end
if (authorities ~= nil) then
mw.log('HonorTitle.getTitle: Replace $authority with '..authorities)
title = mw.ustring.gsub(title, '$authority', authorities)
end
return title
else
return nil
end
end
return p