Module:Folger Shakespeare
Revision as of 22:18, 23 September 2020 by Wikipedia>Pppery (Cleanup)
Implements {{Folger Shakespeare}}
-- This module's function lookup table, used by the calling context
local p = {}
function p.main(frame)
local pframe = frame:getParent()
cfg = mw.loadData('Module:Folger Shakespeare/configuration');
local play = cfg.aliases[pframe.args[1]] or ''
local act = pframe.args[2] or ''
local scene = pframe.args[3] or ''
local line = ''
local line_given = false
local ftln_given = false
if pframe.args['ftln'] then
line = pframe.args['ftln']
ftln_given = true
elseif pframe.args[4] then
line = pframe.args[4]
line_given = true
else
-- Both line_given and ftln_given will be false.
end
local display_line = line
if mw.ustring.match(line, '^%s*%d+[-–]%d+%s*$') then
line = mw.ustring.match(line, '^%s*(%d+)[-–]%d+%s*$')
elseif mw.ustring.match(line, '^%s*%d+%s*$') then
line = mw.ustring.match(line, '^%s*(%d+)%s*$')
else
-- Gotta figure out how to signal an error to the user.
end
local location
if ftln_given then
location = mw.ustring.format('ftln-%04d', line)
elseif line_given then
location = mw.ustring.format('line-%d.%d.%d', act, scene, line)
else
location = mw.ustring.format('line-%d.%d.%d', act, scene, 0)
end
local url = mw.ustring.format(cfg.url_pattern, play, location)
local id = play .. act .. '_' .. scene .. '_' .. display_line
local name = 'FOOTNOTE' .. id
local play_name = cfg.names[play].title
local location_link = ''
if ftln_given then
location_link = mw.ustring.format(cfg.ftln_format, url, display_line)
else
location_link = mw.ustring.format(cfg.location_format, url, act, scene, display_line)
end
local cite = '\'\'' .. play_name .. '\'\', ' .. location_link
local result = frame:extensionTag{
name = 'ref',
args = {name = name},
content = cite,
};
return result;
end
return p