<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Module%3A%E6%B2%99%E7%9B%92%2Fa2569875%2FScript</id>
	<title>Module:沙盒/a2569875/Script - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Module%3A%E6%B2%99%E7%9B%92%2Fa2569875%2FScript"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Module:%E6%B2%99%E7%9B%92/a2569875/Script&amp;action=history"/>
	<updated>2026-07-15T03:05:26Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Module:%E6%B2%99%E7%9B%92/a2569875/Script&amp;diff=4096857&amp;oldid=prev</id>
		<title>imported&gt;A2569875 来自 2022年10月27日 (四) 02:49</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Module:%E6%B2%99%E7%9B%92/a2569875/Script&amp;diff=4096857&amp;oldid=prev"/>
		<updated>2022-10-27T02:49:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local sollib = require(&amp;quot;Module:Complex_Number/Solver&amp;quot;)&lt;br /&gt;
local calclib = require(&amp;quot;Module:Complex_Number/Calculate&amp;quot;)&lt;br /&gt;
local noop_func = function()end&lt;br /&gt;
--mw.log(require(&amp;quot;Module:Complex_Number/Calculate&amp;quot;).calc(&amp;quot;call(object(mw,logObject),string(abc))&amp;quot;,p.script.init(),p.script.init().constructor,true,true,function(msg)mw.log(&amp;quot;錯誤! &amp;quot;..msg)end))&lt;br /&gt;
p.script={&lt;br /&gt;
	new = function(obj)&lt;br /&gt;
		if type(obj) == type({}) and obj.isObject then return mw.clone(obj) end&lt;br /&gt;
		local value = obj&lt;br /&gt;
		local newObj = {&lt;br /&gt;
			isObject = true,&lt;br /&gt;
			value = value&lt;br /&gt;
		}&lt;br /&gt;
		newObj.numberType = &amp;quot;object&amp;quot;&lt;br /&gt;
		setmetatable(newObj,p.script.ObjectMeta)&lt;br /&gt;
		return newObj&lt;br /&gt;
	end,[&amp;#039;new/doc&amp;#039;] = {name=&amp;quot;新物件&amp;quot;,title=&amp;quot;&amp;quot;,othername={},&lt;br /&gt;
		example=&amp;quot;new(string(text))&amp;quot;,description=&amp;quot;&amp;quot;, count = 1},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;#039;string&amp;#039;] = function(str,...)&lt;br /&gt;
		local result = &amp;#039;&amp;#039;..tostring(str)&lt;br /&gt;
		local str_list = {...}&lt;br /&gt;
		for i = 1,#str_list do&lt;br /&gt;
			result = result .. tostring(str_list[i])&lt;br /&gt;
		end&lt;br /&gt;
		return p.script.new(result)&lt;br /&gt;
	end,[&amp;#039;string/doc&amp;#039;] = {name=&amp;quot;字串物件&amp;quot;,title=&amp;quot;&amp;quot;,othername={},&lt;br /&gt;
		example=&amp;quot;string(text)&amp;quot;,description=&amp;quot;&amp;quot;, count = 1},&lt;br /&gt;
&lt;br /&gt;
	number = function(num)&lt;br /&gt;
		return p.script.new(tonumber(tostring(num)))&lt;br /&gt;
	end,[&amp;#039;number/doc&amp;#039;] = {name=&amp;quot;數字物件&amp;quot;,title=&amp;quot;&amp;quot;,othername={},&lt;br /&gt;
		example=&amp;quot;number(10)&amp;quot;,description=&amp;quot;&amp;quot;, count = 1},&lt;br /&gt;
	&lt;br /&gt;
	array = function(...)&lt;br /&gt;
		return p.script.toObject({...})&lt;br /&gt;
	end,[&amp;#039;array/doc&amp;#039;] = {name=&amp;quot;陣列物件&amp;quot;,title=&amp;quot;&amp;quot;,othername={},&lt;br /&gt;
		example=&amp;quot;array(1,2,3)&amp;quot;,description=&amp;quot;&amp;quot;, count = &amp;quot;不定&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	newScope = function()&lt;br /&gt;
		return p.script.toObject({})&lt;br /&gt;
	end,[&amp;#039;newScope/doc&amp;#039;] = {name=&amp;quot;新的變數儲存域&amp;quot;,title=&amp;quot;&amp;quot;,othername={},&lt;br /&gt;
		example=&amp;quot;newScope(nil)&amp;quot;,description=&amp;quot;&amp;quot;, count = 1},&lt;br /&gt;
	&lt;br /&gt;
	object = function(obj,...)&lt;br /&gt;
		local input_obj = obj&lt;br /&gt;
		if type(obj) == type({}) and obj.isObject then &lt;br /&gt;
			input_obj = obj.value&lt;br /&gt;
		else&lt;br /&gt;
			if type(obj) == type(&amp;quot;string&amp;quot;) then input_obj = _G[obj] end&lt;br /&gt;
		end&lt;br /&gt;
		if type(input_obj) == type(0) then return p.script.toObject(obj) end&lt;br /&gt;
		if type(input_obj) == type(noop_func) then return p.script.toObject(obj) end&lt;br /&gt;
		if input_obj == nil then return p.script.toObject(nil) end &lt;br /&gt;
		local members = {...}&lt;br /&gt;
		if #members &amp;gt; 0 then&lt;br /&gt;
			local it_obj = input_obj&lt;br /&gt;
			for i = 1,#members do&lt;br /&gt;
				if type(it_obj) ~= type({}) then return nil end&lt;br /&gt;
				it_obj = (it_obj or {})[p.script.toObject(members[i]).value]&lt;br /&gt;
				if it_obj == nil then return nil end&lt;br /&gt;
			end&lt;br /&gt;
			return p.script.toObject(it_obj)&lt;br /&gt;
		end&lt;br /&gt;
		return p.script.toObject(input_obj)&lt;br /&gt;
	end,[&amp;#039;object/doc&amp;#039;] = {name=&amp;quot;物件&amp;quot;,title=&amp;quot;&amp;quot;,othername={},&lt;br /&gt;
		example=&amp;quot;object(mw,site,namespaces,0,displayName)&amp;quot;,description=&amp;quot;&amp;quot;, count = &amp;quot;不定&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	assignMember = function(obj, member, value)&lt;br /&gt;
		local input_obj = p.script.toObject(obj).value&lt;br /&gt;
		if type(input_obj) == type(&amp;quot;string&amp;quot;) then input_obj = _G[input_obj] end&lt;br /&gt;
		if type(input_obj) == type(0) then error(&amp;quot;無法傳值給數字&amp;quot;, 2) end&lt;br /&gt;
		if type(input_obj) == type(noop_func) then error(&amp;quot;無法傳值給函數&amp;quot;, 2) end&lt;br /&gt;
		if input_obj == nil then error(&amp;quot;無法傳值給空值&amp;quot;, 2) end &lt;br /&gt;
		input_obj[p.script.toObject(member).value] = value&lt;br /&gt;
		return value&lt;br /&gt;
	end,[&amp;#039;assignMember/doc&amp;#039;] = {name=&amp;quot;賦值&amp;quot;,title=&amp;quot;&amp;quot;,othername={},&lt;br /&gt;
		example=&amp;quot;&amp;quot;,description=&amp;quot;&amp;quot;, count = &amp;quot;3&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	call = function(obj, ...)&lt;br /&gt;
	 	local func = p.script.toObject(obj).value&lt;br /&gt;
		if type(func) == type(noop_func) then return func(...)end&lt;br /&gt;
		return func&lt;br /&gt;
	end,[&amp;#039;call/doc&amp;#039;] = {},&lt;br /&gt;
	&lt;br /&gt;
	typeof=function(input_obj)&lt;br /&gt;
		local obj = input_obj&lt;br /&gt;
		if type(obj) == type({}) and obj.isObject then obj = obj.value end&lt;br /&gt;
		if type(obj) == type({}) then&lt;br /&gt;
			if obj.numberType then return p.script.toObject(type(0)) end&lt;br /&gt;
			local is_array = true&lt;br /&gt;
			for index, data in pairs(obj) do&lt;br /&gt;
				if not tonumber(index) and index ~= &amp;#039;metatable&amp;#039; then&lt;br /&gt;
					is_array = false&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if is_array then return p.script.toObject(&amp;#039;array&amp;#039;) end&lt;br /&gt;
		end&lt;br /&gt;
		return p.script.toObject(type(obj))&lt;br /&gt;
	end,[&amp;#039;typeof/doc&amp;#039;] = {},&lt;br /&gt;
	&lt;br /&gt;
	equals = function(op1, op2)&lt;br /&gt;
		local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
		return (obj1 == obj2) and 1 or 0&lt;br /&gt;
	end,[&amp;#039;equals/doc&amp;#039;] = {},&lt;br /&gt;
	&lt;br /&gt;
	isTrue = function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		local val_check = tonumber(tostring(obj.value))&lt;br /&gt;
		if val_check then&lt;br /&gt;
			return (math.abs(val_check) &amp;gt; 1e-14) and 1 or 0&lt;br /&gt;
		end&lt;br /&gt;
		return obj.value and 1 or 0&lt;br /&gt;
	end,[&amp;#039;isTrue/doc&amp;#039;] = {},&lt;br /&gt;
	&lt;br /&gt;
	isFalse = function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		local val_check = tonumber(tostring(obj.value))&lt;br /&gt;
		if val_check then&lt;br /&gt;
			return (math.abs(val_check) &amp;gt; 1e-14) and 0 or 1&lt;br /&gt;
		end&lt;br /&gt;
		return obj.value and 0 or 1&lt;br /&gt;
	end,[&amp;#039;isFalse/doc&amp;#039;] = {},&lt;br /&gt;
	&lt;br /&gt;
	abs = function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		if type(obj.value) == type(0) then&lt;br /&gt;
			return math.abs(tonumber(tostring(obj.value)))&lt;br /&gt;
		end&lt;br /&gt;
		return obj.value and 1 or 0&lt;br /&gt;
	end,&lt;br /&gt;
	floor=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.floor(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	ceil=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.ceil(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	round=function(op1,op2,op3)&lt;br /&gt;
		local number = p.script.toObject(op1).value&lt;br /&gt;
		local digs = p.script.toObject(op2).value&lt;br /&gt;
		local base = p.script.toObject(op3).value&lt;br /&gt;
		local round_rad = math.pow(base,digs)&lt;br /&gt;
		local check_number = number * round_rad&lt;br /&gt;
		check_number = check_number + 0.5&lt;br /&gt;
		return math.floor( check_number ) / round_rad&lt;br /&gt;
	end,&lt;br /&gt;
	div=function(op1,op2)&lt;br /&gt;
		local obj1 = p.script.toObject(op1)&lt;br /&gt;
		local obj2 = p.script.toObject(op2)&lt;br /&gt;
		return obj1.value / obj2.value&lt;br /&gt;
	end,&lt;br /&gt;
	re=function(z) return tonumber(tostring(z)) or z end,&lt;br /&gt;
	im=function(z) return 0 end,&lt;br /&gt;
	nonRealPart=function(z) return 0 end,&lt;br /&gt;
	conjugate=function(z) return z end,&lt;br /&gt;
	inverse=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return 1 / obj.value&lt;br /&gt;
	end,&lt;br /&gt;
	tovector=function(z)&lt;br /&gt;
		return {z}&lt;br /&gt;
	end,&lt;br /&gt;
	trunc=function(op, digs)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		local n = tonumber(tostring(digs))&lt;br /&gt;
		return sollib._trunc(obj.value, n)&lt;br /&gt;
	end,&lt;br /&gt;
	digits=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		if type(obj.value) == type(&amp;quot;string&amp;quot;) then return mw.ustring.len(obj.value) end&lt;br /&gt;
		local value = math.floor(math.abs(obj.value))&lt;br /&gt;
		return tostring(value):len()&lt;br /&gt;
	end,&lt;br /&gt;
	sqrt=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.sqrt(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	sin=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.sin(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	cos=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.cos(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	tan=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.tan(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	cot=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return 1 / math.tan(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	asin=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.asin(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	acos=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.acos(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	atan=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.atan(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	atan2=function(op1,op2)&lt;br /&gt;
		local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
		return math.atan2(obj1.value, obj2.value)&lt;br /&gt;
	end,&lt;br /&gt;
	acot=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.atan(1/obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	sinh=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.sinh(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	cosh=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.cosh(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	tanh=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.tanh(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	coth=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.cosh(obj.value) / math.sinh(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	asinh=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.log( obj.value + math.sqrt( obj.value * obj.value + 1 ) )&lt;br /&gt;
	end,&lt;br /&gt;
	acosh=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.log( obj.value + math.sqrt( obj.value * obj.value - 1 ) )&lt;br /&gt;
	end,&lt;br /&gt;
	atanh=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return 0.5 * math.log((1+obj.value)/(1-obj.value))&lt;br /&gt;
	end,&lt;br /&gt;
	atanh2=function(op1,op2)&lt;br /&gt;
		local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
		return p.script.atanh(obj1.value / obj2.value)&lt;br /&gt;
	end,&lt;br /&gt;
	acoth=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return 0.5 * math.log((obj.value+1)/(obj.value-1))&lt;br /&gt;
	end,&lt;br /&gt;
	exp=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.exp(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	elog=function(op)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		return math.log(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	log=function(op,basez)&lt;br /&gt;
		local obj = p.script.toObject(op)&lt;br /&gt;
		if basez~=nil then return p.script.elog(basez) * p.script.inverse(p.script.elog(op)) end&lt;br /&gt;
		return math.log(obj.value)&lt;br /&gt;
	end,&lt;br /&gt;
	pow=function(op1,op2)&lt;br /&gt;
		local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
		return math.pow(obj1.value, obj2.value)&lt;br /&gt;
	end,&lt;br /&gt;
	random=function(op1,op2)&lt;br /&gt;
		local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
		if obj1.value ==nil and obj2.value == nil then return math.random() end&lt;br /&gt;
		if obj1.value ==nil then return math.random(obj2.value) end&lt;br /&gt;
		if obj2.value == nil then return math.random(obj1.value) end&lt;br /&gt;
		return math.random(obj1.value, obj2.value)&lt;br /&gt;
	end,&lt;br /&gt;
	isReal=function(z) return not not tonumber(tostring(z)) end,&lt;br /&gt;
	toObject = function(obj)&lt;br /&gt;
		if type(obj) == type({}) and obj.isObject then return obj end&lt;br /&gt;
		return p.script.new(obj)&lt;br /&gt;
	end,&lt;br /&gt;
	loadObject = function(obj)&lt;br /&gt;
		if type(obj) == type({}) and obj.isObject then return obj end&lt;br /&gt;
		return tonumber(obj)&lt;br /&gt;
	end,&lt;br /&gt;
	ObjectMeta = {&lt;br /&gt;
		__add = function (op1, op2) &lt;br /&gt;
			local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
			if type(obj1.value) == type(&amp;quot;string&amp;quot;) or type(obj2.value) == type(&amp;quot;string&amp;quot;) then&lt;br /&gt;
				return p.script.new(tostring(op1.value) .. tostring(obj2.value))&lt;br /&gt;
			elseif type(obj1.value) == type(0) and type(obj2.value) == type(0) then&lt;br /&gt;
				return p.script.new(obj1.value + obj2.value)&lt;br /&gt;
			elseif type(obj1.value) == type({}) and type(obj2.value) == type({}) then&lt;br /&gt;
				local result = {}&lt;br /&gt;
				for k,v in pairs(obj1.value) do result[k] = v end&lt;br /&gt;
				for k,v in pairs(obj2.value) do result[k] = result[k] or v end&lt;br /&gt;
				return p.script.new(result)&lt;br /&gt;
			end&lt;br /&gt;
			return p.script.new(obj1.value + obj2.value)&lt;br /&gt;
		end,&lt;br /&gt;
		__sub = function (op1, op2) &lt;br /&gt;
			local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
			if type(obj1.value) == type(&amp;quot;string&amp;quot;) or type(obj2.value) == type(&amp;quot;string&amp;quot;) then&lt;br /&gt;
				local str1, str2 = tostring(obj1.value), tostring(obj2.value)&lt;br /&gt;
				if obj1.value == obj2.value then return 0 end&lt;br /&gt;
				local keys = {str1, str2}&lt;br /&gt;
				table.sort(keys)&lt;br /&gt;
				return (keys[1] == str1) and -1 or 1&lt;br /&gt;
			elseif type(obj1.value) == type(true) or type(obj2.value) == type(true) then&lt;br /&gt;
				local bool1, bool2 = (not obj1.value) and 0 or 1, (not obj2.value) and 0 or 1&lt;br /&gt;
				return math.max(bool1 - bool2, 0)&lt;br /&gt;
			elseif type(obj1.value) == type(nil) or type(obj2.value) == type(nil) then&lt;br /&gt;
				if obj1.value == obj2.value then return 0 end&lt;br /&gt;
				return (obj1.value == nil) and -1 or 1&lt;br /&gt;
			end&lt;br /&gt;
			if obj1.value == obj2.value then return 0 end&lt;br /&gt;
			return p.script.new(obj1.value - obj2.value)&lt;br /&gt;
		end,&lt;br /&gt;
		__mul = function (op1, op2) &lt;br /&gt;
			local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
			return p.script.new(obj1.value * obj2.value)&lt;br /&gt;
		end,&lt;br /&gt;
		__div = function (op1, op2) &lt;br /&gt;
			local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
			return p.script.new(obj1.value / obj2.value)&lt;br /&gt;
		end,&lt;br /&gt;
		__mod = function (op1, op2) &lt;br /&gt;
			local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
			return p.script.new(obj1.value % obj2.value)&lt;br /&gt;
		end,&lt;br /&gt;
		__tostring = function (obj) &lt;br /&gt;
			local this = p.script.toObject(obj)&lt;br /&gt;
			local typeof = p.script.typeof(this)&lt;br /&gt;
			if typeof == &amp;#039;array&amp;#039; then&lt;br /&gt;
				local result = &amp;#039;&amp;#039;&lt;br /&gt;
				for i=1,#(this.value) do&lt;br /&gt;
					if result ~= &amp;#039;&amp;#039; then result = result .. &amp;#039;, &amp;#039; end&lt;br /&gt;
					result = result .. tostring(this.value[i] or &amp;#039;nil&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
				return &amp;#039;{&amp;#039; .. result .. &amp;#039;}&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			return tostring(this.value or &amp;#039;nil&amp;#039;)&lt;br /&gt;
		end,&lt;br /&gt;
		__unm = function (obj)&lt;br /&gt;
			local this = p.script.new(obj)&lt;br /&gt;
			this.value = -this.value&lt;br /&gt;
			return this&lt;br /&gt;
		end,&lt;br /&gt;
		__eq = function (op1, op2)&lt;br /&gt;
			local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
			return obj1.value == obj2.value&lt;br /&gt;
		end,&lt;br /&gt;
		__lt = function (op1, op2)&lt;br /&gt;
			local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
			return obj1.value &amp;lt; obj2.value&lt;br /&gt;
		end,&lt;br /&gt;
		__le = function (op1, op2)&lt;br /&gt;
			local obj1, obj2 = p.script.toObject(op1), p.script.toObject(op2)&lt;br /&gt;
			return obj1.value &amp;lt;= obj2.value&lt;br /&gt;
		end,&lt;br /&gt;
	},&lt;br /&gt;
	init = function()&lt;br /&gt;
		p.script[&amp;#039;true&amp;#039;] = 1;p.script[&amp;#039;true/doc&amp;#039;]={}&lt;br /&gt;
		p.script[&amp;#039;false&amp;#039;] = 0;p.script[&amp;#039;false/doc&amp;#039;]={}&lt;br /&gt;
		p.script[&amp;#039;nil&amp;#039;] = p.script.toObject()&lt;br /&gt;
		p.script.emptyString = p.script.new(&amp;quot;&amp;quot;);p.script[&amp;#039;emptyString/doc&amp;#039;]={}&lt;br /&gt;
		p.script.numberType = sollib._numberType&lt;br /&gt;
		p.script.constructor = p.script.loadObject&lt;br /&gt;
		return p.script&lt;br /&gt;
	end&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.run(script)&lt;br /&gt;
	local code = script&lt;br /&gt;
	if type(script) == type({}) then code = (script.args or script)[1] &lt;br /&gt;
	elseif type(script) ~= type(&amp;quot;string&amp;quot;) then tostring(code) end&lt;br /&gt;
	local scriptlib = p.script.init()&lt;br /&gt;
	return calclib.calc(code, scriptlib, scriptlib.constructor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.runScope(script)&lt;br /&gt;
	local code = script&lt;br /&gt;
	if type(script) == type({}) then code = (script.args or script)[1] &lt;br /&gt;
	elseif type(script) ~= type(&amp;quot;string&amp;quot;) then tostring(code) end&lt;br /&gt;
	local scriptlib = p.script.init()&lt;br /&gt;
	return calclib.calc(&amp;quot;scope←newScope(nil);mainFunction:scope↦&amp;quot;..((mw.text.trim(code)==&amp;#039;&amp;#039;) and &amp;#039;nil&amp;#039; or code)..&amp;quot;;(scope)&amp;quot;, scriptlib, scriptlib.constructor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;A2569875</name></author>
	</entry>
</feed>