diff --git a/lib/prpw.lua b/lib/prpw.lua new file mode 100644 index 0000000..e573d41 --- /dev/null +++ b/lib/prpw.lua @@ -0,0 +1,85 @@ +math.randomseed(os.time()) +env = {} + +function env.loop() + local command = env.stringSplit(io.read()," ",3,"\\") + env.run(command) + print("") +end + +function env.run(command) + local func = loadfile(basepath .. "/cmd/" ..command[1].. ".lua") + func = func() + env.rtn = func(command) + return env.rtn +end + +function env.xmlFindTags(xml,tag) + local rtn = {} + for i,v in ipairs(xml["children"]) do + if v.tag == tag then + table.insert(rtn,v) + end + end + return rtn +end + +function env.stringDate(d) + return d.year .. "." ..env.padNumber(d.month,2).. "." ..env.padNumber(d.day,2).. "_" ..env.padNumber(d.hour,2).. ":" ..env.padNumber(d.min,2).. ":" ..env.padNumber(d.sec,2) +end + +function env.makeUUID() + local template ='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' + return string.gsub(template, '[xy]', function (c) + local v = (c == 'x') and math.random(0, 0x0f) or math.random(8, 0x0b) + return string.format('%x', v) + end) +end + +function env.stringSplit(str, sep, limit, esc) + local length = string.len(str) + local index = 1 + local c + local escaped = false + local entry = "" + local rtn = {} + local rtnLength = 0 + + while index <= length do + c = string.sub(str,index,index) + if escaped == false then + if esc ~= nil then + if c == esc then + escaped = true + else + if c == sep then + if limit > -1 and rtnLength < limit then + table.insert(rtn,entry) + entry = "" + rtnLength = rtnLength + 1 + else + entry = entry .. c + end + else + entry = entry .. c + end + end + end + else + entry = entry .. c + end + index = index + 1 + end + table.insert(rtn,entry) + return rtn +end + +function env.padNumber(nr,len) + nr = tostring(nr) + local curLen = string.len(nr) + while curLen < len do + nr = "0" .. nr + curLen = curLen + 1 + end + return nr +end diff --git a/prpw b/prpw index 7fb8c1d..f36d4a8 100755 --- a/prpw +++ b/prpw @@ -1,10 +1,9 @@ #!/usr/bin/env lua -local basepath = (debug.getinfo(1, "S").source:sub(2):match("(.*[/\\])") or "./"):sub(1,-2) -env = {} +basepath = (debug.getinfo(1, "S").source:sub(2):match("(.*[/\\])") or "./"):sub(1,-2) local function main(arg) package.path = basepath .. "/lib/?.lua;" .. basepath .. "/lib/?/main.lua;" .. package.path - math.randomseed(os.time()) + require("prpw") env.run({"autorun"}) if #arg > 0 then @@ -22,86 +21,4 @@ local function main(arg) end end -function env.loop() - local command = env.stringSplit(io.read()," ",3,"\\") - env.run(command) - print("") -end - -function env.run(command) - local func = loadfile(basepath .. "/cmd/" ..command[1].. ".lua") - func = func() - env.rtn = func(command) -end - -function env.xmlFindTags(xml,tag) - local rtn = {} - for i,v in ipairs(xml["children"]) do - if v.tag == tag then - table.insert(rtn,v) - end - end - return rtn -end - -function env.stringDate(d) - return d.year .. "." ..env.padNumber(d.month,2).. "." ..env.padNumber(d.day,2).. "_" ..env.padNumber(d.hour,2).. ":" ..env.padNumber(d.min,2).. ":" ..env.padNumber(d.sec,2) -end - -function env.makeUUID() - local template ='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' - return string.gsub(template, '[xy]', function (c) - local v = (c == 'x') and math.random(0, 0x0f) or math.random(8, 0x0b) - return string.format('%x', v) - end) -end - -function env.stringSplit(str, sep, limit, esc) - local length = string.len(str) - local index = 1 - local c - local escaped = false - local entry = "" - local rtn = {} - local rtnLength = 0 - - while index <= length do - c = string.sub(str,index,index) - if escaped == false then - if esc ~= nil then - if c == esc then - escaped = true - else - if c == sep then - if limit > -1 and rtnLength < limit then - table.insert(rtn,entry) - entry = "" - rtnLength = rtnLength + 1 - else - entry = entry .. c - end - else - entry = entry .. c - end - end - end - else - entry = entry .. c - end - index = index + 1 - end - table.insert(rtn,entry) - return rtn -end - -function env.padNumber(nr,len) - nr = tostring(nr) - local curLen = string.len(nr) - while curLen < len do - nr = "0" .. nr - curLen = curLen + 1 - end - return nr -end - main(arg)