无编辑摘要
imported>=海豚= 无编辑摘要 |
imported>850710247liu 无编辑摘要 |
||
(未显示3个用户的35个中间版本) | |||
第1行: | 第1行: | ||
-- 中文Minecraft Wiki同名模块,原作者为Star00和MysticNebula70 | |||
-- 授权协议:CC BY-NC-SA 3.0 | |||
local p = {} | local p = {} | ||
第13行: | 第16行: | ||
:gsub('用户', 'User') | :gsub('用户', 'User') | ||
:gsub('user', 'User') | :gsub('user', 'User') | ||
:gsub('UTC', 'CST') | |||
return talk | return talk | ||
end | end | ||
function | function titleStrip(talk) | ||
-- 论题转换 | -- 论题转换 | ||
talk = talk | talk = talk | ||
:gsub('===(.-)===', '%1') | |||
return talk | |||
end | |||
function titleConv(title) | |||
-- 论题转换 | |||
title = title | |||
:gsub('<.->', '') | :gsub('<.->', '') | ||
:gsub('%[%[ | :gsub('%[%[:?.-|(.-)%]%]', '%1') | ||
:gsub('%[%[:?(.-)%]%]', '%1') | |||
:gsub('% | return title | ||
return | |||
end | end | ||
第47行: | 第55行: | ||
function getTimeStyle(time) | function getTimeStyle(time) | ||
if time == ' | if time == ' 该讨论主题已被移动' then | ||
return 'background-color: #fee;' | return 'background-color: #fee;' | ||
end | end | ||
第79行: | 第87行: | ||
function trim(text) | function trim(text) | ||
-- remove special strip markers and spaces | -- remove special strip markers and spaces | ||
text = mw.text.killMarkers(text):gsub('^[\t\r\n\f]*(.-)[\t\r\n\f]*$', '%1') | text = mw.text.killMarkers(text):gsub('^[%s\t\r\n\f]*(.-)[%s\t\r\n\f]*$', '%1') | ||
return text | return text | ||
end | end | ||
第109行: | 第117行: | ||
function getTitleList(pageName) | function getTitleList(pageName) | ||
local talk = | local talk = titleStrip(mw.getCurrentFrame():expandTemplate {title = ':' .. pageName}) | ||
local titleList = {} | local titleList = {} | ||
for title in talk:gmatch '==(.-)==' do | for title in talk:gmatch '==(.-)==' do | ||
titleList[#titleList + 1] = title | titleList[#titleList + 1] = titleConv(trim(title)) | ||
end | end | ||
第119行: | 第127行: | ||
function getTalkTime(talk) | function getTalkTime(talk) | ||
local result = talk:match '[%s%S]*(%d%d%d%d.*) %(CST%)' or ' | local result = talk:match '[%s%S]*(%d%d%d%d.*) %(CST%)' or ' 该讨论主题已被移动' | ||
return result | return result | ||
第128行: | 第136行: | ||
local userList = {} | local userList = {} | ||
if text:match '[^\n]*User:([^\n]-)%|[^\n]-CST' == nil then | if text:match '[^\n]*User:([^\n]-)%|[^\n]-CST' == nil then | ||
return {userNum = ' | return {userNum = '-', uniqueUserNum = '-', firstUser = '-', lastUser = '-'} | ||
end | end | ||
for user in text:gmatch '[^\n]*User:([^\n]-)%|[^\n]-CST' do | for user in text:gmatch '[^\n]*User:([^\n]-)%|[^\n]-CST' do | ||
第142行: | 第150行: | ||
function generateTable(pageName, talkTitle, talkText) | function generateTable(pageName, talkTitle, talkText) | ||
local body = { | local body = { | ||
'{| class="wikitable sortable collapsible talktable" style="text-align: center;"', | '{| class="wikitable sortable mw-collapsible talktable" style="text-align: center; margin: 0 auto; width: 100%;"', | ||
'|-', | '|-', | ||
'! # !! 话题 !! 发言条数 ', | '! # !! 话题 !! 发言条 数 !! 参与人 数 ', | ||
'! class="talkpage-topic-list-author" | 发起者', | '! class="talkpage-topic-list-author" | 发起者', | ||
'! class="talkpage-topic-list-last-editor" | 最后发言者', | '! class="talkpage-topic-list-last-editor" | 最后发言者', | ||
第167行: | 第175行: | ||
'|-', | '|-', | ||
'! style="' .. serialStyle .. '" | ' .. i, | '! style="' .. serialStyle .. '" | ' .. i, | ||
'| [[' .. pageName .. '#' .. | '| [[' .. pageName .. '#' .. talkTitle[i] .. '|' .. talkTitle[i].. ']]', | ||
'| style="' .. userStyle .. '" | ' .. userInfo.userNum, | '| style="' .. userStyle .. '" | ' .. userInfo.userNum, | ||
'| class="talkpage-topic-list-author" |' .. makeUserLink(userInfo.firstUser), | '| style="' .. uniqueUserStyle .. '" | ' .. userInfo.uniqueUserNum, | ||
'| class="talkpage-topic-list-author" | ' .. makeUserLink(userInfo.firstUser), | |||
'| class="talkpage-topic-list-last-editor" style="' .. timeStyle .. '" | ' .. makeUserLink(userInfo.lastUser), | '| class="talkpage-topic-list-last-editor" style="' .. timeStyle .. '" | ' .. makeUserLink(userInfo.lastUser), | ||
'| class="talkpage-topic-list-time" style="' .. timeStyle .. '" | ' .. time | '| class="talkpage-topic-list-time" style="' .. timeStyle .. '" | ' .. time | ||
第181行: | 第190行: | ||
return table.concat(body, '\n') | return table.concat(body, '\n') | ||
end | end | ||
function p.main(frame) | function p.main(frame) | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
第186行: | 第196行: | ||
local talkTitle, talkText = getTitleList(args[1]), getTalkList(args[1]) | local talkTitle, talkText = getTitleList(args[1]), getTalkList(args[1]) | ||
if #talkTitle ~= #talkText then | |||
return error 'Topic list获取错误。' | |||
end | |||
for i = 1, #talkTitle do | for i = 1, #talkTitle do | ||
talkTitle[i] = f:preprocess(talkTitle[i]) | talkTitle[i] = f:preprocess(talkTitle[i]) | ||
end | end | ||
return generateTable(args[1], talkTitle, talkText) | |||
end | end | ||
return p | return p |