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 |
||
} |
} |
||
− | |||
⚫ | |||
⚫ | |||
− | return string.find( |
||
⚫ | |||
− | ) |
||
⚫ | |||
-- Stringifies a list generically; probably shouldn't be used directly |
-- Stringifies a list generically; probably shouldn't be used directly |
||
− | + | 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 |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
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 |
+ | 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 |
+ | function p.andList (...) return conjList("and", ...) end |
− | function p.orList (...) return |
+ | function p.orList (...) return conjList("or", ...) end |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
Line 97: | Line 89: | ||
--Collapses duplicate punctuation |
--Collapses duplicate punctuation |
||
− | + | 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 |
||
− | mFormatLink._formatLink{ |
||
− | categorizeMissing = mHatnote.missingTargetCat, |
||
⚫ | |||
− | } |
||
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr) |
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr) |
||
forSeeStr = punctuationCollapse(forSeeStr) |
forSeeStr = punctuationCollapse(forSeeStr) |