Changes

Jump to navigation Jump to search
m
1 revision imported
Line 9: Line 9:     
local mArguments --initialize lazily
 
local mArguments --initialize lazily
 +
local mFormatLink = require('Module:Format link')
 
local mHatnote = require('Module:Hatnote')
 
local mHatnote = require('Module:Hatnote')
 
local libraryUtil = require('libraryUtil')
 
local libraryUtil = require('libraryUtil')
Line 29: Line 30:  
formatted = false
 
formatted = false
 
}
 
}
 +
 +
--Searches display text only
 +
local function searchDisp(haystack, needle)
 +
return string.find(
 +
string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle
 +
)
 +
end
    
-- Stringifies a list generically; probably shouldn't be used directly
 
-- Stringifies a list generically; probably shouldn't be used directly
function stringifyList(list, options)
+
local function stringifyList(list, options)
 
-- Type-checks, defaults, and a shortcut
 
-- Type-checks, defaults, and a shortcut
 
checkType("stringifyList", 1, list, "table")
 
checkType("stringifyList", 1, list, "table")
Line 42: Line 50:  
local s = options.space
 
local s = options.space
 
-- Format the list if requested
 
-- Format the list if requested
if options.formatted then list = mHatnote.formatPages(unpack(list)) end
+
if options.formatted then
 +
list = mFormatLink.formatPages(
 +
{categorizeMissing = mHatnote.missingTargetCat}, list
 +
)
 +
end
 
-- Set the separator; if any item contains it, use the alternate separator
 
-- Set the separator; if any item contains it, use the alternate separator
 
local separator = options.separator
 
local separator = options.separator
--searches display text only
  −
local 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
 
for k, v in pairs(list) do
 
if searchDisp(v, separator) then
 
if searchDisp(v, separator) then
Line 65: Line 73:     
--DRY function
 
--DRY function
function conjList (conj, list, fmt)
+
function p.conjList (conj, list, fmt)
 
return stringifyList(list, {conjunction = conj, formatted = fmt})
 
return stringifyList(list, {conjunction = conj, formatted = fmt})
 
end
 
end
    
-- Stringifies lists with "and" or "or"
 
-- Stringifies lists with "and" or "or"
function p.andList (...) return conjList("and", ...) end
+
function p.andList (...) return p.conjList("and", ...) end
function p.orList (...) return conjList("or", ...) end
+
function p.orList (...) return p.conjList("or", ...) end
    
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------
Line 89: Line 97:     
--Collapses duplicate punctuation
 
--Collapses duplicate punctuation
function punctuationCollapse (text)
+
local function punctuationCollapse (text)
 
local replacements = {
 
local replacements = {
 
["%.%.$"] = ".",
 
["%.%.$"] = ".",
Line 171: Line 179:  
for k, v in pairs(forSeeTable) do
 
for k, v in pairs(forSeeTable) do
 
local useStr = v.use or options.otherText
 
local useStr = v.use or options.otherText
local pagesStr = p.andList(v.pages, true) or mHatnote._formatLink{link = mHatnote.disambiguate(options.title)}
+
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)
 
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)
 
forSeeStr = punctuationCollapse(forSeeStr)
 
forSeeStr = punctuationCollapse(forSeeStr)

Navigation menu