This documentation is transcluded from Module:TrainVariants/doc. Changes can be proposed in the talk page.
Module:TrainVariants loads configuration from Module:TrainVariants/config.json.
This module can be configurated from the config.json subpage.
This module is unused.
This module is neither invoked by a template nor required/loaded by another module. If this is in error, make sure to add
{{Documentation}}
/{{No documentation}}
to the calling template's or parent's module documentation.Function list |
---|
L 10 — TrainVariants.out L 62 — TrainVariants.new |
require( 'strict' )
local TrainVariants = {}
local MODULE_NAME = 'Module:TrainVariants'
local config = mw.loadJsonData( MODULE_NAME .. '/config.json' )
--- Generates wikitext needed for the template
--- @return string
function TrainVariants.out(data)
local containerHtml = mw.html.create( 'div' ):addClass( 'template-trainVariants' )
local placeholderImage = 'File:' .. config.placeholder_image
for i, variant in ipairs( data ) do
if variant.name then
local variantHtml = mw.html.create( 'div' ):addClass( 'template-trainVariant' )
if variant.name == mw.title.getCurrentTitle().fullText then
variantHtml:addClass( 'template-trainVariant--selected' )
end
local image
if variant.image then
image = string.format( 'File:%s', variant.image )
else
image = variant.image or placeholderImage
end
local link
if variant.link then
link = string.format( '[[%s|%s]]', variant.link, variant.name )
else
link = variant.name
end
variantHtml:tag( 'div' )
:addClass( 'template-trainVariant-fakelink' )
:wikitext(link)
variantHtml:tag( 'div' )
:addClass( 'template-trainVariant-image' )
:wikitext( string.format( '[[%s|480px|link=]]', image ) )
local variantTextHtml = mw.html.create( 'div' )
:addClass( 'template-trainVariant-text' )
:tag( 'div' )
:addClass( 'template-trainVariant-title' )
:wikitext( variant.name )
:done()
variantTextHtml:tag( 'div' )
:addClass( 'template-trainVariant-subtitle' )
:wikitext( variant.subname )
variantHtml:node( variantTextHtml )
containerHtml:node( variantHtml )
end
end
return mw.getCurrentFrame():extensionTag {
name = 'templatestyles', args = { src = MODULE_NAME .. '/styles.css' }
} .. tostring( containerHtml )
end
--- Parser call for generating the table
function TrainVariants.new( frame )
local args = require( 'Module:Arguments' ).getArgs( frame )
local data = {}
--[[
{name,subname,image,link}
--]]
for i,v in pairs(args) do
local n,var = string.match(tostring(i),"^(%d+)%_(%a*)")
assert(n,"Args must have leading digits")
local n = tonumber(n)
if not data[n] then
data[n] = {[var] = v}
else
data[n][var] = v
end
end
return TrainVariants.out(data)
end
return TrainVariants