26.714
Bearbeitungen
(Die Seite wurde neu angelegt: „local p = {} local com = require("Modul:Common") local smw = require("Modul:SMW") local wik = require("Modul:Wiki") local str = require("Modul:String") function p.Mehrzahl(frame) return p.mehrzahl(frame.args[1] or "") end function p.mehrzahl(ez) local mehrzahl = { -- ACHTUNG! ["Attribut"] = "Attribute", -- Die Mehrzahl-Einträge beim Attribut haben Vorrang! ["Audio"] = "Audios", ["Buchreihe"] = "Buchreihen", ["F…“) |
Keine Bearbeitungszusammenfassung |
||
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 4: | Zeile 4: | ||
local smw = require("Modul:SMW") | local smw = require("Modul:SMW") | ||
local wik = require("Modul:Wiki") | local wik = require("Modul:Wiki") | ||
function p.Mehrzahl(frame) | function p.Mehrzahl(frame) | ||
| Zeile 36: | Zeile 35: | ||
-- attrlist={}; p.setEntry("e", "v", attrlist); mw.logObject(attrlist) | -- attrlist={}; p.setEntry("e", "v", attrlist); mw.logObject(attrlist) | ||
if not com.isEmpty(val) then | if not com.isEmpty(val) then | ||
entry = entry .. "&# | entry = entry .. "=" .. val | ||
if attrlist ~= nil then | if attrlist ~= nil then | ||
smw.addAttrToList(attrlist, "Wörterbuch", entry) | smw.addAttrToList(attrlist, "Wörterbuch", entry) | ||
| Zeile 45: | Zeile 44: | ||
end | end | ||
function p.getEntry(entry | function p.getEntry(page, entry) | ||
-- Kommandozeilen zum Debuggen: | -- Kommandozeilen zum Debuggen: | ||
-- | -- mw.logObject(p.getEntry("Testberuf","MehrzahlFemininum")) | ||
local val | |||
page = page or wik.fullpagename() | page = page or wik.fullpagename() | ||
local | local query = mw.smw.ask("[[" .. page .. "]]|?Wörterbuch") or {} | ||
for | query = query[1]["Wörterbuch"] | ||
if query ~= nil then | |||
val = {} | |||
for i, q in ipairs(query) do | |||
local delim_start, delim_end = string.find(q, "=") | |||
val[string.sub(q, 1, delim_start - 1)] = | |||
string.sub(q, delim_end + 1) | |||
end | |||
if entry ~= nil then | |||
val = val[entry] | |||
end | |||
end | end | ||
return val | return val | ||
end | |||
function p.getEntry(page, entry) | |||
-- Kommandozeilen zum Debuggen: | |||
-- mw.logObject(p.getEntry("Testberuf","MehrzahlFemininum")) | |||
local val | |||
page = page or wik.fullpagename() | |||
local query = mw.smw.ask("[[" .. page .. "]]|?Wörterbuch") or {} | |||
query = query[1]["Wörterbuch"] | |||
if query ~= nil then | |||
val = {} | |||
for i, q in ipairs(query) do | |||
local delim_start, delim_end = string.find(q, "=") | |||
val[string.sub(q, 1, delim_start - 1)] = | |||
string.sub(q, delim_end + 1) | |||
end | |||
if entry ~= nil then | |||
val = val[entry] | |||
end | |||
end | |||
return val | |||
end | |||
function p.getEntryPages(entry, val, category) | |||
-- Kommandozeilen zum Debuggen: | |||
-- mw.logObject(p.getEntryPages("MehrzahlFemininum", "MF", "Berufe")) | |||
local pagelist | |||
entry = entry or "" | |||
val = val or "" | |||
pattern = entry .. "=" .. val | |||
-- SDB-Abfrage mit Wildcard, damit auch ohne entry/val funzt | |||
local query = "[[Wörterbuch::~*" .. pattern .. "*]]" .. | |||
"|?#-=fullpagename|?Wörterbuch|mainlabel=-" | |||
if category ~= nil then | |||
query = "[[Kategorie:" .. category .. "]]" .. query | |||
end | |||
query = mw.smw.ask(query) or {} | |||
-- Alle query-Ergebnisse durchgehen | |||
for _, q in ipairs(query) do | |||
local woerterbuch = q["Wörterbuch"] or {} | |||
if type(woerterbuch) == "string" then | |||
woerterbuch = {woerterbuch} | |||
end | |||
for _, e in ipairs(woerterbuch) do | |||
-- exakte entry/val-Überprüfung | |||
local found = false | |||
local fa, fe = string.find(e, pattern) | |||
if entry == "" then | |||
found = (val ~= "" and fe == #e) | |||
elseif val == "" then | |||
found = (fa == 1) | |||
else | |||
found = (fa == 1 and fe == #e) | |||
end | |||
-- Listeneintrag, wenn gefunden | |||
if found then | |||
if pagelist == nil then -- initialer table-init | |||
pagelist = {} | |||
end | |||
if pagelist[q.fullpagename] == nil then -- fullpagename in liste eintragen | |||
table.insert(pagelist, q.fullpagename) | |||
end | |||
local delim_start, delim_end = string.find(e, "=") -- fullpagename nochmal mit entry=val eintragen | |||
pagelist[q.fullpagename] = { | |||
[string.sub(e, 1, delim_start - 1)] = | |||
string.sub(e, delim_end + 1)} | |||
end | |||
end | |||
end | |||
return pagelist | |||
end | end | ||
return p | return p | ||