Module:Section link: Difference between revisions

    m>Mr. Stradivarius
    (fix error placement and tweak default conjunction)
    m>Mr. Stradivarius
    (actually, just make the sections optional)
    Line 15: Line 15:
    checkType('_main', 1, page, 'string', true)
    checkType('_main', 1, page, 'string', true)
    checkType('_main', 3, options, 'table', true)
    checkType('_main', 3, options, 'table', true)
    if type(sections) == 'string' then
    if sections == nil then
    sections = {}
    elseif type(sections) == 'string' then
    sections = {sections}
    sections = {sections}
    elseif type(sections) ~= 'table' then
    elseif type(sections) ~= 'table' then
    error(string.format(
    error(string.format(
    "type error in argument #2 to '_main' (string or table expected, got %s)",
    "type error in argument #2 to '_main' " ..
    "(string, table or nil expected, got %s)",
    type(sections)
    type(sections)
    ), 2)
    ), 2)
    Line 28: Line 31:
    -- Make the link(s).
    -- Make the link(s).
    local isShowingPage = not options.nopage
    local isShowingPage = not options.nopage
    if #sections == 1 then
    if #sections <= 1 then
    local linkPage = page or ''
    local linkPage = page or ''
    local section = sections[1] or 'Notes'
    local section = sections[1] or 'Notes'
    Line 38: Line 41:
    return makeSectionLink(linkPage, section, display)
    return makeSectionLink(linkPage, section, display)
    else
    else
    -- Multiple sections. First, validate the sections table.
    -- Multiple sections. First, make a list of the links to display.
    if #sections < 1 then
    error('at least one section must be specified', 2)
    end
     
    -- Make the list of links.
    local ret = {}
    local ret = {}
    for i, section in ipairs(sections) do
    for i, section in ipairs(sections) do