Module:Numlinks: Difference between revisions
simplify args |
No edit summary |
||
| Line 2: | Line 2: | ||
local ordinal = require("Module:Ordinal")._ordinal | local ordinal = require("Module:Ordinal")._ordinal | ||
local p = {} | |||
function p.side_numlinks(num_links, curr_num, min_num, page_text, link_text, is_ordinal) | |||
local num_links = num_links or 1 | |||
local curr_num = curr_num | |||
local min_1 = min_1 or 1 | |||
local page_text = page_text or { "PRE-TEXT", "POST-TEXT" } | |||
local link_text = link_text or nil | |||
local is_ordinal = is_ordinal ~= nil and is_ordinal or false | |||
-- Preprocess page and link text | |||
if #page_text == 1 then | |||
page_text = { "", page_text[1] } | |||
end | |||
if link_text ~= nil then | |||
if #link_text == 1 then | |||
link_text = { "", link_text[1] } | |||
end | |||
end | |||
-- Produce next links | |||
local next_links = "" | |||
for i = 1, num_links do | |||
local link = "" | |||
local num = is_ordinal and ordinal(curr_num + i) or string.format("%s", curr_num + i) | |||
if link_text == nil then | |||
-- Link text is the same as the page text | |||
link = string.format("[[%s%s%s]]", page_text[1], num, page_text[2]) | |||
else | |||
-- Link and page text are different | |||
link = string.format("[[%s%s%s|%s%s%s]]", page_text[1], num, page_text[2], link_text[1], num, link_text[2]) | |||
end | |||
next_links = next_links .. link .. (i == num_links and "" or " ") | |||
end | |||
-- Produce prev links | |||
local prev_links = "" | |||
for i = 1, num_links do | |||
local link = "" | |||
local num = is_ordinal and ordinal(curr_num - i) or string.format("%s", curr_num - i) | |||
if curr_num - i >= min_num then | |||
if link_text == nil then | |||
-- Link text is the same as the page text | |||
link = string.format("[[%s%s%s]]", page_text[1], num, page_text[2]) | |||
else | |||
-- Link and page text are different | |||
link = string.format("[[%s%s%s|%s%s%s]]", page_text[1], num, page_text[2], link_text[1], num, link_text[2]) | |||
end | |||
prev_links = (curr_num - i <= min_num and "" or " ") .. link .. prev_links | |||
end | |||
end | |||
return { prev_links, next_links } | |||
end | |||
function p.eight_numlinks(curr_num, min_num, page_text, link_text) | |||
end | |||
-- Generate a table of previous and next links for numbered pages, with support | -- Generate a table of previous and next links for numbered pages, with support | ||
| Line 29: | Line 88: | ||
local is_ordinal = args["Is Ordinal"] ~= nil and args["Is Ordinal"] or false | local is_ordinal = args["Is Ordinal"] ~= nil and args["Is Ordinal"] or false | ||
local page_text = args["Page Text"] | local page_text = args["Page Text"] | ||
local link_text = args["Link Text"] ~= nil and args[" | local link_text = args["Link Text"] | ||
local | local min_num = args["Min Num"] ~= nil and args["Min Num"] or 1 | ||
local | local curr_num_1 = args["Current Num 1"] | ||
local curr_num_2 = args["Current Num 2"] | |||
-- Parse link config | |||
local num_links = 0 | |||
local is_side = false | |||
local is_eight = false | |||
if link_config == "Side-1" then | |||
-- One set of prev/next links | |||
local num_links = 1 | |||
local is_side = true | |||
elseif link_config == "Side-2" then | |||
-- Two sets of prev/next links | |||
local num_links = 2 | |||
local is_side = true | |||
elseif link_config == "Side-3" then | |||
-- Three sets of prev/next links | |||
local num_links = 3 | |||
local is_side = true | |||
elseif link_config == "Side-4" then | |||
-- Four sets of prev/next links | |||
local num_links = 4 | |||
local is_side = true | |||
elseif link_config == "Side-5" then | |||
-- Five sets of prev/next links | |||
local num_links = 5 | |||
local is_side = true | |||
elseif link_config == "8-Link" then | |||
-- Prev/next links for two changing values | |||
local is_eight = true | |||
else | |||
-- One set of prev/next links as the default | |||
local num_links = 1 | |||
local is_side = true | |||
end | |||
-- Create numbered navigation links | |||
local navigation_links = {} | |||
if is_side then | |||
navigation_links = p.side_numlinks(num_links, curr_num, min_num, page_text, link_text, is_ordinal) | |||
end | |||
return navigation_links | |||
end | end | ||
return p | |||