Module:Numlinks: Difference between revisions

Ganaram inukshuk (talk | contribs)
simplify args
Ganaram inukshuk (talk | contribs)
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 "&nbsp;") .. 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["Link Text"] or args["Page Text"]
local link_text  = args["Link Text"]
local min_1      = args["Min 1"] ~= nil and args["Min 1"] or 1
local min_num    = args["Min Num"] ~= nil and args["Min Num"] or 1
local min_2      = args["Min 2"] ~= nil and args["Min 2"] or 1
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