Module:Anchor/sandbox: Difference between revisions
Appearance
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) |
|||
⚫ | |||
return p._main(unpack(argArray)) |
|||
-- Step 2. Create a iterator variable, initialised to 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) |
|||
⚫ | |||
do |
|||
⚫ | |||
-- (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 + 1] = '<span class="anchor" id="' .. anchor .. '"></span>' |
|||
end |
|||
-- (b) Increment the iterator variable. |
|||
return table.concat(ret) |
|||
i = i + 1 |
|||
⚫ | |||
-- 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 is the module sandbox page for Module:Anchor (diff). See also the companion subpage for test cases (run). |
![]() | This Lua module is used in system messages, and on approximately 87,000 pages. Changes to it can cause immediate changes to the Wikipedia user interface. To avoid major disruption, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them. |
![]() | This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
![]() | This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
![]() | This module depends on the following other modules: |
This module implements {{anchor}}. Please see the Template:Anchor/doc page for documentation.
-- 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