Modul:Benutzer:Kpfiwa/Linkex
Die Dokumentation für dieses Modul kann unter Modul:Benutzer:Kpfiwa/Linkex/Doku erstellt werden
--[[ Offen:
1. externe Links unifizieren
2. mit img testen
https://en.wikibooks.org/wiki/Lua_Programming/Tables
--]]
local ERROR =''; local TEST='TEST = '
-- Generell zum Einlesen beliebiger Texte muss gegen wikifunktion ersetzt werden
-- Initialisierungen
local p = {}
local TEXT = '€€€€€'; local PIPE ='|'
local wtxt = ''
local tb, te, startpos, nix = 0, 0, 0, 0
local gtxt, gtxt1, gtxt2, gs0, gs1, gs2 = '', '', '', '', '', ''
local maske = '€€€€€'
local such1='%[%[([^]]+)]]' -- kompletter Inhalt Wikilink ohne [[ ]]
local such2='([^]^%|]+)|?(.*)'-- Ergebnis such1 aufgeteilt in Lemma, Linktext (falls vorhanden)
local object = {}
function object.func(self, arg1, arg2)
return arg1, arg2
end
--object.func(object, 1, 2) --> 1, 2
-------- Eigentliches Programm ----
local function linkexE(txt)-- verarbeitet die externen Links
-- Suchmuster für externe Links:
such = '%[((%S+)%s*(.*))]' -- magic characters are ( ) . % + - * ? [ ^ $
lnk = '[http://gadacz.info Mein Start]'
return txt
end -- linkexE
local function linkexW(txt) -- verarbeitet die internen Wikilinks
txt= string.gsub(txt,'%[%[Datei:','[' .. maske .. '[Datei:')
txt= string.gsub(txt,'%[%[File:','[' .. maske .. '[File:')
while true do
-- find ergibt textbeginn, textende, gefundener text(originaltext,suchmuster, startposition)
nix, nix, gtxt = string.find(txt, such1) -- find 'next' Suchmuster startpos wird auf suchende gesetzt
if gtxt == nil then break end -- ????
nix, nix, gtxt1, gtxt2 = string.find(gtxt, such2) -- gtxt teilen
if gtxt2 == '' then gtxt2 = gtxt1 end
gs0 = '%[%[' .. gtxt ..']]'
if gtxt1 == gtxt2 then gtxt = gtxt1 end
gs1 = '[' .. maske .. '[' .. gtxt ..']]'
gs2 = maske .. gtxt2 .. maske
txt = string.gsub(txt,gs0,gs2) -- Alle maskieren
txt = string.gsub(txt,gs2,gs1,1) -- erster Eintrag zurück auf maskiertes Original
end -- while true
-- txt = string.gsub(txt,maske .. '%{%{','') -- Textstart Start löschen
txt = string.gsub(txt,maske .. '%|','') -- Textstart Start löschen
txt = string.gsub(txt,maske,'') -- maske(n) löschen
--return ' Kommt aus function linkex: ' .. txt .. TEST
return txt
end -- function linkexW
function trim(s)
return s:gsub("^%s+", ""):gsub("%s+$", "")
end
-----------------
function p.f(frame)
frame = frame:getParent()
--TEST= TEST .. '?' .. object.func( frame) --> 1, 2
for key, val in ipairs(frame.args) do --[[eigentlich zu weit geschossen,
aber vielleicht kommen ja irgendwann noch weitere Parameter,
z.B. externe Links --]]
if string.find(key,'%D+') then TEXT = TEXT.. PIPE .. key .. '=' .. val
--if key == '%D+' then TEXT = TEXT.. PIPE .. key .. '=' .. val
else TEXT= TEXT.. PIPE .. val
-- if key <=1 then PIPE='' end
TEST = TEST .. "key=<big>".. (key or 0) .. '</big> val=' .. (val or 'NONE') .. '<' .. key .. '<<br>'
--if type(key) == "number" then TEXT= TEXT .. PIPE .. val
--if key < 5 then TEST = TEST .. "key=<big>".. key .. ' val=>' .. val .. '<' .. key .. '<<br>' end
end
-- if tonumber(key) == 1 then wtxt = val end
wtxt = val
--ERROR = ERROR .. ' key=' .. key .. ' val=' .. val
end -- for key
wtxt=TEXT
ret = linkexW(wtxt)
ret = linkexE(ret)
-- return "Eingabe=" .. ERROR .. '<r>Ergebnis=' .. ret
return (ret .. '<pre>'.. TEXT .. TEST .. '</pre>') or ""
end -- p.f function
return p