Modul:Brug Wikidata/sandkasse: Forskelle mellem versioner

Content deleted Content added
m wip (3)
m wip (4b)
Linje 602:
 
-- dan sorteringsnøgle for de enkelte statements (for hvert kriterie)
local caseHandler = mw.ustring.upper -- default håndtering af store/små bogstaver er, at der overordnet sorteres med store bogstaver
local lang = mw.language.getContentLanguage()
if lang.caseFold then -- foretrukket
caseHandler = function(s) return lang:caseFold(s) end
elseif lang.uc then
caseHandler = function(s) return lang:uc(s) end
end
for k, stmt in pairs(statements) do
stmt.sortKeys = {}
Line 611 ⟶ 619:
and stmt.qualifiers[vs.key][1]
and stmt.qualifiers[vs.key][1]["datavalue"]
and stmt.qualifiers[vs.key][1]["datatype"] == "string" -- todo andre datatyper
and stmt.qualifiers[vs.key][1]["datavalue"]["value"]
then
sortKeylocal val = stmt.qualifiers[vs.key][1]["datavalue"]["value"] -- todo andresomevalue, datatypernovalue
sortKey = caseHandler(val) .. ":" .. val
end
elseif vs.type == "VÆRDI" then
Line 622 ⟶ 632:
end
 
-- udfør sorteringen TODO fejler pt.
local log = " log: "
table.sort(statements, function(a, b)
-- log = log .. "<br/>cmp: " .. table.concat(a.sortKeys, " / ") .. " // " .. table.concat(b.sortKeys, " / ") .. " "
--[[ for _, stmt in pairs(statements) do
log = log .. stmt.sortKeys[1]
end ]]--
for ks, vs in pairs(sortParsed) do
local function flip(erStigende, visStigende) -- vender sorteringen, hvis der har stået et - (minus) efter kriteriet
local ret = erStigende
if not visStigende then ret = not ret end
-- log = log .. " gav (" .. tostring(erStigende) .. ", " .. tostring(visStigende) .. ") " .. tostring(ret)
return ret
end
Line 639 ⟶ 649:
return flip(a.sortKeys[ks] < b.sortKeys[ks], vs.ascdesc ~= "-")
end -- ellers check næste niveau
--[[
if a.sortKeys[ks] < b.sortKeys[ks] then
return flip(true)
elseif a.sortKeys[ks] > b.sortKeys[ks] then
return flip(false)
end -- check næste
]]--
end
return false -- de var ens, bibehold sorteringen