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

--[[ Offen:
1. Zahlen formatieren mit 0000
2. Zahlen formatieren mit Breite
3. Zahlen formatieren mit +1000000 ... beo minus?
2. mit img testen
--]]
local ERROR ='';
local lang=mw.language.getContentLanguage() -- wichtig!!
--local l2=mw.getContentLanguage() 
local yyy =lang:getCode()
local text=''
local TEST='TEST = '
-- Generell zum Einlesen beliebiger Texte muss gegen wikifunktion ersetzt werden
-- Initialisierungen

local p = {}
-------- Eigentliches Programm ----
function   printtab(tabl)
	local ret,vat='',''
	for ka, va in pairs(tabl) do
	--	ret=ret .. ka .. ". VAL=" .. vat .. "<br>"
		ret=ret .. ". VAL=" .. ka .. "<br>"
	end
	return ret
end

function nullern(nr, bd, ad, ds)
	    local ret = tostring(nr) -- falls numerisch, dann string

    if not ad then
        ad = 0
    end
    if not bd then
        bd = 7
    end
    bd = bd + ad + 1
    if ds and ds ~= "." then
        ds = "KOMMA" -- locale sprache irgendwo auslesen
    end
    local form = "%0" .. bd .. "." .. ad .. "f"
    local zahl = string.format(form, nr)
    local r = string.gsub(zahl, "^0(0+)", '<span style="visibility:hidden;">%1</span>')
    r = string.gsub(r, "0</span>$", "</span>0")
    r = string.gsub(r, "0</span>%.", "</span>0.")
    r = string.gsub(r, '<span style="visibility:hidden;"></span>', "")
    return r
end

local function tonum(nr, bd, ad) -- egal was kommt, Stringverarbeitung Nummernausgabe
	    local ret = tostring(nr) -- falls numerisch, dann string

    if not ad then ad = 0 end
    if not bd then bd = 7 end
    
    local len=10^bd -- als multiplikator
    bd = bd + ad + 1 --(Gesamtlänge incl. Komma)

    local form = "%0" .. bd .. "." .. ad .. "f" -- bastelt das format mit gesamtlänge und nachkomma
-- Alle Gruppentrenner raus, das letzte Zeichen ist Dezimaltrenner
    ret = string.gsub(string.reverse(ret), "[%.,]+", "QIX", 1) -- Letzten Ersetzen mit QIX
    ret = string.gsub(ret, "[%.,%s%']+", "") -- allr Zeichen raus
    ret = string.reverse(string.gsub(ret, "QIX", ".")) -- QIX wird Dezipunkt
    local zahl = string.format(form, ret)
-- Jetzt durch die Internationalisierung jagen
local x = lang:formatNum(math.abs(tonumber(zahl)))
local z1=#x
local z2=z1-bd
    zahl = tonumber(zahl)
    if zahl < 0 then zahl = lang:formatNum(zahl-len)
    	else zahl = lang:formatNum(zahl + len) end
--[[
mit string.sub(s, i [, j]) operieren. 2 Teile, 1, Teil 1
Teil 1 kommt in  <span style="visibility:hidden;">%1</span>
Teil 2 klebt dran
--]]
return zahl .. '=' .. z1 ..'/'.. z2
end

function formnum(nr, bd, ad)
    if not ad then ad = 0 end
    if not bd then bd = 7 end
-- Nummer bereinigen, Dezimalpunkt festlegen

    bd = bd + ad + 1
    if ds and ds ~= "." then
        ds = "KOMMA" -- locale sprache irgendwo auslesen
    end
    local form = "%0" .. bd .. "." .. ad .. "f"
    local zahl = string.format(form, nr)
    local r = string.gsub(zahl, "^0(0+)", '<span style="visibility:hidden;">%1</span>')
    r = string.gsub(r, "0</span>$", "</span>0")
    r = string.gsub(r, "0</span>%.", "</span>0.")
    r = string.gsub(r, '<span style="visibility:hidden;"></span>', "")
    return r
end



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
-----------------
function p.f(frame)
	frame = frame:getParent()
	for key, val in pairs(frame.args) do 
end


local q1='\n{| class="wikitable sortable"'
q1=q1 .. "\n! A !! B"

--q1= q1 .. string.format ("\n|-\n|Preceding with blank||%10.2f", 19.77)
--q1=q1 .. string.format ("\n|-\n|Preceding with zeros|| %010.2f", 19.77)
--q1=q1 .. string.format ("\n|-\n|floats|| %14.2f %+.0f %-4.2f %-4.2f", 3.1416, 3.1416, -3.1416, 3.1416)
--q1=q1 .. "\n|-\n|123||!1234567890!"
--q1=q1 .. "\n|-\n|000||!0000000000!"
--q1=q1 .. '\n|-\n|nbs||style="white-space: pre"|!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!'
--q1=q1 .. '\n|-\n|nbs+lz||style="white-space: pre"|!&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;!'
--q1=q1 .. '\n|-\n|lz pre-wrap||style="white-space: pre-wrap"|!          !'
--q1=q1 .. '\n|-\n|nullern||'.. nullern(123456.4,10,2)
q1=q1 .. '\n|-\n|tonum(1236.887)||'.. tonum(1236.887,5,2)
q1=q1 .. '\n|-\n|tonum(-1236.887)||'.. tonum(-1236.887,5,2)
q1=q1 .. '\n|-\n|tonum("1.236,887")||'.. tonum("1.236,887",8,2)
--[[q1=q1 .. '\n|-\n|formnum10  ||' .. lang:formatNum( 12345487.999 )
q1=q1 .. '\n|-\n|formatNum12  || style="width:120px;" |' .. lang:formatNum( 12345487.999 )
q1=q1 .. '\n|-\n|formatNum20 || X<span style="width:100em;">' .. lang:formatNum( 12345487.999 ) .. '</span>X'
q1=q1 .. '\n|-\n|formatNum000||'.. lang:formatNum( 00012345487.99 )
q1=q1 .. '\n|-\n|formatNum++000||'.. lang:formatNum( -00012345487.9879 )
-- q1=q1 .. '\n|-\n|l2||'.. printtab(l2) --]]

q1 = q1 .. "\n|}"

return q1

end -- p.f function
return p