starlit  Diff

Differences From Artifact [f85992f960]:

To Artifact [06631e46d8]:


391
392
393
394
395
396
397

398
399
400
401
402
403
404
405

406

407
408
409
410
411

412
413
414
415
416
417
418
419
420
421
422
423
		for cat, vals in pairs(b) do
			if not new[cat] then
				new[cat] = lib.tbl.copy(vals)
			else
				local f = fields[cat].op
				for k,v in pairs(vals) do
					local n = f(new[cat][k], v, 1)

					new[cat][k] = n > 0 and n or nil
				end
			end
		end
		return new
	end;

	__mul = function(x,n)

		local new = fab {}

		for cat, vals in pairs(x) do
			new[cat] = {}
			local f = fields[cat].op
			for k,v in pairs(vals) do
				local num = f(v,nil,n)

				new[cat][k] = num > 0 and num or nil
			end
		end
		return new
	end;

	__div = function(x,n)
		return x * (1/n)
	end;
}

starlit.type.fab = fab







>
|







>

>





>
|











391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
		for cat, vals in pairs(b) do
			if not new[cat] then
				new[cat] = lib.tbl.copy(vals)
			else
				local f = fields[cat].op
				for k,v in pairs(vals) do
					local n = f(new[cat][k], v, 1)
					if type(n) == 'number' and n < 0 then n = nil end
					new[cat][k] = n
				end
			end
		end
		return new
	end;

	__mul = function(x,n)
		if n == 1 then return fab.clone(x) end
		local new = fab {}
		if n == 0 then return new end
		for cat, vals in pairs(x) do
			new[cat] = {}
			local f = fields[cat].op
			for k,v in pairs(vals) do
				local num = f(v,nil,n)
				if type(num) == 'number' and n < 0 then n = nil end
				new[cat][k] = num
			end
		end
		return new
	end;

	__div = function(x,n)
		return x * (1/n)
	end;
}

starlit.type.fab = fab