Modul:Wörterbuch/Work: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
(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")
local str = require("Modul:String")


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 .. ":" .. val
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, page)
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 val = mw.smw.ask("[[" .. page .. "]]|?Wörterbuch") or {}
local query = mw.smw.ask("[[" .. page .. "]]|?Wörterbuch") or {}
for _, v in ipairs(val) do
query = query[1]["Wörterbuch"]
v = str.split(v["Wörterbuch"], ":")
if query ~= nil then
val[i] = {entry = v[1], val = v[2]}
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