模組:存檔至
外观
local p = {}
local showError = require('Module:Error').error
function checkIsTalkPage(page)
if page.isRedirect then
return showError({[1]= "(錯誤:參數值<code>".. page.prefixedText .."</code>是個重新導向)" })
.. '[[Category:存檔目標錯誤的頁面|R]]'
end
if page.namespace % 2 == 1 then
return ''
end
if page.namespace == 4 then
if page.isSubpage then
if page.rootText == '格式手冊' or page.rootText == '格式手册' then
return showError({[1]= "(錯誤:參數值<code>".. page.prefixedText .."</code>非應存檔討論頁)" })
.. '[[Category:存檔目標錯誤的頁面|W]]'
end
if page.subpageText == '条目指引' or page.subpageText == '條目指引' then
return showError({[1]= "(錯誤:參數值<code>".. page.prefixedText .."</code>非應存檔討論頁)" })
.. '[[Category:存檔目標錯誤的頁面|W]]'
end
else
return showError({[1]= "(錯誤:參數值<code>".. page.prefixedText .."</code>非應存檔討論頁)" })
.. '[[Category:存檔目標錯誤的頁面|W]]'
end
else
return showError({[1]= "(錯誤:參數值<code>".. page.prefixedText .."</code>非討論頁)" })
.. '[[Category:存檔目標錯誤的頁面|'..page.namespace..']]'
end
return ''
end
function p._core(title)
local page = mw.title.new( title )
local code = ''
if page ~= nil then
mw.log(page.prefixedText)
mw.log(page.namespace)
local errMsg = checkIsTalkPage(page)
code = "'''[[".. page.prefixedText .."]]'''"
.. mw.getCurrentFrame():expandTemplate{title='Bot-directive-archiver', args={'archive-to', page.prefixedText}}
if errMsg ~= '' then
code = code .. errMsg .. mw.getCurrentFrame():expandTemplate{title='Bot-directive-archiver', args={'keep'}}
else
end
else
return nil
end
return code
end
function p._main(args)
local targets = {}
local i = 1
while i <= 10 do
if args[i] ~= nil then
table.insert(targets, p._core(args[i]))
end
i = i + 1
end
local code = mw.getCurrentFrame():expandTemplate{title='Bot-directive-archiver', args={'no-archive-begin'}}
.. '<p class="notice metadata" id="spoiler" style="font-size: small">本主題或以下段落文字,在討論結束後'
if #targets > 0 then
code = code .. "應'''存檔'''至" .. mw.text.listToText(targets, '、', '、')
else
code = code .. "'''不存檔'''"
end
code = code .. '。</p>' .. mw.getCurrentFrame():expandTemplate{title='Bot-directive-archiver', args={'no-archive-end'}}
return code
end
function p.main(frame)
return p._main( frame:getParent().args )
end
return p