Jump to content

Module:Calc

From Wikipedia!
Module autodoc

local p = {}

local function RError(msg)
	return mw.ustring.format('<b class="error">%s</b>', msg)
end

function p.add(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	return num1 + num2
end

function p.addition(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	return num1 + num2
end


function p.minus(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	return num1 - num2
end

function p.subtraction(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	return num1 - num2
end

function p.times(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	local errordetect = tonumber(frame.args[3])
	if num2 == 0 and errordetect ~= 1 then
		return RError("You cannot multiply a number by zero.")
	else
		return num1 * num2
	end
end

function p.multiplication(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	return num1 * num2
end

function p.div(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	local antinotanumber = tonumber(frame.args[3])
	if num1 == 0 and num2 == 0 and antinotanumber == 1 then
		return 1
	else
		return num1 / num2
	end
end

function p.division(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	local antinotanumber = tonumber(frame.args[3])
	if num1 == 0 and num2 == 0 and antinotanumber == 1 then
		return 1
	else
		return num1 / num2
	end
end

function p.mod(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	return num1 % num2
end


function p.modulo(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	return num1 % num2
end


function p.pow(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	return num1 ^ num2
end

function p.exponentiation(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	return num1 ^ num2
end

function p.size(frame)
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	local ifless = tostring(frame.args[3])
	local ifmore = tostring(frame.args[4])
	local ifequal = tostring(frame.args[5])
	if num1 > num2 then
		return ifmore
	elseif num1 < num2 then
		return ifless
	elseif num1 == num2 then
		return ifequal
	else
		return "Unknown"
	end
end


function p.The_answer_to_life_the_universe_and_everything()
	return "42" --joke
end

return p