Editing Module:Hatnote list

From Georgia Tech Student Wiki

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
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 30: Line 29:
 
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
local function stringifyList(list, options)
+
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 50: Line 42:
 
local s = options.space
 
local s = options.space
 
-- Format the list if requested
 
-- Format the list if requested
if options.formatted then
+
if options.formatted then list = mHatnote.formatPages(unpack(list)) end
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 73: Line 65:
   
 
--DRY function
 
--DRY function
function p.conjList (conj, list, fmt)
+
function 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 p.conjList("and", ...) end
+
function p.andList (...) return conjList("and", ...) end
function p.orList (...) return p.conjList("or", ...) end
+
function p.orList (...) return conjList("or", ...) end
   
 
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------
Line 97: Line 89:
   
 
--Collapses duplicate punctuation
 
--Collapses duplicate punctuation
local function punctuationCollapse (text)
+
function punctuationCollapse (text)
 
local replacements = {
 
local replacements = {
 
["%.%.$"] = ".",
 
["%.%.$"] = ".",
Line 179: Line 171:
 
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)

Please note that all contributions to Georgia Tech Student Wiki are considered to be released under the Creative Commons Attribution-ShareAlike (see GT Student Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)

Template used on this page: