Jump to content

Module:Anchor/sandbox: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Removing self-attribution of algorithm
sync
Line 1: Line 1:
-- This module implements {{anchor}}.
-- This module implements {{anchor}}.

local getArgs = require('Module:Arguments').getArgs
local tableTools = require('Module:TableTools')


local p = {}
local p = {}


function p.main(frame)
function p.main(frame)
-- Get the positional arguments from #invoke, remove any nil values,
-- Algorithm:
-- and pass them to p._main.
-- Step 1. Create a local variable to store the anchors,
local args = getArgs(frame)
-- initialised to the empty string.
local argArray = tableTools.compressSparseArray(args)
local ret = ""
return p._main(unpack(argArray))
-- Step 2. Create a iterator variable, initialised to 1.
end
local i = 1

-- Step 3. While there exists a positional argument referenced by
function p._main(...)
-- the iterator variable, do the following:
-- Generate the list of anchors.
while not (frame.args[i] == nil)
local anchors = {...}
do
local ret = {}
-- (a) Add a empty span whose id is the value of the argument
for _, anchor in ipairs(anchors) do
-- to the local variable storing the anchors;
ret = ret .. '<span id="' .. frame.args[i] .. '"></span>'
ret[#ret + 1] = '<span class="anchor" id="' .. anchor .. '"></span>'
end
-- (b) Increment the iterator variable.
return table.concat(ret)
i = i + 1
end
-- Step 4. Return the value of the local variable storing the anchors.
return ret
end
end



Revision as of 18:48, 2 February 2023

-- This module implements {{anchor}}.

local getArgs = require('Module:Arguments').getArgs
local tableTools = require('Module:TableTools')

local p = {}

function p.main(frame)
	-- Get the positional arguments from #invoke, remove any nil values,
	-- and pass them to p._main.
	local args = getArgs(frame)
	local argArray = tableTools.compressSparseArray(args)
	return p._main(unpack(argArray))
end

function p._main(...)
	-- Generate the list of anchors.
	local anchors = {...}
	local ret = {}
	for _, anchor in ipairs(anchors) do
		ret[#ret + 1] = '<span class="anchor" id="' .. anchor .. '"></span>'
	end
	return table.concat(ret)
end

return p