モジュール:CheckMultipleVoting

モジュールの解説[作成]
local p = {}

--[[投票所の二重投票を判定する

    {{#invoke:CheckMultipleVoting|CheckMultipleVoting|page={{Wikipedia:メインページ新着投票所/新しい項目候補}}|section= 「新しい項目」候補と投票所 |level=3|line=1}}
]]

function p.CheckMultipleVoting(frame)
    local page = frame.args.page
    local section = frame.args.section
    local level = frame.args.level - 0
    local line = frame.args.line - 0
    local text = ""

    local tbl0 = mw.text.split(page, section)

    local key = "\n"
    for i = 1, level do
        key = key .. "="
    end
    local tbl1 = mw.text.split(tbl0[2], key)

    for i = 1, #tbl1 do
        if i > line then
            local tbl2 = mw.text.split(tbl1[i] .. '\n', '\n')

            for j = 2, #tbl2 - 2 do
                for k = j + 1, #tbl2 - 1 do

                    local  textA = tbl2[j]:gsub("^#[%s ]*%p%p[%s ]*(.-)[%s ]*|.*", "%1")
                    local  textB = tbl2[k]:gsub("^#[%s ]*%p%p[%s ]*(.-)[%s ]*|.*", "%1")
                    if textA == textB and textA ~= "" then
                        text = text .. "<br />\n<span style='color:red'>二重投票?</span> " .. tbl2[1]:gsub("==.*", "")
                    end
                end
            end
        end
    end
    return text
end
 
return p