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
|