<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.limswiki.org/index.php?action=history&amp;feed=atom&amp;title=Module%3APagelist</id>
	<title>Module:Pagelist - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.limswiki.org/index.php?action=history&amp;feed=atom&amp;title=Module%3APagelist"/>
	<link rel="alternate" type="text/html" href="https://www.limswiki.org/index.php?title=Module:Pagelist&amp;action=history"/>
	<updated>2026-04-05T20:59:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://www.limswiki.org/index.php?title=Module:Pagelist&amp;diff=13256&amp;oldid=prev</id>
		<title>Shawndouglas: Created as needed.</title>
		<link rel="alternate" type="text/html" href="https://www.limswiki.org/index.php?title=Module:Pagelist&amp;diff=13256&amp;oldid=prev"/>
		<updated>2013-10-31T17:31:26Z</updated>

		<summary type="html">&lt;p&gt;Created as needed.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Get the page object. This will return the page object for the page&lt;br /&gt;
-- specified, or nil if there are errors in the title, if the&lt;br /&gt;
-- expensive function count has been exceeded, or if the page was not&lt;br /&gt;
-- specified.&lt;br /&gt;
function getPageObject( page )&lt;br /&gt;
    if not page then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
    -- Get the page object, passing the function through pcall &lt;br /&gt;
    -- in case we are over the expensive function count limit.&lt;br /&gt;
    local noError, pageObject = pcall(mw.title.new, page)&lt;br /&gt;
    if not noError then&lt;br /&gt;
        return nil&lt;br /&gt;
    else&lt;br /&gt;
        return pageObject&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Process the separator parameter.&lt;br /&gt;
local function getSeparator( sep )&lt;br /&gt;
    if sep and type(sep) == 'string' then&lt;br /&gt;
        if sep == 'dot' &lt;br /&gt;
            or sep =='pipe'&lt;br /&gt;
            or sep == 'comma'&lt;br /&gt;
            or sep == 'tpt-languages' then&lt;br /&gt;
            return mw.message.new( sep .. '-separator' ):plain()&lt;br /&gt;
        else&lt;br /&gt;
            return sep&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function generateLink( page, nspace, delim, edelim )&lt;br /&gt;
    if not page then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
    local pagename = getPageObject( page )&lt;br /&gt;
    if not pagename then&lt;br /&gt;
        -- Default to the args we were passed if our page&lt;br /&gt;
        -- object was nil.&lt;br /&gt;
        pagename = page&lt;br /&gt;
    else&lt;br /&gt;
        pagename = pagename.text&lt;br /&gt;
    end&lt;br /&gt;
    delim = delim or ''&lt;br /&gt;
    edelim = edelim or delim&lt;br /&gt;
    nspace = nspace or mw.title.getCurrentTitle().nsText&lt;br /&gt;
    return mw.ustring.format( &lt;br /&gt;
        '%s[[:%s:%s|%s]]%s',&lt;br /&gt;
        delim, nspace, pagename, page, edelim&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _main( args )&lt;br /&gt;
    local t = {}&lt;br /&gt;
    local separator = getSeparator( args.separator )&lt;br /&gt;
    local conjunction = getSeparator( args.conjunction )&lt;br /&gt;
    for i, v in ipairs( args ) do&lt;br /&gt;
        table.insert( t, generateLink(&lt;br /&gt;
            v, args.nspace, args.delim, args.edelim&lt;br /&gt;
        ) )&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.listToText( t, separator, conjunction )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main( frame )&lt;br /&gt;
    local origArgs&lt;br /&gt;
    if frame == mw.getCurrentFrame() then&lt;br /&gt;
        -- We're being called via #invoke. If the invoking template passed any arguments,&lt;br /&gt;
        -- use them. Otherwise, use the arguments that were passed into the template.&lt;br /&gt;
        origArgs = frame:getParent().args&lt;br /&gt;
        for k, v in pairs( frame.args ) do&lt;br /&gt;
            origArgs = frame.args&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    else        &lt;br /&gt;
        -- We're being called from another module or from the debug console, so assume&lt;br /&gt;
        -- the arguments are passed in directly.&lt;br /&gt;
        origArgs = frame&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Process integer args. Allow for explicit positional arguments that are&lt;br /&gt;
    -- specified out of order, e.g. {{br separated entries|3=entry3}}.&lt;br /&gt;
    -- After processing, the args can be accessed accurately from ipairs.&lt;br /&gt;
    local args = {}&lt;br /&gt;
    for k, v in pairs( origArgs ) do&lt;br /&gt;
        if type( k ) == 'number' and &lt;br /&gt;
            k &amp;gt;= 1 and&lt;br /&gt;
            math.floor( k ) == k and&lt;br /&gt;
            mw.ustring.match( v, '%S' ) then -- Remove blank or whitespace values.&lt;br /&gt;
            table.insert( args, k )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    table.sort( args )&lt;br /&gt;
    for i, v in ipairs( args ) do&lt;br /&gt;
        args[ i ] = origArgs[ v ]&lt;br /&gt;
        -- Trim whitespace.&lt;br /&gt;
        if type( args[ i ] ) == 'string' then&lt;br /&gt;
            args[ i ] = mw.text.trim( args[ i ] )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Get old named args. We don't need to remove blank values&lt;br /&gt;
    -- as for the nspace and edelim parameters the behaviour is different&lt;br /&gt;
    -- depending on whether the parameters are blank or absent, and for&lt;br /&gt;
    -- the delim parameter the default should be the blank string anyway.&lt;br /&gt;
    args.delim = origArgs.delim&lt;br /&gt;
    args.edelim = origArgs.edelim&lt;br /&gt;
    args.nspace = origArgs.nspace&lt;br /&gt;
    &lt;br /&gt;
    -- Get new named args, &amp;quot;separator&amp;quot; and &amp;quot;conjunction&amp;quot;, and strip blank values.&lt;br /&gt;
    if origArgs.separator and origArgs.separator ~= '' then&lt;br /&gt;
        args.separator = origArgs.separator&lt;br /&gt;
    end&lt;br /&gt;
    if origArgs.conjunction and origArgs.conjunction ~= '' then&lt;br /&gt;
        args.conjunction = origArgs.conjunction&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    return _main( args )&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Shawndouglas</name></author>
	</entry>
</feed>