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

 

词条 Module:Sandbox/Gabrielchihonglee/TempReign
释义 -- For GCI Lua Task 10

local p = {}

function p.reign( frame )

-- **** Taking in all parameters' value **** --

    local startDate = frame.args[1] or "" -- Start date, string and/or number, optional    local endDate = frame.args[2] or "" -- End date, string and/or number, optional    local startDate2 = frame.args[3] or "" -- 2nd Start date, string and/or number, optional    local endDate2 = frame.args[4] or "" -- 2nd End date, string and/or number, optional    local single = frame.args.single or "" -- Single date, string and/or number, optional    local show = frame.args.show or frame.args.link or frame.args.lk or "" -- Formats "r.", "none", "link", "word", "colon", "lword", "lcolon", "blank", optional    local cap = frame.args.cap or "" -- Capitalizes the r./reigned/reign text, "yes" or any other values, optional    local preDate = frame.args['pre-date'] or "" -- Single date before date range, string and/or number, optional    local postDate = frame.args['post-date'] or "" -- Single date after date range, string and/or number, optional    local midDate = frame.args['mid-date'] or "" -- Single date between 2 date range, string and/or number, optional    local era = frame.args.era or "" -- Adds era at the end, string and/or number (posibly link), optional    local wrap = frame.args.wrap or "" -- Adds era at the end, "yes" or any other values, optional

local sortable = frame.args.sortable --

local sortDate = frame.args.sort_date --

local label = frame.args.label or "" -- Phrase replacing "r.", string and/or number, optional

if startDate ~= "" and endDate == "" and startDate2 == "" and endDate2 == "" and preDate == "" and postDate == "" and midDate == "" then

single = startDate

startDate = ""

end

-- **** Cleaning dates (remove head and tail space) **** --

local dateList = {startDate, endDate, startDate2, endDate2, preDate, postDate, midDate}

for dateListCount = 1, 7 do

if string.sub(dateList[dateListCount], 1, 1) == ' ' then dateList[dateListCount] = string.sub(dateList[dateListCount], 2, -1) end

if string.sub(dateList[dateListCount], -1) == ' ' then dateList[dateListCount] = string.sub(dateList[dateListCount], 1, -2) end

end

startDate, endDate, startDate2, endDate2, preDate, postDate, midDate = unpack(dateList)

-- **** Initial output **** --

local result = 'r. '

if show == 'word' then result = 'reigned ' end

if show == 'word' and cap ~= then result = 'Reigned ' end

if show == 'colon' then result = 'reign: ' end

if show == 'colon' and cap ~= then result = 'Reign: ' end

if show == 'lword' then result = 'reigned ' end

if show == 'lword' and cap ~= then result = 'Reigned ' end

if show == 'lcolon' then result = 'reign: ' end

if show == 'lcolon' and cap ~= then result = 'Reign: ' end

if show == 'blank' then result = end

if label ~= then

result = label .. ' '

end

-- **** Add space between 'c.' and number if needed **** --

for dateListCount = 1, 4 do

if string.sub(dateList[dateListCount], 1, 2) == 'c.' and string.sub(dateList[dateListCount], 1, 3) ~= 'c. ' then

dateList[dateListCount] = 'c. ' .. string.sub(dateList[dateListCount], 3, -1)

end

end

startDate, endDate, startDate2, endDate2 = unpack(dateList)

-- **** Adding space before and after dash **** --

local isComplexDate1 = false

local isComplexDate2 = false

if string.find(startDate, ' ') ~= nil then isStartDateComplex = true end -- Check for space in middle of startDate

if string.find(endDate, ' ') ~= nil then isEndDateComplex = true end -- Check for space in middle of endDate

if string.find(startDate2, ' ') ~= nil then isStartDate2Complex = true end -- Check for space in middle of startDate2

if string.find(endDate2, ' ') ~= nil then isEndDate2Complex = true end -- Check for space in middle of endDate2

if string.sub(endDate, -4) == ' BCE' then

if string.find(string.sub(endDate, 1, -5), ' ') == nil then isEndDateComplex = false end

end

if isStartDateComplex == true or isEndDateComplex == true then

isComplexDate1 = true -- true = there is at least 1 complex date

end

if isStartDate2Complex == true or isEndDate2Complex == true then

isComplexDate2 = true -- true = there is at least 1 complex date

end

local dash1 = '–'

local dash2 = '–'

if startDate2 == and endDate2 == then dash2 = end

if isComplexDate1 then dash1 = ' – ' end

if isComplexDate2 then dash2 = ' – ' end

if era ~= then era = ' ' .. era end

if preDate ~= then preDate = preDate .. ', ' end

if postDate ~= then postDate = ', ' .. postDate end

if midDate ~= then midDate = ', ' .. midDate .. ', ' end

-- **** Producing output **** --

if startDate == "" and endDate == "" and preDate == "" and postDate == "" and single == "" then

return result

elseif single ~= "" then

result = result .. single

return result

else

if startDate == "" and endDate == "" then dash1 = end

if startDate == "" and endDate == "" and preDate ~= "" and postDate ~= "" then postDate = string.sub(postDate, 3, -1) end

if startDate == "" and endDate ~= "" then startDate = '?' end

if endDate == "" and startDate ~= "" then endDate = " " end

if endDate2 == "" and startDate2 ~= "" then endDate2 = " " end

local commaBetweenDates =

if startDate ~= "" and endDate ~= "" and startDate2 ~= "" and endDate2 ~= "" and midDate == "" then commaBetweenDates = ', ' end

if wrap ~= "" then wrap = '' end

result = '' .. result .. preDate .. wrap .. startDate .. dash1 .. endDate .. wrap .. midDate .. commaBetweenDates .. wrap .. startDate2 .. dash2 .. endDate2 .. wrap .. postDate .. era .. ''

return result

end

end

return p

随便看

 

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

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/14 17:18:57