OpenComputerScripts/util.lua

95 lines
2.1 KiB
Lua

local component=require("component")
local serialization = require("serialization")
local filesystem=require("filesystem")
function getWorldTimestamp()
local name=os.tmpname()
local f=io.open(name,"w")
f:close()
local ts=filesystem.lastModified(name)
filesystem.remove(name)
return ts
end
function getWorldTimeInfo(gmt)
if(gmt==nil) then gmt=0 end
local x=getWorldTimestamp()+gmt*3600*1000
local t=os.date("*t",math.ceil(x/1000))
t.msec=x%1000
t.unix=math.ceil(x/1000)
t.stamp=x
return t
end
function getWorldDate(gmt)
local t=getWorldTimeInfo(gmt)
return t.year,t.month,t.day,t.hour,t.min,t.sec,t.msec
end
function serialize(value)
return serialization.serialize(value)
end
function unserialize(str)
return serialization.unserialize(str)
end
function getTableSize(t)
local cnt=0
for k in pairs(t) do
cnt=cnt+1
end
return cnt
end
function isTableEmpty(t)
return getTableSize(t) == 0
end
function rawproxy(id)
return component.proxy(id)
end
function proxy(componentType,beginWith)
local t=component.list(componentType)
local sz=getTableSize(t)
if(sz==0) then
print("proxy: Query List is Empty")
return nil
elseif(sz==1) then
for k in pairs(t) do
return rawproxy(k)
end
else
if(beginWith == nil) then
print("proxy: beginWith value required.")
return nil
end
if(type(beginWith) ~= "string") then
print("proxy: beginWith is not string")
return nil
end
local bsz=string.len(beginWith)
local traw
local cnt=0
for k in pairs(t) do
if(string.sub(k,1,bsz) == beginWith) then
if(cnt==0) then
traw=rawproxy(k)
cnt=1
else
print("proxy: Found more than 1 target.")
return nil
end
end
end
if(cnt==0) then
print("proxy: Not found with beginWith value")
return nil
else
return traw
end
end
end