Die Dokumentation für dieses Modul kann unter Modul:Benutzer:Kpfiwa/Test/Doku erstellt werden

--[[ Offen:
1. externe Links unifizieren
2. mit img testen
--]]
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)
-------- Eigentliches Programm ----
local function linkexE(txt)-- verarbeitet die externen Links
-- Suchmuster für externe Links:
such = '%[((%S+)%s*(.*))]' -- magic characters are    ( ) . % + - * ? [ ^ $
lnk = '[https://gadacz.de/gene#Start Start in die Gene-Datenbank]'

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,'') -- maske(n) löschen
	--return ' Kommt aus function linkex: ' .. txt .. TEST
	return txt
end -- function linkexW
-----------------
function p.f(frame)
	frame = frame:getParent()
	for key, val in pairs(frame.args) do --[[eigentlich zu weit geschossen,
											aber vielleicht kommen ja irgendwann noch weitere Parameter,
											z.B. externe Links --]]
--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
else TEXT= TEXT .. PIPE .. val
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  .. TEST
end -- p.f function
return p