Modul:Benutzer:Kpfiwa/Linkex

aus Wikipedia, der freien Enzyklopädie

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