Jump to content
Toggle menu
  • 8 articles
  • 75 files
  • 7 users
  • 37.8K edits
Neodyland Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Description: Difference between revisions

From Neodyland Wiki
No edit summary
code cleanup
 
(4 intermediate revisions by the same user not shown)
Line 18: Line 18:


------------------------------------------------------------------------------
------------------------------------------------------------------------------
--[[
local function missing_text_error(args)  
display a language followed by a message. Like "English: Hello" with extensive HTML marking
-- Empty text field -> display error message and add maintenance category
Code equivalent to https://commons.wikimedia.org/wiki/Template:Description
-- <span class="plainlinks">[{{fullurl:Category:Language templates with no text displayed}} <span class="error">{{Description/i18n}}</span>]</span>
Inputs:
local cat = 'Category:Language templates with no text displayed'
  1) text_lang - language code for the above text, also used as a name of the CSS formating class
local msg  = core.formatMessage('I18n/DescriptionError.tab', 'missing text', args.user_lang)
  2) text - description text to display
local frame = mw.getCurrentFrame()
  3) args - additional optional arguments. Numbers in perenthesis are parameter numbers in the original template.
msg = mw.html.create('span'):addClass("error"):wikitext(msg)
  * hover    - (3) hover aka mouseover aka tooltip text
msg = '[' .. frame:callParserFunction{ name = 'fullurl', args={cat} }  .. tostring(msg) .. ']'
  * lang_tag - (4) standard code for lang tag in HTML (optional, default is same as text_lang)
msg = mw.html.create('span'):addClass("plainlinks"):wikitext(msg)
  * ext      - (5) extension text shown after the language name before colon (optional, default is empty)
desc = core.langWrapper(args.text_lang, tostring(msg), args)
      * inline - Optional, default is false. When set to true, forces the template to be displayed
local namespace = mw.title.getCurrentTitle().namespace
            inline, so that it does not break the current paragraph (that makes possible to put several
local LUT = {[0]=1, [6]=1, [10]=1, [14]=1, [100]=1, [106]=1}
        descriptions side by side on a single line)
if LUT[namespace]==1 then
 
desc = desc .. '[[' .. cat .. ']]'
<div
class="description mw-content-{{Dir|{{{4|{{{1}}}}}}}} {{{1}}}"  
dir="{{Dir|{{{4|{{{1}}}}}}}}"
lang="{{{4|{{{1}}}}}}"
style="{{#if:{{{inline|}}}|display:inline;}}">
 
<span  
class="language {{{1}}}"
title="{{{name|{{{3|}}}}}}">'''{{ucfirst:{{#language:{{{1}}}}}}}{{{5|}}}:'''</span>  
{{{2}}}
</div>  
]]
function p.langWrapper(text_lang, text, args)
local dir, space, colon, lang_name, hover
local inline    = core.yesno(args.inline, false) and 'inline' or nil
if mw.language.isKnownLanguageTag(text_lang) then
local langObj = mw.language.new( text_lang )
dir      = langObj:getDir()          -- text direction
space    = mw.message.new( "Word-separator" ):inLanguage(text_lang):plain()  
colon    = mw.message.new( "Colon" ):inLanguage(text_lang):plain()  
lang_name = langObj:ucfirst(mw.language.fetchLanguageName(text_lang, text_lang))
hover    = mw.language.fetchLanguageName( text_lang, args.user_lang or 'en')
else
dir  = 'ltr'
space = ' '
colon = ':'
text_lang = nil
lang_name = args.lang_name or text_lang or 'Unknown'
end
end
lang_name = '<b>' .. lang_name .. (args.ext or '') .. colon .. '</b>'
return desc
-- create HTML
local ltag = mw.html.create('span')  -- bold language name string
:addClass('language')  -- class: "language"
:addClass(text_lang)  -- class:  "en", "de" etc.
:attr('title', hover)  -- add hover aka mouseover aka tooltip text
:wikitext(lang_name)
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(text_lang)          -- not sure where "en", "de" etc. are defined
:attr('dir', dir)
:attr('lang', text_lang)
:css('display', inline)
:wikitext(tostring(ltag) .. space .. text)
return tostring(dtag)
end
end


 
------------------------------------------------------------------------------
function p.description(frame)  
function p.description(frame)  
local args = core.getArgs(frame)
local args = core.getArgs(frame)
local desc
args.user_lang = args.user_lang or args.lang -- core.getArgs sets args.lang
args.user_lang = args.user_lang or args.lang
args.inline    = (args.inline ~= nil) -- convert to boolean
if args.text == nil then -- if no string than add error message and a category
if args.text == nil then -- if no string than add error message and a category
-- <span class="plainlinks">[{{fullurl:Category:Language templates with no text displayed}} <span class="error">{{Description/i18n}}</span>]</span>
return missing_text_error(args)  
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(args.text_lang, tostring(msg), args)
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
else
desc = p.langWrapper(args.text_lang, args.text, args)
return core.langWrapper(args.text_lang, args.text, args)
end
end
return desc
end
end


return p
return p
--[[
Oddballs:
 
]]

Latest revision as of 19:55, 11 May 2022

Module documentation[ create · purge ]
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 = {}

------------------------------------------------------------------------------
local function missing_text_error(args) 
	-- Empty text field -> display error message and add maintenance category
	-- <span class="plainlinks">[{{fullurl:Category:Language templates with no text displayed}} <span class="error">{{Description/i18n}}</span>]</span>
	local cat = 'Category:Language templates with no text displayed'
	local msg  = core.formatMessage('I18n/DescriptionError.tab', 'missing text', args.user_lang)
	local frame = mw.getCurrentFrame()
	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 = core.langWrapper(args.text_lang, tostring(msg), args)
	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
	return desc
end

------------------------------------------------------------------------------
function p.description(frame) 
	local args = core.getArgs(frame)
	args.user_lang = args.user_lang or args.lang -- core.getArgs sets args.lang
	if args.text == nil then -- if no string than add error message and a category
		return missing_text_error(args) 
	else
		return core.langWrapper(args.text_lang, args.text, args)
	end
end

return p
Cookies help us deliver our services. By using our services, you agree to our use of cookies.