15.075
Bearbeitungen
Keine Bearbeitungszusammenfassung |
(uniFilter() Sternchen) |
||
| (10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
local com = require(" | local com = require("Modul:Common") | ||
local str = require(" | 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 | local ask_result = mw.smw.ask(query) | ||
local values = {} | local values = {} | ||
if not com.isEmpty( | if not com.isEmpty(ask_result) then | ||
values = | 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 | local ask_result = mw.smw.ask(query) | ||
local values = {} | local values = {} | ||
if not com.isEmpty( | if not com.isEmpty(ask_result) then | ||
for _, v in pairs( | 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 = "" | ||
suchtext = str.strip(tostring(suchtext or "")) | |||
suchtext = str.strip(suchtext) | if suchtext == "" or suchtext == "*" then | ||
if suchtext == "" then | |||
filter = "+" | filter = "+" | ||
else | else | ||
suchtext = string.gsub(suchtext, "%[", "") | |||
suchtext = string.gsub(suchtext, "%]", "") | |||
filter = filter .. suchtext -- exakte Suche (immer) | filter = filter .. suchtext -- exakte Suche (immer) | ||
filter = filter .. "||~*" .. suchtext .. "*" -- Wildcard-Suche des ganzen Suchtextes (immer) | filter = filter .. "||~*" .. suchtext .. "*" -- Wildcard-Suche des ganzen Suchtextes (immer) | ||
| Zeile 74: | 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 81: | 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 | ||