Dota 2 Wiki
Advertisement

Documentation for Module:Calculate Jump to code ↴ [ edit | purge ]

Reality Rift icon
▶️ Planeshift.
The documentation for this module can be found at Template:Calculate.
You may be forwarded to another wiki language, in case a translation is not available.

Tests

Lua error in package.lua at line 80: module 'Module:Error' not found.


Dependencies

local error = require( 'Module:Error' ).main
local getArgs = require( 'Module:Arguments' ).main
local p = {}

function p.main( frame )
	local args = getArgs()
	return p._main( args )
end

function p._main( args )
	if args[1] then
		if args['v1'] then
			local output = {}
	
			local level = 1
			local v1 = string.gsub( args['v1'], '%%', '%%%%' )
			for value in mw.text.gsplit( v1, '/', plain ) do
				local calc = string.gsub( args[1], 'v1', value )

				local n = 2
				while args['v' .. n] do
					local temp_value = mw.text.split( string.gsub( args['v' .. n], '%%', '%%%%' ), '/', plain )
					calc = string.gsub( calc, 'v' .. n, temp_value[level] )
					
					n, level = n + 1, level + 1
					if level > 4 then level = 1 end
				end
				
				if args[2] then
					table.insert( output, p.expr( '(' .. calc .. ')*100' ) .. '%' ) 
				else
					table.insert( output, p.expr( calc ) ) 
				end
			end

			return table.concat( output, '/' )
		else
			return p.expr( args[1] )
		end
	else
		return error( 'Check your input.' )
	end
end

function p.expr( calc )
	return mw.getCurrentFrame():callParserFunction{ name = '#expr', args = string.gsub( calc, '%%', '/100' ) }
end

return p
Advertisement