Module:Sandbox/Dat Hack3r: Difference between revisions

From Our World of Text Wiki
Jump to navigation Jump to search
(Fixed "string expected, got table" when using a title object.)
(Fixed overly-limited scope of "curr_num".)
Line 7: Line 7:
title_format = title_format or string.gsub(title.text, '%d+', '%%d', 1)
title_format = title_format or string.gsub(title.text, '%d+', '%%d', 1)
text_format = text_format or '%d'
text_format = text_format or '%d'
local curr_num
if title_format then
if title_format then
local curr_num = string.match(title.text, string.gsub(title_format, "%%d", "(%%d+)"))
curr_num = tonumber(string.match(title.text, string.gsub(title_format, "%%d", "(%%d+)")))
else
else
local curr_num = string.match(title.text, '%d+')
curr_num = tonumber(string.match(title.text, '%d+'))
end
end



Revision as of 17:11, 16 December 2024

Documentation for this module may be created at Module:Sandbox/Dat Hack3r/doc

local p = {}

local horizontal = require('Module:List').horizontal
local mw_error = require('Module:Error').error

function p._main(s_start, s_end, increment, title, title_format, text_format)
	title_format = title_format or string.gsub(title.text, '%d+', '%%d', 1)
	text_format = text_format or '%d'
	local curr_num
	if title_format then
		curr_num = tonumber(string.match(title.text, string.gsub(title_format, "%%d", "(%%d+)")))
	else
		curr_num = tonumber(string.match(title.text, '%d+'))
	end

	local navlist = {}
	for i=curr_num - 5,curr_num + 5 do
		if i < s_start then
			table.insert(navlist, '<span style="visibility: hidden;">'..i..'</span>')
		else
			if mw.title.new(string.format(title_format, i), title.namespace).exists then
				table.insert(navlist, '[['..title.namespace..string.format(title_format, i)..'|'..string.format(text_format, i)..']]')
			else
				table.insert(navlist, '<span class="seriesNavigation-item-inactive">'..string.format(text_format, i)..'</span>')
			end
		end
	end

	local templatestyles = mw.getCurrentFrame():extensionTag{
		name = "templatestyles",
		args = {src = 'Module:Series navigation/styles.css'}
	}
	return templatestyles..'<div class="toccolours seriesNavigation" role="navigation" aria-label="Range">'..horizontal(navlist)..'</div>'
end

function p.main(frame)
	local s_start      = frame:getParent().args['start'] or 1
	local s_end        = frame:getParent().args['end']
	local increment    = frame:getParent().args['increment'] or 1
	local title        = mw.title.getCurrentTitle()
	local title_format = frame:getParent().args['title_format']
	local text_format  = frame:getParent().args['text_format']
	return p._main(s_start, s_end, increment, title, title_format, text_format)
end

return p