Module:Hatnote list: Difference between revisions
From AlternateWiki
Content deleted Content added
Undid revision 1062166786 by Matthiaspaul (talk); should be fixed now, and if not, please ping me with examples as I couldn't reproduce the original error |
m 1 revision imported |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 96: | Line 96: | ||
} |
} |
||
--Collapses duplicate punctuation |
--Collapses duplicate punctuation at end of string, ignoring italics and links |
||
local function punctuationCollapse (text) |
local function punctuationCollapse (text) |
||
return text:match("[.?!]('?)%1(%]?)%2%.$") and text:sub(1, -2) or text |
|||
local replacements = { |
|||
["%.%.$"] = ".", |
|||
["%?%.$"] = "?", |
|||
["%!%.$"] = "!", |
|||
["%.%]%]%.$"] = ".]]", |
|||
["%?%]%]%.$"] = "?]]", |
|||
["%!%]%]%.$"] = "!]]" |
|||
} |
|||
for k, v in pairs(replacements) do text = string.gsub(text, k, v) end |
|||
return text |
|||
end |
end |
||
Line 150: | Line 141: | ||
-- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3} |
-- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3} |
||
while args[i + 2] == options.andKeyword do |
while args[i + 2] == options.andKeyword do |
||
if args[i + 3] then |
if args[i + 3] then |
||
table.insert(forRow.pages, args[i + 3]) |
table.insert(forRow.pages, args[i + 3]) |
||
end |
end |
||
Line 161: | Line 152: | ||
table.insert(forTable, forRow) |
table.insert(forTable, forRow) |
||
until terminated or i > maxArg |
until terminated or i > maxArg |
||
return forTable |
return forTable |
||
end |
end |