Modul:Queries: Unterschied zwischen den Versionen

uniFilter() Sternchen
(UniFilter() Klammer-Filter)
(uniFilter() Sternchen)
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local p = {}
local p = {}
local com = require("Module:Common")
local com = require("Modul:Common")
local str = require("Module:String")
local str = require("Modul:String")


function p.GetValues(frame)
function p.GetValues(frame)
Zeile 27: Zeile 27:
query = query  .. "|mainlabel=-|limit=1"
query = query  .. "|mainlabel=-|limit=1"
local askResult = mw.smw.ask(query)
local ask_result = mw.smw.ask(query)
local values = {}
local values = {}
if not com.isEmpty(askResult) then
if not com.isEmpty(ask_result) then
values = askResult[1][attr] -- Erste Ergebnis-Zeile, attr-Spalte
values = ask_result[1][attr] -- Erste Ergebnis-Zeile, attr-Spalte
if type(values) ~= "table" then -- Immer als table rückgeben, auch wenn keine (dann umformen)
if type(values) ~= "table" then -- Immer als table rückgeben, auch wenn keine (dann umformen)
values = { [1]=values }
values = { [1]=values }
Zeile 46: Zeile 46:
query = query .. "|mainlabel=-"
query = query .. "|mainlabel=-"


local askResult = mw.smw.ask(query)
local ask_result = mw.smw.ask(query)
local values = {}
local values = {}
if not com.isEmpty(askResult) then
if not com.isEmpty(ask_result) then
for _, v  in pairs(askResult) do
for _, v  in pairs(ask_result) do
table.insert(values, v[1]) -- jede Zeile, 1. Spalte
table.insert(values, v[1]) -- jede Zeile, 1. Spalte
end
end
Zeile 60: Zeile 60:
-- mw.log("UniFilter(frame)")
-- mw.log("UniFilter(frame)")
-- mw.logObject(frame)
-- mw.logObject(frame)
local suchtext = frame.args[1] or ""
local filter = p.uniFilter(suchtext)
-- mw.log(filter)
return filter
end
function p.uniFilter(suchtext)
-- mw.log("uniFilter(" .. suchtext .. ")")
local filter = ""
local filter = ""
local suchtext = frame.args[1] or ""
suchtext = str.strip(tostring(suchtext or ""))
suchtext = str.strip(suchtext)
if suchtext == "" or suchtext == "*" then
if suchtext == "" then
filter = "+"
filter = "+"
else
else
Zeile 76: Zeile 83:
for _, ft in ipairs(suchtextSplit) do
for _, ft in ipairs(suchtextSplit) do
ft = str.strip(ft)
ft = str.strip(ft)
filter = filter .. "||~*" .. ft .. "*"
if ft ~= "" then
filter = filter .. "||~*" .. ft .. "*" .. "||" .. ft
end
end
end
end
end
Zeile 83: Zeile 92:
-- mw.log(filter)
-- mw.log(filter)
return filter
return filter
end
function p.dateLastDayCompleter(date)
local last_date
if #date == 4 then -- nur "Jahr" vorhanden
last_date = date .. "/12/31"
elseif #date ~= 10 then -- "Monat Jahr" vorhanden
local days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
local month = string.sub(date, 1, string.find(date, " ") - 1)
month = com.getMonthnr(month)
local year = string.sub(date, string.find(date, " ") + 1)
last_date = year .. "/" .. month .. "/"
if month == 2 and year % 4 == 0 then -- Sonderfall Feb. Schaltjahr
last_date = last_date .. "29"
else
last_date = last_date .. days[month]
end
else
last_date = date
end
return last_date
end
end


return p
return p