[sosi2osm] 11/30: Move the parsing code to a seperate lua function
Ruben Undheim
rubund-guest at moszumanska.debian.org
Sat Oct 4 13:07:55 UTC 2014
This is an automated email from the git hooks/post-receive script.
rubund-guest pushed a commit to branch upstream
in repository sosi2osm.
commit 65421309a89bdb38bd5bca89ac1961b1ca2274e8
Author: Knut Karevoll <gnonthgol at gmail.com>
Date: Wed Oct 9 15:40:50 2013 +0200
Move the parsing code to a seperate lua function
---
lua/default.lua | 29 ++---------------------------
lua/{default.lua => sosi2osm.lua} | 21 +++++++--------------
tag.cpp | 5 ++++-
3 files changed, 13 insertions(+), 42 deletions(-)
diff --git a/lua/default.lua b/lua/default.lua
old mode 100755
new mode 100644
index 9c22d17..31e9e12
--- a/lua/default.lua
+++ b/lua/default.lua
@@ -1,35 +1,10 @@
-#! /usr/bin/env lua
-
out = {}
-for i, line in pairs(info) do
- indent = 0
- while line:byte() == 46 do
- line = line:sub(2)
- indent = indent +1
- end
-
- if indent == 1 then line = line:sub(1, -2) end
-
- tokens = {}
- for x in string.gmatch(line, "(%S+)") do
- if #tokens > 0 and string.byte(tokens[#tokens]) == 34 then
- tokens[#tokens] = table.concat({tokens[#tokens], x}, " ")
- else
- tokens[#tokens+1] = x
- end
-
- if #tokens[#tokens] > 1
- and string.byte(tokens[#tokens], 1) == 34
- and string.byte(tokens[#tokens], -1) == 34 then
- tokens[#tokens] = tokens[#tokens]:sub(2, -2)
- end
- end
-
+for i, indent, tokens in tokens, info, 0 do
if #tokens == 2 then
out[tokens[1]] = tokens[2]
elseif #tokens > 2 then
- out[tokens[1]] = table.concat(tokens, " ", 2)
+ out[tokens[1]] = table.concat(tokens, "; ", 2)
end
end
diff --git a/lua/default.lua b/lua/sosi2osm.lua
old mode 100755
new mode 100644
similarity index 71%
copy from lua/default.lua
copy to lua/sosi2osm.lua
index 9c22d17..984ebc8
--- a/lua/default.lua
+++ b/lua/sosi2osm.lua
@@ -1,9 +1,10 @@
-#! /usr/bin/env lua
+function tokens(state, i)
+ i = i+1
+ local line = info[i]
-out = {}
+ if line == nil then return end
-for i, line in pairs(info) do
- indent = 0
+ local indent = 0
while line:byte() == 46 do
line = line:sub(2)
indent = indent +1
@@ -11,7 +12,7 @@ for i, line in pairs(info) do
if indent == 1 then line = line:sub(1, -2) end
- tokens = {}
+ local tokens = {}
for x in string.gmatch(line, "(%S+)") do
if #tokens > 0 and string.byte(tokens[#tokens]) == 34 then
tokens[#tokens] = table.concat({tokens[#tokens], x}, " ")
@@ -25,13 +26,5 @@ for i, line in pairs(info) do
tokens[#tokens] = tokens[#tokens]:sub(2, -2)
end
end
-
- if #tokens == 2 then
- out[tokens[1]] = tokens[2]
- elseif #tokens > 2 then
- out[tokens[1]] = table.concat(tokens, " ", 2)
- end
+ return i, indent, tokens
end
-
-return out
-
diff --git a/tag.cpp b/tag.cpp
index 3f62fda..74af559 100644
--- a/tag.cpp
+++ b/tag.cpp
@@ -34,12 +34,15 @@ lua_State *state;
void loadLua(char* filename) {
state = luaL_newstate();
luaL_openlibs(state);
- int r = luaL_loadfile (state, filename);
+ int r = luaL_loadfile(state, filename);
if (r) {
fprintf(stderr, "Failed to load lua file %s\n", filename);
exit(1);
}
+ luaL_loadfile(state, "lua/sosi2osm.lua");
+ lua_call(state, 0, 0);
+
lua_setglobal(state, "getTagsFromInfoTable");
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/sosi2osm.git
More information about the Pkg-grass-devel
mailing list