Module:Redirect hatnote: Difference between revisions
From the Croc Wiki, the Croc encyclopedia
Jump to navigationJump to search
Content added Content deleted
(remove the check for "other uses" coming last, as this is not how Template:Redirect currently works) |
(create a formatUseTable to reduce code redundancy) |
||
Line 43: | Line 43: | ||
iArg = iArg + 2 |
iArg = iArg + 2 |
||
local useTable = data[iData] or {} |
local useTable = data[iData] or {} |
||
⚫ | |||
local use = args[iArg] |
local use = args[iArg] |
||
local page = args[iArg + 1] |
local page = args[iArg + 1] |
||
local nextUse = args[iArg + 2] |
local nextUse = args[iArg + 2] |
||
pages[#pages + 1] = page |
|||
useTable.pages = pages |
|||
if use ~= 'and' then |
if use ~= 'and' then |
||
useTable.use = use |
useTable.use = use |
||
Line 61: | Line 63: | ||
return p._redirect(redirect, data, options) |
return p._redirect(redirect, data, options) |
||
⚫ | |||
local function formatUseTable(useTable, isFirst, redirect) |
|||
-- Formats one use table. Use tables are the tables inside the data array. |
|||
-- Each one corresponds to one use. (A use might be the word "cats" in the |
|||
-- phrase "For cats, see [[Felines]]".) |
|||
-- Returns a string, or nil if no use was specified. |
|||
-- The isFirst parameter is used to apply special formatting for the first |
|||
-- table in the data array. If isFirst is specified, the redirect parameter |
|||
useTable = useTable or {} |
|||
⚫ | |||
if isFirst then |
|||
⚫ | |||
elseif not useTable.use then |
|||
return nil |
|||
⚫ | |||
⚫ | |||
⚫ | |||
use = useTable.use |
|||
⚫ | |||
local pages = useTable.pages |
|||
if isFirst then |
|||
redirect = redirect or error( |
|||
'isFirst was set in formatUseTable, but no redirect was supplied', |
|||
⚫ | |||
) |
|||
⚫ | |||
else |
|||
⚫ | |||
end |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
end |
end |
||
Line 70: | Line 109: | ||
-- Generate the text. |
-- Generate the text. |
||
local text = {} |
local text = {} |
||
-- Redirect text. |
|||
text[#text + 1] = '"' .. redirect .. '" redirects here.' |
text[#text + 1] = '"' .. redirect .. '" redirects here.' |
||
text[#text + 1] = formatUseTable(data[1] or {}, true, redirect) |
|||
-- The first table, a special case. |
|||
if data[1] and data[1].use and data[1].use ~= 'other uses' then |
|||
local useTable1 = data[1] or {} |
|||
⚫ | |||
⚫ | |||
local pages1 = mHatnote.formatPages(unpack(useTable1)) |
|||
pages1 = mw.text.listToText(pages1) |
|||
⚫ | |||
⚫ | |||
use1, |
|||
pages1 |
|||
⚫ | |||
-- The other tables. |
|||
if use1 ~= 'other uses' then |
|||
for i = 2, #data do |
for i = 2, #data do |
||
text[#text + 1] = formatUseTable(data[i] or {}, false) |
|||
⚫ | |||
if not origUse then |
|||
break |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
use = origUse |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
text[#text + 1] = string.format( |
|||
'For %s, see %s.', |
|||
⚫ | |||
⚫ | |||
⚫ | |||
end |
end |
||
end |
end |
||
Line 115: | Line 124: | ||
-- Find whether to add the tracking category. |
-- Find whether to add the tracking category. |
||
-- We add the category if: |
-- We add the category if all of the following are true: |
||
-- a) redirect isn't any of the keywords 'REDIRECT', 'REDIRECT1', |
-- a) redirect isn't any of the keywords 'REDIRECT', 'REDIRECT1', |
||
-- 'REDIRECT2', ..., or 'TERM'. |
-- 'REDIRECT2', ..., or 'TERM'. |