Module:Sandbox/28bytes/acm

From blackwiki
< Module:Sandbox
Revision as of 08:43, 8 December 2018 by blackwiki>28bytes (fix)
Jump to navigation Jump to search

gettitle

This function accepts an article title and formats it with quotes or italics as specified (useful for songs, albums and books.) It can also optionally add a "Did you know" indicator and/or Good Article indicator following the article title.

Arguments

  1. Formatting specifiers, in any order:
    • q to display the title excluding the disambiguator (if any) in quotes
    • t to display the title excluding the disambiguator (if any) in italics
    • ? to display this symbol after the article title: Symbol question.svg
    • G to display this symbol after the article title: Symbol support vote.svg
    • o to display ‹› after the article title
  2. Article title excluding the disamiguator (required)
  3. Disambiguator (optional)

Usage examples

For a song title with a parenthetical disambiguator that should not be in quotation marks:

{{#invoke:Sandbox/28bytes/acm|gettitle|?q|Cinema|(Yes song)}}
displays "Cinema" (Yes song) Symbol question.svg

For a song title with a parenthetical that should be in quotation marks, as it is part of the title:

{{#invoke:Sandbox/28bytes/acm|gettitle|?q|I.G.Y. (What a Beautiful World)}}
displays Lua error at line 20: attempt to concatenate local 'disam' (a nil value).

For an album title without a parenthetical disambiguator:

{{#invoke:Sandbox/28bytes/acm|gettitle|?Gt|Move Like This}}
displays Lua error at line 20: attempt to concatenate local 'disam' (a nil value).

local p = {}

p.gettitle = function( frame )
	
	local fmter = frame.args[1]
	local base = frame.args[2]
	local disam = frame.args[3]

	local c = ""
	if mw.ustring.find(fmter,"q") ~= nil then
		c = "\""
	elseif mw.ustring.find(fmter,"t") ~= nil then
		c = "''"
	end
	
	local title = ""
	if disam == "" then
		title = c .. "[[" .. base .. "]]" .. c
	else
		title = "[[" .. base .. " " .. disam .. "|" .. c .. base .. c ..  " " .. disam .. "]]"
	end
	
	local separator = " "
	if mw.ustring.find(fmter,"o") ~= nil then
		separator = separator .. "‹›"
	end
	if mw.ustring.find(fmter,"?") ~= nil then
		separator = separator .. "[[File:Symbol question.svg|20px]]"
	end
	if mw.ustring.find(fmter,"G") ~= nil then
		separator = separator .. "[[File:Symbol support vote.svg|20px]]"
	end

	return title .. separator .. " "
		
end

return p