Modul:Faktenbox/Zeilen: Unterschied zwischen den Versionen

fix Telefon
(fix zeileAktenNr())
(fix Telefon)
Zeile 217: Zeile 217:
if mw.smw.getPropertyType(attr_name) == "_wpg" then -- Seiten-Attribute Spezialbehandlung
if mw.smw.getPropertyType(attr_name) == "_wpg" then -- Seiten-Attribute Spezialbehandlung
t = t .. p.setPageAttr(args.fbdata.attr.list, attr_name, val, args.val_show_only)
t = t .. p.setPageAttr(args.fbdata.attr.list, attr_name, val, args.val_show_only)
else -- alle anderen Attribut-Datentypen
elseif mw.smw.getPropertyType(attr_name) == "_tel" then -- Telefon-Attribute Spezialbehandlung
if mw.smw.getPropertyType(attr_name) == "_tel" then -- Telefonnummer Spezialbehandlung
t = t .. setTelAttr(args.fbdata.attr.list, attr_name, val, args.val_show_only)
val = p.getTelUri(val)
else
end
t = t .. p.setStandardAttr(args.fbdata.attr.list, attr_name, val, args.exclude_bracket_values, args.val_show_only)
t = t .. p.setStandardAttr(args.fbdata.attr.list, attr_name, val, args.exclude_bracket_values, args.val_show_only)
end
end
Zeile 240: Zeile 239:
t = t .. "[[" .. val .. "]]"
t = t .. "[[" .. val .. "]]"
else
else
val_pre_bracket, val_without_bracket, val_post_bracket = str.bracketSplitAndStrip(val) -- nach Klammern suchen und aufteilen
local val_pre_bracket, val_without_bracket, val_post_bracket = str.bracketSplitAndStrip(val) -- nach Klammern suchen und aufteilen
if not wik.pageExists(val_without_bracket) then -- Seite auch ohne Klammern nicht vorhanden?
if not wik.pageExists(val_without_bracket) then -- Seite auch ohne Klammern nicht vorhanden?
t = t .. val -- ==> kein Link, sondern nur Attribut versteckt setzen
t = t .. val -- ==> kein Link, sondern nur Attribut versteckt setzen
Zeile 253: Zeile 252:
val = val_without_bracket
val = val_without_bracket
end
end
end
if not val_show_only then
smw.addAttrToList(attrlist, name, val)
end
-- mw.logObject(t, "t")
return t
end
function p.setTelAttr(attrlist, name, val, val_show_only)
local t = ""
local val_pre_bracket, tel, val_post_bracket = str.bracketSplitAndStrip(val) -- nach Klammern suchen und aufteilen
local tel = val_pre_bracket .. " " .. tel -- Klammer am Anfang wieder anfügen
tel = p.getTelUri(tel)
if string.sub(tel, 1, 1) == "+" then
t = t .. "[tel:" .. tel .. " " .. val .. "]"
else
t = t .. val
end
end
if not val_show_only then
if not val_show_only then
Zeile 282: Zeile 298:


function p.getTelUri(val)
function p.getTelUri(val)
local tel = str.strip(val) -- preload default
-- Alles außer Zahlen und + am Anfang ausfiltern
if mw.ustring.sub(tel, 1, 1) == "0" and -- beginnt mit 0zzz (z = Zahl)
local tel = ""
(tonumber(mw.ustring.sub(tel, 2, 2)) or 0) > 0 then
local pre_plus = false
tel = "+49 " .. mw.ustring.sub(tel, 2)
for i = 1, mw.ustring.len(val) do
elseif mw.ustring.sub(tel, 1, 3) == "+49" then -- +49 (0) ...
local char = mw.ustring.sub(val, i, i)
s, e = mw.ustring.find(tel, "%(0%)")
if (char == "+" and not pre_plus) or tonumber(char) ~= nil then -- + am Anfang erlaubt
if s ~= nil then
tel = tel .. char
tel = mw.ustring.sub(tel, 1, s - 1) .. " " .. mw.ustring.sub(tel, e + 1)
pre_plus = true
end
end
end
end
-- Alle unerlaubten Zeichen und mehrfache Leerzeichen ausfiltern
-- Sonderbehandlungen
local telUri = ""
if mw.ustring.sub(tel, 1, 2) == "00" then -- 00 ...
local previous_char = ""
tel = "+" .. mw.ustring.sub(tel, 3)
tel = tel .. " "
end
for i = 1, mw.ustring.len(tel) do
if mw.ustring.sub(tel, 1, 1) == "0" and -- beginnt mit 0zzz (z = Zahl 1-9)
local char = mw.ustring.sub(tel, i, i)
(tonumber(mw.ustring.sub(tel, 2, 2)) or 0) > 0 then -- dann wird +49 angenommen
if tonumber(char) ~= nil or
tel = "+49" .. mw.ustring.sub(tel, 2)
char == "+" or char == "-" or char == "/" or
elseif mw.ustring.sub(tel, 1, 4) == "+490" then -- +49(0) ...
(char == " " and previous_char ~= " ") then
tel = "+49" .. mw.ustring.sub(tel, 5)
telUri = telUri .. previous_char
previous_char = char
end
end
end
return telUri
return tel
end
end


return p
return p