请输入您要查询的百科知识:

 

词条 Module:RDIndex
释义

local p={} -- ultimate planned purpose is to create table rows of Refdesk questions, type, date, answerer including wikilinks in collaboration with a big template

function p.main(frame,input,label,desk,year,month,day,arcpage)

    local args=frame.args    local parent=frame:getParent() or {}    local pargs=parent.args or {}    input=input or args.input or pargs.input    desk=desk or args.desk or pargs.desk    local label=label or args.label or pargs.label    if not label then label=desk or "unlabelled" end    local date=args.date or pargs.date or "undated"    if year and month and day then date="20"..year..": "..month.." "..day end    arcpage=arcpage or args.arcpage or pargs.arcpage or nil    local cat=args.cat or pargs.cat or "yes"    if cat=="no" then cat = nil end    local output="RDIndex error: no section headings found"
    local cursor, next_cursor, questioner, users, user_table, last_user;    local input_length = mw.ustring.len( input );        local breakpoints = {};    local cut, item    for cut, item in mw.ustring.gmatch( input, "\()==+(.-)==+%s+" ) do                        table.insert( breakpoints, cut );                table.insert( breakpoints, item );            end             index = 1;    output = '';    repeat        cursor = tonumber( breakpoints[index] );        title = breakpoints[index + 1];                     if cursor == nil then             break;        end        next_cursor = tonumber( breakpoints[index+2] ) or input_length;              text = mw.ustring.sub(input,cursor,next_cursor-1)        tt = mw.ustring.match(title,"[=%s]+(.-)[=%s]+$")        if tt then             title=tt         else            tt = mw.ustring.match(title,"UNIQ.-QINU.(.+)")            if tt then                 title=tt             end        end        local tcat=""        if cat then tcat = (mw.ustring.match(text,"{{[Rr][Dd]cat%s*|%s*(.-)}}") or "—") end        tcat=mw.ustring.match(tcat,"^(^|*)|.*$") or tcat        text = mw.ustring.gsub(text, "%[%[Special:Contributions/", "[[User:")        questioner = mw.ustring.gsub(mw.ustring.match(text,"%[%[User:(.-)[|%]]") or "","_"," ")        user_table = {}        for tt in mw.ustring.gmatch(text,"%[%[User:(.-)[|%]]" ) do            tt = mw.ustring.gsub(tt,"_"," ")            table.insert( user_table, tt );        end        table.sort( user_table );                last_user = ''        users = '';        for index, tt in pairs( user_table ) do            if tt ~= last_user and tt ~= questioner then                users = table.concat( {users, "", tt, "", " "} );            end            last_user = tt;        end                users = "" .. questioner .. "" .. " " .. users        title = mw.ustring.gsub( title, '%[%[.-|(.-)%]%]', '%1' );        title = mw.ustring.gsub( title, '%[', '' );        title = mw.ustring.gsub( title, '%]', '' );        title = mw.ustring.gsub( title, '%b<>', '' );                if arcpage then             title= table.concat( {"", title,  ""} );        else             title= title or ""         end        if (cat=="yes" or cat==tcat) then output = table.concat( {output, "\|-\|", title, "\|", next_cursor-cursor, "\|", label, "\|", tcat, "\|", date, "\|", users} ) end
        index = index + 2;    until next_cursor == input_length      return output

end

function p.month(frame)

    local args=frame.args    local parent=frame:getParent() or {}    local pargs=parent.args or {}        local title    if not input then title=mw.title.getCurrentTitle() end        local year=args.year or pargs.year    local month=args.month or pargs.month    local desk=args.desk or pargs.desk    local label=args.label or pargs.label or desk    local nowiki=args.nowiki or pargs.nowiki    local desks={'Computing','Science','Mathematics','Humanities','Language','Entertainment','Miscellaneous'}    local months={'January','February','March','April','May','June','July','August','September','October','November','December'}    local days=31    local output=""    if not (desk and year and month) then -- I want to be able to plop this template empty of parameters into an archive page, even if it moves, as long as its name contains the data!        local title=mw.title.getCurrentTitle()        local page=title.fullText        if not desk then            for x=1,#desks do                if mw.ustring.match(page,desks[x]) then desk=desks[x]; break end            end        end        year=year or mw.ustring.match(page,"20(%d%d)") -- This has a Y2.1k bug.  Pity.        if not month then            for x=1,12 do                if mw.ustring.match(page,months[x]) then month=months[x]; break end            end        end    end    year=tonumber(year)    if month=='September' or month=='April' or month=='June' or month=='November' then days=30 end    if month=='February' then        days=28        if year/4==math.floor(year/4) then days=29 end    end    for day=1,days do        page='Wikipedia:Reference desk/Archives/'..desk..'/20'..year..' '..month..' '..day        title=mw.title.new(page)        if title then            local input=title.getContent(title)            if input then output=output..p.main(frame,input,label,desk,year,month,day,page) end        end    end    output='{| class="wikitable sortable"\!question\!length\!RefDesk\!Category\!Date\!Editors'..output..'\|}'    if nowiki then       return frame:preprocess("
"..output.."
") else return output end

end

return p

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/28 7:18:13