Module:Section link: Difference between revisions

    m>Andy M. Wang
    (changing to non-breaking nbsp per lengthy talk discussion with Edokter, SMcCandlish, LLarson, among others about § not wrapping)
    m>Ahecht
    (implement display= parameter)
    Line 11: Line 11:
    end
    end


    function p._main(page, sections, options, title)
    local function normalizeTitle(title)
    title = mw.ustring.gsub(title,"'","")
    title = mw.ustring.gsub(title,'"','')
    title = mw.ustring.gsub(title,"%b<>","")
    return mw.title.new(title).prefixedText
    end
     
    function p._main(page, sections, options, title, displaytitle)
    -- Validate input.
    -- Validate input.
    checkType('_main', 1, page, 'string', true)
    checkType('_main', 1, page, 'string', true)
    Line 43: Line 50:
    if isShowingPage then
    if isShowingPage then
    page = page or title.prefixedText
    page = page or title.prefixedText
    display = page .. ' ' .. display
    if displaytitle then
    if normalizeTitle(displaytitle) == normalizeTitle(page) then
    display = displaytitle .. ' ' .. display
    else
    error(string.format(
    'Display title "%s" was ignored since it is ' ..
    "not equivalent to the page's actual title",
    displaytitle
    ), 0)
    end
    else
    display = page .. ' ' .. display
    end
    end
    end
    return makeSectionLink(linkPage, section, display)
    return makeSectionLink(linkPage, section, display)
    Line 89: Line 108:


    -- Sort the arguments.
    -- Sort the arguments.
    local page
    local page, displaytitle
    local sections, options = {}, {}
    local sections, options = {}, {}
    for k, v in pairs(args) do
    for k, v in pairs(args) do
    Line 98: Line 117:
    elseif type(k) == 'number' then
    elseif type(k) == 'number' then
    sections[k] = v
    sections[k] = v
    elseif k == 'display' then
    displaytitle = v
    else
    else
    options[k] = v
    options[k] = v
    Line 117: Line 138:
    sections = compressArray(sections)
    sections = compressArray(sections)


    return p._main(page, sections, options)
    return p._main(page, sections, options, nil, displaytitle)
    end
    end


    return p
    return p