Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 274: | Zeile 274: | ||
end |
end |
||
− | if luaname ~= ( |
+ | if luaname ~= (string.match(jsonname, '^%s*(.*%S)') or '') then |
s = s .. "\n* " .. skinid .. " " .. luaname .. " ----> " |
s = s .. "\n* " .. skinid .. " " .. luaname .. " ----> " |
||
Version vom 9. Mai 2020, 13:54 Uhr
Die Dokumentation für dieses Modul kann unter Modul:SkinThemes/Doku erstellt werden
-- <pre>
local p = {}
local luaskinData = mw.loadData('Module:SkinData/data')
local lib = require('Module:Feature')
local json = require('Module:JSON')
local userError = require('Dev:User error')
local IL = require('Module:ImageLink')
-- TEST FUNCTIONS:
function oldestskins(frame)
end
function p.test(frame)
local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
local titleobject = mw.title.new(args[1])
local s = titleobject:getContent()
return s
end
-- EXTRACTING LUA FUNCTIONS:
function p.get(frame)
local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
local luauniverseData = mw.loadData('Module:SkinData/universes')
local lualinkData = mw.loadData('Module:SkinData/setlinks')
local exclude = lib.validateName(args["exclude"] or args[2] or nil)
local link
local inputskinname
local themeexists
local skintable = {}
local resulttable = {}
local set_to_universe = {}
local theme = {}; theme[1] = args['theme'] or args[1]
local s = "\n<ul>"
local s2
local skincount
for universename, universedata in pairs(luauniverseData) do
for _, universeset in pairs(universedata) do
set_to_universe[universeset] = universename
end
end
if theme[1] ~= nil and luaskinData[exclude] ~= nil then
local t = luaskinData[exclude]["skins"]
for skinname, sdata in pairs(t) do
if sdata["id"] ~= nil then
if theme[1] == skinname then
local luatheme = sdata["set"]
if luatheme ~= nil then
inputskinname = theme[1]
theme[1] = nil
for _, skintheme in pairs(luatheme) do
themeexists = 1
for _,tabletheme in pairs (theme) do
if skintheme == tabletheme or set_to_universe[skintheme] == tabletheme then
themeexists = 0
end
end
if themeexists == 1 then
table.insert(theme,set_to_universe[skintheme] or skintheme)
end
end
else
theme = nil
end
break
end
else
return ""
end
end
end
if theme == nil then
return ""
end
for tableindex, tabletheme in pairs (theme) do
for championname, cdata in pairs(luaskinData) do
local t = cdata["skins"]
for skinname,sdata in pairs(t) do
if sdata["id"] ~= nil and (inputskinname == nil or (inputskinname ~= nil and (skinname) ~= (inputskinname .. " " .. exclude))) then
local luatheme = sdata["set"]
if luatheme ~= nil then
for _, subtheme in pairs(luatheme) do
if subtheme == tabletheme or set_to_universe[subtheme] == tabletheme then
if resulttable[skinname] == nil then
resulttable[skinname] = {}
table.insert(skintable, skinname)
end
table.insert(resulttable[skinname], championname)
break
end
end
end
end
end
end
table.sort(skintable,orderup)
s2 = "<ul>"
skincount = 0
for _, skinname in pairs(skintable) do
table.sort(resulttable[skinname],orderup)
skincount = skincount + #resulttable[skinname]
for _, championname in pairs(resulttable[skinname]) do
s2 = s2 .. "<li>" .. csl(championname, skinname) .. "</li>"
end
end
s2 = s2 .. "</ul>"
if s2 ~= "" then
if set_to_universe[tabletheme] ~= nil then
link = lualinkData[tabletheme] or lualinkData[set_to_universe[tabletheme]]
else
link = lualinkData[tabletheme]
end
if tableindex == 1 then
s = s .. "<li>Dieser Skin teilt sich das "
else
s = s .. "<li>Er teilt sich außerdem das "
end
if link ~= "false" then
s = s .. "[[" .. (link or string.gsub(set_to_universe[tabletheme] or tabletheme, ": ", "/")) .. "|" .. (set_to_universe[tabletheme] or tabletheme) .. "]]"
else
s = s .. "'" .. tabletheme .. "' "
end
s = s .. '-Thema mit: '
if skincount > 5 then
s = s .. '<div class="columntemplate" style="-moz-column-count:2; -webkit-column-count:2; column-count:2;">' .. s2 .. '</div>'
else
s = s .. s2
end
s = s .. "</li>"
end
skintable = {}
resulttable = {}
end
s = s .. "</ul>"
return s
end
function p.unofficialtable(frame)
local luauniverseData = mw.loadData('Module:SkinData/universes')
local setnames = {}
local resulttable = {}
local skintable = {}
local setids = {}
local universenames = {}
local universeids = {}
local s = ""
s = s .. '<table class="wikitable">\n'
s = s .. '<tr><th width="20%">Name des Universums</th><th width="20%">Name des Sets</th><th>Skins</th></tr>\n'
for universename, universedata in pairs(luauniverseData) do
for _, setname in pairs(universedata) do
if universeids[setname] == nil then
universeids[setname] = {}
end
table.insert(universeids[setname],universename or "nil")
end
end
for championname,cdata in pairs(luaskinData) do
for skinname,sdata in pairs(cdata["skins"]) do
if sdata["id"] ~= nil then
if sdata["set"] ~= nil then
for _,set in pairs(sdata["set"]) do
if universeids[set] == nil then
universeids[set] = {}
table.insert(universeids[set],"N/A")
end
for _,universe in pairs(universeids[set]) do
if resulttable[universe] == nil then
resulttable[universe] = {}
setnames[universe] = {}
skintable[universe] = {}
table.insert(universenames, universe)
end
if resulttable[universe][set] == nil then
resulttable[universe][set] = {}
skintable[universe][set] = {}
table.insert(setnames[universe], set)
end
if resulttable[universe][set][skinname] == nil then
resulttable[universe][set][skinname] = {}
table.insert(skintable[universe][set], skinname)
end
table.insert(resulttable[universe][set][skinname], championname)
end
end
end
end
end
end
table.sort(universenames, orderup)
for _, universe in pairs(universenames) do
table.sort(setnames[universe], orderup)
s = s .. '<tr><th rowspan="' .. #setnames[universe] .. '">' .. universe .. '</th>'
for index, set in pairs(setnames[universe]) do
table.sort(skintable[universe][set], orderup)
if index ~= 1 then
s = s .. '<tr>'
end
s = s .. '<th>' .. set .. '</th><td><ul>'
for _, skin in pairs(skintable[universe][set]) do
table.sort(resulttable[universe][set][skin], orderup)
for _, champion in pairs(resulttable[universe][set][skin]) do
s = s .. '<li>' .. csl(champion, skin) .. '</li>'
end
end
s = s .. '</ul></td></tr>\n'
end
end
return s .. '</table>'
end
-- COMPARING LUA / JSON FUNCTIONS:
function p.synchronize(frame)
local jsonskins = jsontolua("Template:Set/skins.json")
local s = ""
for championname, cdata in pairs(luaskinData) do
for skinname, sdata in pairs(cdata["skins"]) do
if sdata["id"] ~= nil then
local luaname = sdata["formatname"] or lib.ternary(skinname == "Standard "..championname, championname, skinname)
local skinid = cdata["id"] * 1000 + sdata["id"]
local jsonname = jsonskins[tostring(skinid)]
if jsonname ~= nil then
jsonname = jsonname.name
end
if championname == "Nunu" and skinname == "Standard Nunu" then
luaname = "Nunu & Willump"
end
if luaname ~= (string.match(jsonname, '^%s*(.*%S)') or '') then
s = s .. "\n* " .. skinid .. " " .. luaname .. " ----> "
if jsonname == nil then
s = s .. "SkinID nicht gefunden"
else
s = s .. jsonname
end
end
end
end
end
if s == "" then
return "Alle Championskin-IDs und -Namen sind synchronisiert."
else
return "Die folgenden Championskins sind nicht synchronisiert:" .. s
end
end
function p.lore(frame)
local jsonskins = jsontolua("Template:Set/skins.json")
local s = ""
for championname, cdata in pairs(luaskinData) do
for skinname, sdata in pairs(cdata["skins"]) do
if sdata["id"] ~= nil then
if skinname ~= "Standard "..championname then
local skinid = cdata["id"] * 1000 + sdata["id"]
if jsonskins[tostring(skinid)] ~= nil and (sdata["lore"] or "") ~= (jsonskins[tostring(skinid)]["description"] or "") then
s = s .. "\n* " .. skinid .. " " .. csl(championname,skinname)
end
end
end
end
end
if s == "" then
return "Alle Hintergrundgeschichten sind synchronisiert."
else
return "Die folgenden Hintergrundgeschichten sind nicht synchronisiert:" .. s
end
end
function p.missing(frame)
local luauniverseData = mw.loadData('Module:SkinData/universes')
local jsonskins = jsontolua("Template:Set/skins.json")
local jsonsets = jsontolua("Template:Set/sets.json")
local jsonuniverses = jsontolua("Template:Set/universes.json")
local setids = {}
local setdata = {}
local s = ""
for _, setdata in pairs(jsonsets) do
setids[setdata.id] = setdata.name or "nil"
end
for _, universedata in pairs(jsonuniverses) do
for _, setid in pairs(universedata.skinSets) do
if setdata[universedata.name] == nil then
setdata[universedata.name] = {}
end
table.insert (setdata[universedata.name],setids[setid])
end
end
for jsonuniversename,jsonuniverse in pairs (setdata) do
if luauniverseData[jsonuniversename] ~= nil then
for _,jsonsetname in pairs (jsonuniverse) do
local count = 0
for _,luasetname in pairs (luauniverseData[jsonuniversename]) do
if jsonsetname == luasetname then
count = 1
break
end
end
if count == 0 then
s = s .. "\n* Missing " .. jsonsetname .. " Set In " .. jsonuniversename .. " Universe"
end
end
else
s = s .. "\n* " .. jsonuniversename .. " Universum fehlt"
end
end
for championname, cdata in pairs(luaskinData) do
for skinname, sdata in pairs(cdata["skins"]) do
if sdata["id"] ~= nil then
local setid
local skinid = cdata["id"] * 1000 + sdata["id"]
local jsonname = jsonskins[tostring(skinid)]
if jsonname ~= nil then
setid = jsonname.skinLines
end
local luaset = sdata["set"]
if luaset ~= nil then
if setid ~= nil and setid ~= "null" then
for _,champsetid in pairs(setid) do
local jsonset = setids[champsetid.id] or "nil"
local count2 = 0
for _, subtheme in pairs(luaset) do
if subtheme == jsonset then
count2 = 1
end
end
if count2 == 0 then
s = s .. "\n* " .. skinid .. " " .. csl(championname,skinname) .. " ----> " .. jsonset .. " Set Missing"
end
end
end
else
if setid ~= nil and setid ~= "null" then
for _,champsetid in pairs(setid) do
local jsonset = setids[champsetid.id] or "nil"
s = s .. "\n* " .. skinid .. " " .. csl(championname,skinname) .. " ----> " .. jsonset .. " Set Missing"
end
end
end
end
end
end
if s == "" then
return "Nichts fehlt."
else
return "Der folgende Kram fehlt:" .. s
end
end
function p.added(frame)
local luauniverseData = mw.loadData('Module:SkinData/universes')
local jsonskins = jsontolua("Template:Set/skins.json")
local jsonsets = jsontolua("Template:Set/sets.json")
local jsonuniverses = jsontolua("Template:Set/universes.json")
local setids = {}
local setdata = {}
local s = ""
for _, setdata in pairs(jsonsets) do
setids[setdata.id] = setdata.name or "nil"
end
for _, universedata in pairs(jsonuniverses) do
for _, setid in pairs(universedata.skinSets) do
if setdata[universedata.name] == nil then
setdata[universedata.name] = {}
end
table.insert (setdata[universedata.name],setids[setid])
end
end
for luauniversename,luauniverse in pairs (luauniverseData) do
if setdata[luauniversename] ~= nil then
for _,luasetname in pairs (luauniverse) do
local count = 0
for _,jsonsetname in pairs (setdata[luauniversename]) do
if jsonsetname == luasetname then
count = 1
break
end
end
if count == 0 then
s = s .. "\n* " .. luasetname .. " Inoffizielles Set hinzugefügt in " .. luauniversename .. "-Universum"
end
end
else
s = s .. "\n* " .. luauniversename .. " Inoffizielles Universum Hinzugefügt"
end
end
for championname, cdata in pairs(luaskinData) do
for skinname, sdata in pairs(cdata["skins"]) do
if sdata["id"] ~= nil then
local skinid = cdata["id"] * 1000 + sdata["id"]
local jsonname = jsonskins[tostring(skinid)]
if jsonname ~= nil then
setid = jsonname.skinLines
end
local luaset = sdata["set"]
if luaset ~= nil then
if setid ~= nil and setid ~= "null" then
for _, subtheme in pairs(luaset) do
local count2 = 0
for _,champsetid in pairs(setid) do
local jsonset = setids[champsetid.id] or "nil"
if subtheme == jsonset then
count2 = 1
end
end
if count2 == 0 then
s = s .. "\n* " .. skinid .. " " .. csl(championname,skinname) .. " ----> " .. subtheme .. " Inoffizielles Set Hinzugefügt"
end
end
else
for _, subtheme in pairs(luaset) do
s = s .. "\n* " .. skinid .. " " .. csl(championname,skinname) .. " ----> " .. subtheme .. " Inoffizielles Set Hinzugefügt"
end
end
end
end
end
end
if s == "" then
return "Nichts Inoffizielles wurde hinzugefügt."
else
return "Der folgende Inoffizielle Kram wurde hinzugefügt:" .. s
end
end
-- EXTRACTING JSON FUNCTIONS:
function p.officialtable(frame)
local jsonskins = jsontolua("Template:Set/skins.json")
local jsonsets = jsontolua("Template:Set/sets.json")
local jsonuniverses = jsontolua("Template:Set/universes.json")
local setnames = {}
local resulttable = {}
local skintable = {}
local setids = {}
local universenames = {}
local universeids = {}
local s = ""
s = s .. '<table class="wikitable">\n'
s = s .. '<tr><th width="20%">Name des Universums</th><th width="20%">Name des Sets</th><th>Skins</th></tr>\n'
for _, setdata in pairs(jsonsets) do
setids[setdata.id] = setdata.name or "nil"
end
for _, universedata in pairs(jsonuniverses) do
for _, setid in pairs(universedata.skinSets) do
if universeids[setid] == nil then
universeids[setid] = {}
end
table.insert(universeids[setid],universedata.name or "nil")
end
end
for championname,cdata in pairs(luaskinData) do
for skinname,sdata in pairs(cdata["skins"]) do
if sdata["id"] ~= nil then
local skinid = cdata["id"] * 1000 + sdata["id"]
local setid = jsonskins[tostring(skinid)]
if setid ~= nil then
setid = setid.skinLines
end
if setid ~= nil and setid ~= "null" then
for _,champsetid in pairs(setid) do
if universeids[champsetid.id] == nil then
universeids[champsetid.id] = {}
table.insert(universeids[champsetid.id],"N/A")
end
for _,universe in pairs(universeids[champsetid.id]) do
local set = setids[champsetid.id] or "nil"
if resulttable[universe] == nil then
resulttable[universe] = {}
setnames[universe] = {}
skintable[universe] = {}
table.insert(universenames, universe)
end
if resulttable[universe][set] == nil then
resulttable[universe][set] = {}
skintable[universe][set] = {}
table.insert(setnames[universe], set)
end
if resulttable[universe][set][skinname] == nil then
resulttable[universe][set][skinname] = {}
table.insert(skintable[universe][set], skinname)
end
table.insert(resulttable[universe][set][skinname], championname)
end
end
end
end
end
end
table.sort(universenames, orderup)
for _, universe in pairs(universenames) do
table.sort(setnames[universe], orderup)
s = s .. '<tr><th rowspan="' .. #setnames[universe] .. '">' .. universe .. '</th>'
for index, set in pairs(setnames[universe]) do
table.sort(skintable[universe][set], orderup)
if index ~= 1 then
s = s .. '<tr>'
end
s = s .. '<th>' .. set .. '</th><td><ul>'
for _, skin in pairs(skintable[universe][set]) do
table.sort(resulttable[universe][set][skin], orderup)
for _, champion in pairs(resulttable[universe][set][skin]) do
s = s .. '<li>' .. csl(champion, skin) .. '</li>'
end
end
s = s .. '</ul></td></tr>\n'
end
end
return s .. '</table>'
end
-- HELPER FUNCTIONS:
function csl(champion, skin)
return tostring(IL.skin{
["champion"] = champion,
["skin"] = skin,
["link"] = champion .. "#tab-Skins",
["text"] = skin,
["circle"] = "true"
})
end
function jsontolua(pagename)
local titleobject = mw.title.new(pagename)
local o = json.decode(titleobject:getContent())
return o
end
function orderup(a,b)
a = string.lower(a)
b = string.lower(b)
if a == 'n/a' then
return false
end
if b == 'n/a' then
return true
end
return b > a
end
return p
-- </pre>
-- [[Category:Module]]