Module:Sandbox/28bytes/acm

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

For an album title without a parenthetical disambiguator:

{{#invoke:Sandbox/28bytes/acm|gettitle|?Gt|Move Like This}}
displays Move Like This Symbol question.svgSymbol 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