Module:Navbox: Difference between revisions

497 bytes removed ,  9 years ago
various fixes from sandbox
m>Jackmcbarn
(don't require the wrapper template)
m>Jackmcbarn
(various fixes from sandbox)
Line 7: Line 7:
local HtmlBuilder = require('Module:HtmlBuilder')
local HtmlBuilder = require('Module:HtmlBuilder')
local navbar = require('Module:Navbar')._navbar
local navbar = require('Module:Navbar')._navbar
local getArgs -- lazily initialized


local args
local args
local frame
local tableRowAdded = false
local tableRowAdded = false
local border
local border
Line 282: Line 282:


local function renderTrackingCategories(builder)
local function renderTrackingCategories(builder)
     local frame = mw.getCurrentFrame()
     local title = mw.title.getCurrentTitle()
   
     if title.namespace ~= 10 then return end -- not in template space
     if not frame then return end
     local subpage = title.subpageText
   
    local s = frame:preprocess('{{#ifeq:{{NAMESPACE}}|{{ns:10}}|1|0}}{{SUBPAGENAME}}')
    if mw.ustring.sub(s, 1, 1) == '0' then return end -- not in template space
     local subpage = mw.ustring.lower(mw.ustring.sub(s, 2))
     if subpage == 'doc' or subpage == 'sandbox' or subpage == 'testcases' then return end
     if subpage == 'doc' or subpage == 'sandbox' or subpage == 'testcases' then return end
      
      
Line 382: Line 378:
   
   
function p.navbox(frame)
function p.navbox(frame)
     -- ParserFunctions considers the empty string to be false, so to preserve the previous
     if not getArgs then
    -- behavior of {{navbox}}, change any empty arguments to nil, so Lua will consider
    getArgs = require('Module:Arguments').getArgs
    -- them false too.
    end
    local args = {}
     args = getArgs(frame, {wrappers = 'Template:Navbox'})
    local parentTitle = frame:getParent():getTitle()
     local frame_args = (parentTitle == 'Template:Navbox' or parentTitle == 'Template:Navbox/sandbox') and frame:getParent().args or frame.args;


     -- Out of order parsing bug.
     -- Read the arguments in the order they'll be output in, to make references number in the right order.
     local temp;
     local _
     temp = frame_args.title;
     _ = args.title
     temp = frame_args.above;
     _ = args.above
     for i = 1, 20 do
     for i = 1, 20 do
         temp = frame_args["group" .. tostring(i)];
         _ = args["group" .. tostring(i)]
         temp = frame_args["list" .. tostring(i)];
         _ = args["list" .. tostring(i)]
     end     
     end     
     temp = frame_args.below;
     _ = args.below
   
 
    for k, v in pairs(frame_args) do
        if v ~= '' then
            args[k] = v
        end
    end
     return p._navbox(args)
     return p._navbox(args)
end
end
   
   
return p
return p
Anonymous user