Zum Inhalt springen

Modul:Vorlage:Plx2Dist2

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 30. August 2024 um 22:46 Uhr durch Antonsusi (Diskussion | Beiträge) (Ein Anfang). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Die Dokumentation für dieses Modul kann unter Modul:Vorlage:Plx2Dist2/Doku erstellt werden

local p = {}

local function trim(s)
	s = mw.ustring.gsub(s,"\n","");
	while mw.ustring.sub(s,1,1) == " " do
		s=  mw.ustring.sub(s,2,-1);
	end
	while mw.ustring.sub(s,-1,-1) == " " do
		s=  mw.ustring.sub(s,1,-2);
	end
	return s;
end

local function GetMinMaxParsec(value,sigma)
	local Plx= tonumber(value) or 0;
	local Diff=tonumber(sigma) or 0;
	if Plx <= 0 or Diff >= Plx then
		return 0, 0, 0, false
	end
	local Dist = 1000 / Plx;
	local DistMin = 1000 / (Plx + Diff);
	local DistMax = 1000 / (Plx - Diff);
	return DistMin, Dist, DistMax, true;
end

function p.Run(frame)
	local Min = 0;
	local Val = 0;
	local Max = 0;
	local IsOk = false;
	local val = tonumber(frame.args[1]) or 0;
	local sig = tonumber(frame.args[2]) or 0;
	Min, Val, Max, IsOk = GetMinMaxParsec(val,sig);
	local Result='<span class="error">???</span>';
	if not IsOk then
		return Result;
	end
	Result = tostring(math.floor (Min+0.5)) .. "  |  ".. tostring(math.floor (Val)) .. "  |  ".. tostring(math.floor (Max+0.5))
	return Result
end