Module:Description
From Neodyland Wiki
More actions
This documentation is transcluded from Module:Description/doc.
--[[
__ __ _ _ ____ _ _ _
| \/ | ___ __| |_ _| | ___ _| _ \ ___ ___ ___ _ __(_)_ __ | |_(_) ___ _ __
| |\/| |/ _ \ / _` | | | | |/ _ (_) | | |/ _ \/ __|/ __| '__| | '_ \| __| |/ _ \| '_ \
| | | | (_) | (_| | |_| | | __/_| |_| | __/\__ \ (__| | | | |_) | |_| | (_) | | | |
|_| |_|\___/ \__,_|\__,_|_|\___(_)____/ \___||___/\___|_| |_| .__/ \__|_|\___/|_| |_|
|_|
Description is a module implementing functionality of {{Description}}
template, which is used by {{en}}, {{de}} and other language templates.
Authors and maintainers:
* User:Jarekt
]]
local core = require('Module:Core')
local p = {}
------------------------------------------------------------------------------
--[[
display a language followed by a message. Like "English: Hello" with extensive HTML marking
Code equivalent to https://commons.wikimedia.org/wiki/Template:Description with only 3 inputs
Inputs:
1) text - text to display
2) textLang - language code for the above text
3) inline - Optional, default is false. When set to true, forces the template to be displayed
inline, so that it does not break the current paragraph (that makes possible to put several
descriptions side by side on a single line)
]]
function p.langWrapper(text, textLang, inline)
inline = core.yesno(inline, false) and 'inline' or nil
local wordsep = mw.message.new( "Word-separator" ):inLanguage(textLang):plain()
local LangName = mw.language.fetchLanguageName( textLang, textLang)
local language = mw.language.new( textLang )
local dir = language:getDir()
local ltag = mw.html.create('span') -- bold language name string
:addClass('language') -- class: "language" and "en", "de" etc.
:addClass(textLang) -- classes: "en", "de" etc.
:wikitext('<b>' .. language:ucfirst(LangName)..':</b>')
local dtag = mw.html.create('div')
:addClass('description') -- div.description is tracked by mw:Extension:CommonsMetadata
:addClass('mw-content-'..dir) -- mw-content-rtl and mw-content-ltr are defined in mediawiki-code (https://gerrit.wikimedia.org/r/c/mediawiki/core/+/208332)
:addClass(textLang) -- not sure where "en", "de" etc. are defined
:attr('dir', dir)
:attr('lang', textLang)
:css('display', inline)
:wikitext(tostring(ltag) .. wordsep .. text)
return tostring(dtag)
end
function p.description(frame)
local args = core.getArgs(frame)
local desc
local inline = (args.inline ~= nil)
if args.text == nil then -- if no string than add error message and a category
local cat = 'Category:Language templates with no text displayed'
local msg = core.formatMessage('I18n/DescriptionError.tab', 'missing text', lang)
msg = mw.html.create('span'):addClass("error"):wikitext(msg)
msg = '[' .. frame:callParserFunction{ name = 'fullurl', args={cat} } .. tostring(msg) .. ']'
msg = mw.html.create('span'):addClass("plainlinks"):wikitext(msg)
desc = p.langWrapper(tostring(msg) or 'nil', args.lang, args.inline)
local namespace = mw.title.getCurrentTitle().namespace
local LUT = {[0]=1, [6]=1, [10]=1, [14]=1, [100]=1, [106]=1}
if LUT[namespace]==1 then
desc = desc .. '[[' .. cat .. ']]'
end
else
desc = p.langWrapper(args.text, args.lang, args.inline)
end
return desc
end
return p