updates for splitting up assets and code etc
[swamp-bikeopera:code.git] / lib / std.lua
1 -- Swamp Bike Opera embedded system for Kaffe Matthews 
2 -- Copyright (C) 2012 Wolfgang Hauptfleisch, Dave Griffiths
3 --
4 -- This program is free software: you can redistribute it and/or modify
5 -- it under the terms of the GNU General Public License as published by
6 -- the Free Software Foundation, either version 3 of the License, or
7 -- (at your option) any later version.
8 --
9 -- This program is distributed in the hope that it will be useful,
10 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 -- GNU General Public License for more details.
13 --
14 -- You should have received a copy of the GNU General Public License
15 -- along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17 module("std", package.seeall)
18
19
20 ---
21 -- @param command
22 function stdout(command)
23   local f = io.popen(command)
24   local l = f:read("*a")
25   f:close()
26
27 return l
28 end
29
30
31 ---
32 --@param num 
33 function round(num, idp)
34   local mult = 10^(idp or 0)
35   return math.floor(num * mult + 0.5) / mult
36 end
37
38 ---
39 function trim(s)
40  if s then
41     s = string.gsub(s, "^%s*(.-)%s*$", "%1")
42     if string.len(s) > 0 then
43        return s
44     end
45  end
46  return false
47 end -- end trim
48
49
50 ---
51 function split(str, pat)
52    local t = {}
53    local fpat = "(.-)" .. pat
54    local last_end = 1
55    local s, e, cap = str:find(fpat, 1)
56    while s do
57       if s ~= 1 or cap ~= "" then
58          table.insert(t,cap)
59       end
60       last_end = e+1
61       s, e, cap = str:find(fpat, last_end)
62    end
63    if last_end <= #str then
64       cap = str:sub(last_end)
65       table.insert(t, cap)
66    end
67    return t
68 end
69
70 ---
71 function dumptable(t, indent)
72   local indent=indent or ''
73   for key,value in pairs(t) do
74     io.write(indent,'[',tostring(key),']')
75     if type(value)=="table" then io.write(':\n') dumptable(value,indent..'\t')
76     else io.write(' = ',tostring(value),'\n') end
77   end
78 end -- end showtable
79
80
81 ---
82 function normalize_string(s)
83
84 s = string.gsub(s, "%s%s", " ") 
85
86 return s
87 end
88
89
90 ---
91 function iterate_string(s)
92 local word_t
93 for word in string.gmatch(s, "(%w+)") do
94   table.insert(word_t, word)
95 end
96
97 return word_t
98 end