added wolf's code
[swamp-bikeopera:code.git] / lib / std.lua
1 module("std", package.seeall)
2
3
4 ---
5 -- @param command
6 function stdout(command)
7   local f = io.popen(command)
8   local l = f:read("*a")
9   f:close()
10
11 return l
12 end
13
14
15 ---
16 --@param num 
17 function round(num, idp)
18   local mult = 10^(idp or 0)
19   return math.floor(num * mult + 0.5) / mult
20 end
21
22 ---
23 function trim(s)
24  if s then
25     s = string.gsub(s, "^%s*(.-)%s*$", "%1")
26     if string.len(s) > 0 then
27        return s
28     end
29  end
30  return false
31 end -- end trim
32
33
34 ---
35 function split(str, pat)
36    local t = {}
37    local fpat = "(.-)" .. pat
38    local last_end = 1
39    local s, e, cap = str:find(fpat, 1)
40    while s do
41       if s ~= 1 or cap ~= "" then
42          table.insert(t,cap)
43       end
44       last_end = e+1
45       s, e, cap = str:find(fpat, last_end)
46    end
47    if last_end <= #str then
48       cap = str:sub(last_end)
49       table.insert(t, cap)
50    end
51    return t
52 end
53
54 ---
55 function dumptable(t, indent)
56   local indent=indent or ''
57   for key,value in pairs(t) do
58     io.write(indent,'[',tostring(key),']')
59     if type(value)=="table" then io.write(':\n') dumptable(value,indent..'\t')
60     else io.write(' = ',tostring(value),'\n') end
61   end
62 end -- end showtable
63
64
65 ---
66 function normalize_string(s)
67
68 s = string.gsub(s, "%s%s", " ") 
69
70 return s
71 end
72
73
74 ---
75 function iterate_string(s)
76 local word_t
77 for word in string.gmatch(s, "(%w+)") do
78   table.insert(word_t, word)
79 end
80
81 return word_t
82 end