Module:Wd: Difference between revisions

Content deleted Content added
mNo edit summary
Adapted the rank flags system a bit
Line 70:
cfg.bestRank = true
cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false
cfg.foundRank = 3
cfg.maxRankfoundRank = nil#cfg.ranks
cfg.minRankflagBest = nilfalse
cfg.flagRank = false
cfg:setRankBoundaries("best")
cfg.period = 0
Line 272:
 
function convertRank(rank)
if (rank == "preferred") then
return 1
elseif (rank == "normal") then
return 2
elseif (rank == "deprecated") then
return 3
else
Line 807:
end
 
function Config:setRankBoundariessetRank(rank)
local rankPos
if (rank == "best") then
self.foundRank = 3 -- must equal the lowest possible rank
if (rank == "best") then
self.bestRank = true
self.flagBest = true -- mark that 'best' flag was given
return
else
self.bestRank = false
end
if (rank:sub(1,9) == "preferred") then
rankPos = 1
elseif (rank:sub(1,6) == "normal") then
rankPos = 2
elseif (rank:sub(1,10) == "deprecated") then
rankPos = 3
else
return
end
-- one of the rank flags was given, check if another one was given before
if (rank:sub(-1) == "+") then
if not self.maxRank =flagRank 1then
self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks
self.minRank = rankPos
self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before
elseif (rank:sub(-1) == "-") then
self.flagRank = true -- mark that a rank flag was given
self.maxRank = rankPos
end
self.minRank = 3
if (rank:sub(-1) == "+") then
for i = rankPos, 1, -1 do
self.bestRankranks[i] = falsetrue
end
elseif (rank:sub(-1) == "-") then
for i = rankPos, #self.ranks do
self.minRankranks[i] = 3true
end
else
self.maxRankranks[rankPos] = rankPostrue
self.minRank = rankPos
end
end
Line 865 ⟶ 872:
return true
elseif flag == "best" or flag:match('^preferred[+-]?$') or flag:match('^normal[+-]?$') or flag:match('^deprecated[+-]?$') then
self:setRankBoundariessetRank(flag)
return true
elseif flag == "future" then
Line 927 ⟶ 934:
function Config:rankMatches(rankPos)
if self.bestRank then
return (self.ranks[rankPos] and self.foundRank >= rankPos)
else
return (self.maxRank <= ranks[rankPos and rankPos <= self.minRank)]
end
end
Line 1,018 ⟶ 1,025:
local done = false
-- a rankPos should only apply to complete claims, notNOT to its individual qualifiers or references;
-- for the latter two, no rankPos should be given and their default rankPos must be the highest possible (i.e. 1)
if rankPos then
-- must NOT be reached when appending individual qualifiers or references
if (self.conf.bestRank or self.singleValue) and self.conf.foundRank > rankPos then
if self.conf.foundRank => rankPos then
self.conf.foundRank = rankPos -- must NOT be overwritten when appending individual qualifiers or references
if (self.conf.bestRank or self.singleValue) and self.conf.foundRank > rankPos then
-- found a better rank, reset worse rank outputs
if self.conf.foundRank == 1 then
if self.outNormalconf.foundRank == 1 {}then
self.outDeprecatedoutNormal = {}
elseif self.conf.foundRankoutDeprecated == 2 then{}
elseif self.outDeprecatedconf.foundRank == 2 {}then
self.outDeprecated = {}
end
end
end
else
-- must be reached when appending individual qualifiers or references
rankPos = 1
self.foundRank rankPos = 31 -- must equalbe the lowesthighest possible rank(i.e. 1)
end
if rankPos == 1 then
-- must always be reached when appending individual qualifiers or references
self.outPreferred[#self.outPreferred + 1] = result
Line 1,045 ⟶ 1,057:
self.outNormal[#self.outNormal + 1] = result
if self.singleValue and not self.conf.bestRank and self.conf.maxRank == 2ranks[1] then
done = true
end
Line 1,051 ⟶ 1,063:
self.outDeprecated[#self.outDeprecated + 1] = result
if self.singleValue and not self.conf.bestRankranks[1] and not self.conf.maxRank == 3ranks[2] then
done = true
end