Module:Hatnote list: Difference between revisions
Content deleted Content added
add "extratext" functionality to "ForSee" to allow text to be added after it |
m 21 revisions imported from wikipedia:Module:Hatnote_list |
||
(11 intermediate revisions by 8 users not shown) | |||
Line 9:
local mArguments --initialize lazily
local mFormatLink = require('Module:Format link')
local mHatnote = require('Module:Hatnote')
local libraryUtil = require('libraryUtil')
Line 29 ⟶ 30:
formatted = false
}
return string.find(
)
-- Stringifies a list generically; probably shouldn't be used directly
local function stringifyList(list, options)
-- Type-checks, defaults, and a shortcut
checkType("stringifyList", 1, list, "table")
Line 42 ⟶ 50:
local s = options.space
-- Format the list if requested
if options.formatted then
list = mFormatLink.formatPages(
{categorizeMissing = mHatnote.missingTargetCat}, list
)
end
-- Set the separator; if any item contains it, use the alternate separator
local separator = options.separator
▲ --searches display text only
▲ function searchDisp(t, f)
▲ return string.find(string.sub(t, (string.find(t, '|') or 0) + 1), f)
▲ end
for k, v in pairs(list) do
if searchDisp(v, separator) then
Line 65 ⟶ 73:
--DRY function
function p.conjList (conj, list, fmt)
return stringifyList(list, {conjunction = conj, formatted = fmt})
end
-- Stringifies lists with "and" or "or"
function p.andList (...) return p.conjList("and", ...) end
function p.orList (...) return p.conjList("or", ...) end
--------------------------------------------------------------------------------
Line 89 ⟶ 97:
--Collapses duplicate punctuation
local function punctuationCollapse (text)
local replacements = {
["%.%.$"] = ".",
Line 171 ⟶ 179:
for k, v in pairs(forSeeTable) do
local useStr = v.use or options.otherText
local pagesStr =
p.andList(v.pages, true) or
mFormatLink._formatLink{
categorizeMissing = mHatnote.missingTargetCat,
link = mHatnote.disambiguate(options.title)
}
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)
forSeeStr = punctuationCollapse(forSeeStr)
Line 177 ⟶ 190:
end
end
if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end
-- Return the concatenated list
return table.concat(strList, ' ')
|