Module:Sandbox/28bytes/acm

Revision as of 23:52, 9 December 2018 by imported>28bytes (fix)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

gettitle edit source

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 edit source

  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: File:Symbol question.svg
    • G to display this symbol after the article title: File:Symbol support vote.svg
    • o to display ‹› after the article title
  2. Article title excluding the disamiguator (required)
  3. Disambiguator (optional)

Usage examples edit source

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) File: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 "I.G.Y. (What a Beautiful World)" File:Symbol question.svg

For an album title without a parenthetical disambiguator:

{{#invoke:Sandbox/28bytes/acm|gettitle|?Gt|Move Like This}}
displays Move Like This File:Symbol question.svgFile:Symbol support vote.svg

local p = {}

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

	if fmter == nil then
		fmter = "" --optional
	end
	if base == nil or base == "" then
		error("Missing/empty parameter; see module documentation for usage")
		return ""
	end
	if disam == nil then
		disam = "" --optional
	end
		
	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