Module:minitoc: difference between revisions

From Wiktionary, the free dictionary
Jump to navigation Jump to search
Content deleted Content added
ok, don't think this makes a difference
More robust solution.
Line 1: Line 1:
local compress_sparse_array = require("Module:table").compressSparseArray
local compress_sparse_array = require("Module:table").compressSparseArray
local concat = table.concat
local concat = table.concat
local insert = table.insert


local page_L2s = mw.loadData("Module:headword/data").page.page_L2s
local page_L2s = mw.loadData("Module:headword/data").page.page_L2s
Line 6: Line 7:
local export = {}
local export = {}


function export.main(frame)
function export.main()
local L2s = compress_sparse_array(page_L2s)
local L2s = compress_sparse_array(page_L2s)
local main, L2s_len, pre = {}, #L2s
local L2_links = {}
for i = 1, #L2s do
for i = 1, L2s_len do
local L2 = L2s[i]
local L2, t = L2s[i]
if L2 == "Translingual" or L2 == "English" then
L2_links[i] = "<span style=\"white-space:nowrap;\">[[#" .. L2 .. "|" .. L2 .. "]]</span>"
pre = pre or {}
t = pre
else
t = main
end
insert(t, "<span style=\"white-space:nowrap;\">[[#" .. L2 .. "|" .. L2 .. "]]</span>")
end
end

return "<div class=\"NavFrame\" style=\"max-width:40em;margin:0.5em 0\" data-minitoc-length=\"" .. L2s_len .. "\"><div class=\"NavHead\" style=\"background:#eee;padding: 0.25em 0.5em\">Contents ([[#catlinks|categories]])</div><div class=\"NavContent\" style=\"text-align:center;padding:0.5em\">" .. (pre and concat(pre, " • ") .. "<hr>" or "") .. concat(main, " • ") .. "</div></div><div data-toc-length=\"" .. L2s_len .. "\">__TOC__</div>"
--Separate Translingual and English into a separate row.
local tocContent
if #L2s > 2 and (L2s[2] == "Translingual" or L2s[2] == "English") then
tocContent = L2_links[1] .. " • " .. L2_links[2] .. "<hr>" .. concat(L2_links, " • ", 3)
elseif #L2s > 1 and (L2s[1] == "Translingual" or L2s[1] == "English") then
tocContent = L2_links[1] .. "<hr>" .. concat(L2_links, " • ", 2)
else
tocContent = concat(L2_links, " • ")
end
return "<div class=\"NavFrame\" style=\"max-width:40em;margin:0.5em 0\" data-minitoc-length=\"" .. #L2s .. "\"><div class=\"NavHead\" style=\"background:#eee;padding: 0.25em 0.5em\">Contents ([[#catlinks|categories]])</div><div class=\"NavContent\" style=\"text-align:center;padding:0.5em\">" .. tocContent .. "</div></div><div data-toc-length=\"" .. #L2s .. "\">__TOC__</div>"
end
end



Revision as of 17:04, 15 May 2024

This module provides the backend for {{minitoc}}.


local compress_sparse_array = require("Module:table").compressSparseArray
local concat = table.concat
local insert = table.insert

local page_L2s = mw.loadData("Module:headword/data").page.page_L2s

local export = {}

function export.main()
	local L2s = compress_sparse_array(page_L2s)
	local main, L2s_len, pre = {}, #L2s
	for i = 1, L2s_len do
		local L2, t = L2s[i]
		if L2 == "Translingual" or L2 == "English" then
			pre = pre or {}
			t = pre
		else
			t = main
		end
		insert(t, "<span style=\"white-space:nowrap;\">[[#" .. L2 .. "|" .. L2 .. "]]</span>")
	end
	
	return "<div class=\"NavFrame\" style=\"max-width:40em;margin:0.5em 0\" data-minitoc-length=\"" .. L2s_len .. "\"><div class=\"NavHead\" style=\"background:#eee;padding: 0.25em 0.5em\">Contents ([[#catlinks|categories]])</div><div class=\"NavContent\" style=\"text-align:center;padding:0.5em\">" .. (pre and concat(pre, " • ") .. "<hr>" or "") .. concat(main, " • ") .. "</div></div><div data-toc-length=\"" .. L2s_len .. "\">__TOC__</div>"
end

return export