Mô đun này có thể phù hợp với tiêu chí xóa nhanh của Wikipedia vì mô đun không sử dụng. Để tìm tiêu chí thích hợp, xem Tiêu chí xóa nhanh.
Nếu mô đun này không nằm trong các tiêu chí xóa nhanh, hoặc bạn đang sửa chữa nó, hãy dời thông báo này đi, nhưng đừng dời thông báo này khỏi trang do chính bạn tạo ra. Nếu bạn tạo ra trang này, và bạn không đồng ý với yêu cầu xóa nhanh, nhấn vào nút bên dưới để đến trang thảo luận, và nêu lý do trong mẫu có sẵn rằng tại sao mô đun này không nên bị xóa. Bạn có thể đến thẳng trang thảo luận để viết tin nhắn hoặc kiểm tra xem có phản hồi cho bạn hay chưa. Xin lưu ý rằng khi mô đun đã bị gán thông báo này, nó có thể bị xóa bất kỳ lúc nào nếu nó đáp ứng các tiêu chí xóa nhanh mà không cần bàn cãi, hoặc lý do được nêu ra ở trang thảo luận bị coi là không hợp lý. Thông báo đến người viết trang: Bạn chưa sửa đổi trang thảo luận. Nếu bạn muốn phản đối yêu cầu xóa nhanh, hãy nhấn nút bên trên để nhắn tin tại trang thảo luận nêu lý do vì sao bạn nghĩ trang này không nên bị xóa. Nếu đã sửa đổi trang thảo luận mà thông báo này vẫn xuất hiện, hãy tẩy bộ nhớ đệm.Bảo quản viên, Điều phối viên chú ý: Hãy kiểm tra liên kết, lịch sử (sửa đổi cuối) và nhật trình trước khi xóa trang. Kiểm tra Google: web, tin tức. Người đặt thông báo chú ý: cần thận trọng khi đánh giá bài viết của người mới đến; trong nhiều trường hợp cần giúp đỡ người mới hoàn thiện bài viết thay vì yêu cầu xóa nhanh; hành động yêu cầu xóa nhanh chỉ là ý kiến của cá nhân bạn nhưng có thể gây hiểu lầm là yêu cầu của cộng đồng Wikipedia. |
require('Module:Module wikitext')._addText([[{{db-reason|1=mô đun không sử dụng|help=off}}]]);
local p = {}
local nsc = require('Module:Navseasoncats')
local errorList = {
["FIND_VAR"] = "Function find_var can't recognize the decade for category %s.",
["NO_YEAR"] = "{{Navseasoncats with centuries below decade}} can't recognize the year for category %s.",
["NO_DECADE"] = "{{Navseasoncats with centuries below decade}} can't recognize the decade for category %s."
}
local function create_category(firstPart, lastPart, dateValue, dateWord)
local category = mw.text.trim(firstPart .. ' ' .. nsc.addord(dateValue) .. dateWord .. lastPart)
if (mw.title.new(category, 'Category').exists) then
return category
else
return nil
end
end
local function getCentury(decade)
decade = tonumber(decade)
local century = math.floor(((decade - 1) / 100) + 1) --from {{CENTURY}}
if (string.match(decade, '00$')) then
century = century + 1
end --'2000' is technically in the 20th, but the rest of the 2000s is in the 21st
return century
end
local function getDecade(year)
year = tonumber(year)
local decade = year / 10
decade = math.floor(decade)
return decade .. "0s"
end
local function getNestTierDateCategory(dateArgs, dateValue, firstPart, lastPart, decade)
local nextTierDateCategory = ""
if (dateArgs.dateType == "year") then
local decade = getDecade(dateValue)
nextTierDateCategory = create_category(firstPart, lastPart, decade, " ")
if (not nextTierDateCategory) then --check for "the YYYY"
nextTierDateCategory = create_category(firstPart, lastPart, "the " .. decade, " ")
end
elseif (dateArgs.dateType == "decade") then
local century = getCentury(dateValue)
nextTierDateCategory = create_category(firstPart, lastPart, century, " century ")
if (not nextTierDateCategory) then --check for hyphenated century
nextTierDateCategory = create_category(firstPart, lastPart, century, "-century ")
end
end
return nextTierDateCategory
end
local function isCategoryValid(dateValue, dateType, dateArgs)
if ((dateValue) and (dateType == dateArgs.dateType)) then
return true
else
return false
end
end
local function getError(pageName, avoidSelf, testcases, errorMessage)
local errorOut = ''
if (avoidSelf) then
local errors = nsc.errorclass(string.format(errorMessage, pageName))
errorOut = nsc.failedcat(errors, 'P')
if (testcases) then
string.gsub(errorOut, '(%[%[)(Category)', '%1:%2')
end
end
return errorOut
end
local function getAvoidSelf(currentTitle, testcases)
local avoidSelf = (currentTitle.text ~= 'Navseasoncats with year navigation' and
currentTitle.text ~= 'Navseasoncats with year navigation/doc' and
currentTitle.text ~= 'Navseasoncats with year navigation/sandbox' and
(currentTitle.nsText ~= 'Template' or testcases)) --avoid nested transclusion errors
return avoidSelf
end
local function main(frame, dateArgs)
local currentTitle = mw.title.getCurrentTitle()
local testcases = (currentTitle.subpageText == 'testcases')
local avoidSelf = getAvoidSelf(currentTitle, testcases)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
local testcase = args[1]
if ((testcase == nil) and (avoidself == false)) then
return ''
end
local pageName = testcase or currentTitle.baseText
local findVar = nsc.find_var(pageName) --picks up decades/seasons/etc.
if (findVar[1] == 'error') then
return getError(pageName, avoidSelf, testcases, errorList["FIND_VAR"])
end
local dateValue = tonumber(string.match(findVar[2], dateArgs.pattern))
if (not isCategoryValid(dateValue, findVar[1], dateArgs)) then
return getError(pageName, avoidSelf, testcases, dateArgs.errorMessage)
end
local nav1 = ''
if (testcase) then
nav1 = frame:expandTemplate{title = 'Navseasoncats', args = {testcase = testcase}} --not sure how else to pass frame & args together
else
nav1 = nsc.navseasoncats(frame)
end
local firstPart, lastPart = string.match(pageName, '^(.*)' .. findVar[2] .. '(.*)$')
firstPart = mw.text.trim(firstPart or '')
lastPart = mw.text.trim(lastPart or '')
local nextTierDateCategory = getNestTierDateCategory(dateArgs, dateValue, firstPart, lastPart, decade)
if (nextTierDateCategory) then
local nav2 = frame:expandTemplate{title = 'Navseasoncats', args = {[dateArgs.argName] = nextTierDateCategory}} --not sure how else to pass frame & args together
return '<div style="display:block !important; max-width: calc(100% - 25em);">' .."\n" .. nav1 .. nav2 .."\n" .. '</div>'
else
return nav1
end
end
function p.centuriesBelowDecade(frame)
local dateArgs = {dateType = "decade", pattern = '^(%d+)s', argName = "century-below-decade", errorMessage = errorList["NO_DECADE"]}
return main(frame, dateArgs)
end
function p.decadesBelowYear(frame)
local dateArgs = {dateType = "year", pattern = '^(%d+)', argName = "decade-below-year", errorMessage = errorList["NO_YEAR"]}
return main(frame, dateArgs)
end
return p