Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Book appearances: Difference between revisions

From Wings of Fire Wiki
adding the rest of the books in
Darkstalker refers to the character page, so use Darkstalker (book) instead
 
(3 intermediate revisions by one other user not shown)
Line 4: Line 4:


local abbrs = {
local abbrs = {
["TDP"] = "The Dragonet Prophecy",
["TDP"] = "[[The Dragonet Prophecy]]",
["TLH"] = "The Lost Heir",
["TLH"] = "[[The Lost Heir]]",
["THK"] = "The Hidden Kingdom",
["THK"] = "[[The Hidden Kingdom]]",
["TDS"] = "The Dark Secret",
["TDS"] = "[[The Dark Secret]]",
["TBN"] = "The Brightest Night",
["TBN"] = "[[The Brightest Night]]",
["MR"] = "Moon Rising",
["MR"] = "[[Moon Rising]]",
["WT"] = "Winter Turning",
["WT"] = "[[Winter Turning]]",
["EP"] = "Escaping Peril",
["EP"] = "[[Escaping Peril]]",
["TOP"] = "Talons of Power",
["TOP"] = "[[Talons of Power]]",
["DOD"] = "Darkness of Dragons",
["DOD"] = "[[Darkness of Dragons]]",
["TLC"] = "The Lost Continent",
["TLC"] = "[[The Lost Continent]]",
["THQ"] = "The Hive Queen",
["THQ"] = "[[The Hive Queen]]",
["TPJ"] = "The Poison Jungle",
["TPJ"] = "[[The Poison Jungle]]",
["TDG"] = "The Dangerous Gift",
["TDG"] = "[[The Dangerous Gift]]",
["TFOH"] = "The Flames of Hope",
["TFOH"] = "[[The Flames of Hope]]",
["L1"] = "Darkstalker",
["L1"] = "[[Darkstalker (book)|Darkstalker]]",
["L2"] = "Dragonslayer",
["L2"] = "[[Dragonslayer]]",
["DS"] = "DS is ambiguous and could refer to Darkstalker (use L1) or Dragonslayer (use L2).",
["DS"] = "DS is ambiguous and could refer to Darkstalker (use L1) or Dragonslayer (use L2).",
["W:P"] = "Prisoners",
["W:P"] = "[[Prisoners]]",
["W:A"] = "Assassin",
["W:A"] = "[[Assassin]]",
["W:D"] = "Deserter",
["W:D"] = "[[Deserter]]",
["W:R"] = "Runaway",
["W:R"] = "[[Runaway]]",
["AGTTDW"] = "[[A Guide to the Dragon World]]",
["TOCB"] = "The Official Coloring Book",
["FYDW"] = "[[Forge Your Dragon World]]",
["HTD"] = "How to Draw",
["SGAB"] = "Stained Glass Art Book"
}
}


Line 39: Line 44:
-- iterate over substrings
-- iterate over substrings
for i, v in ipairs(names) do
for i, v in ipairs(names) do
local full = abbrs[v]
if str == "" then
if full then
-- do notning
names[i] = string.format(fmt, full)
else
else
return '{{error|Unrecognized abbreviation <code>' .. v .. '</code>}}'
local full = abbrs[v]
if full then
names[i] = string.format(fmt, full)
else
return '{{error|Unrecognized abbreviation <code>' .. v .. '</code>}}'
end
end
end
end
end
Line 53: Line 62:
local args = frame.args
local args = frame.args
local str = args.str or args[1]
local str = args.str or args[1]
local fmt = args.fmt or args[2] or "''[[%s]]''"
local fmt = args.fmt or args[2] or "''%s''"
local delim = args.delim or args[3] or '<br>'
local delim = args.delim or args[3] or '<br>'
return frame:preprocess(p._appearancesList(str, fmt, delim))
return frame:preprocess(p._appearancesList(str, fmt, delim))

Latest revision as of 09:15, 9 July 2025

Documentation for this module may be created at Module:Book appearances/doc

-- local string = require("Module:String")

local p = {}

local abbrs = {
	["TDP"] = "[[The Dragonet Prophecy]]",
	["TLH"] = "[[The Lost Heir]]",
	["THK"] = "[[The Hidden Kingdom]]",
	["TDS"] = "[[The Dark Secret]]",
	["TBN"] = "[[The Brightest Night]]",
	["MR"] = "[[Moon Rising]]",
	["WT"] = "[[Winter Turning]]",
	["EP"] = "[[Escaping Peril]]",
	["TOP"] = "[[Talons of Power]]",
	["DOD"] = "[[Darkness of Dragons]]",
	["TLC"] = "[[The Lost Continent]]",
	["THQ"] = "[[The Hive Queen]]",
	["TPJ"] = "[[The Poison Jungle]]",
	["TDG"] = "[[The Dangerous Gift]]",
	["TFOH"] = "[[The Flames of Hope]]",
	["L1"] = "[[Darkstalker (book)|Darkstalker]]",
	["L2"] = "[[Dragonslayer]]",
	["DS"] = "DS is ambiguous and could refer to Darkstalker (use L1) or Dragonslayer (use L2).",
	["W:P"] = "[[Prisoners]]",
	["W:A"] = "[[Assassin]]",
	["W:D"] = "[[Deserter]]",
	["W:R"] = "[[Runaway]]",
	["AGTTDW"] = "[[A Guide to the Dragon World]]",
	["TOCB"] = "The Official Coloring Book",
	["FYDW"] = "[[Forge Your Dragon World]]",
	["HTD"] = "How to Draw",
	["SGAB"] = "Stained Glass Art Book"
}

-- str: String to parse
-- delim: String to use to join the book names (default '\n')
function p._appearancesList(str, fmt, delim)
	if not str or str == "" then 
		return ""
	end
	fmt = fmt or '%s'
	delim = delim or '\n'
	local names = mw.text.split(str, ' ', true)
	-- iterate over substrings
	for i, v in ipairs(names) do
		if str == "" then
			-- do notning
		else
			local full = abbrs[v]
			if full then
				names[i] = string.format(fmt, full)
			else
				return '{{error|Unrecognized abbreviation <code>' .. v .. '</code>}}'
			end
		end
	end
	return table.concat(names, delim)
end

-- wrapper for _appearancesList, untested
function p.appearancesList(frame)
	local args = frame.args
	local str = args.str or args[1]
	local fmt = args.fmt or args[2] or "''%s''"
	local delim = args.delim or args[3] or '<br>'
	return frame:preprocess(p._appearancesList(str, fmt, delim))
end

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