diff options
-rw-r--r-- | CMakeLists.txt | 59 | ||||
-rw-r--r-- | src/yuescript/yuescript.cpp | 6 | ||||
-rw-r--r-- | yuescript-dev-1.rockspec | 2 |
3 files changed, 46 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 2de475c..fc2c234 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
@@ -1,27 +1,50 @@ | |||
1 | project(yue CXX) | 1 | project(yue CXX) |
2 | cmake_minimum_required(VERSION 3.1) | 2 | cmake_minimum_required(VERSION 3.1) |
3 | 3 | ||
4 | set(LUA_LIBDIR ${LUA_INCDIR}/../lib " " ${LUA_INCDIR}/../../lib) | 4 | set(LUA_LIBDIR ${LUA_INCDIR}/../lib ${LUA_INCDIR}/../../lib) |
5 | set(LUA_INCLUDE_DIR "${LUA_INCDIR}") | ||
6 | |||
7 | get_filename_component(LUA_EXEC_NAME ${LUA} NAME) | ||
8 | if (LUA_EXEC_NAME STREQUAL "luajit") | ||
9 | find_library(LUA_LIBRARIES | ||
10 | NAMES luajit libluajit | ||
11 | PATHS ${LUA_LIBDIR} | ||
12 | NO_DEFAULT_PATH) | ||
13 | elseif (LUA_EXEC_NAME MATCHES "lua5\.4" OR LUA_EXEC_NAME MATCHES "lua54") | ||
14 | find_library(LUA_LIBRARIES | ||
15 | NAMES lua54 lua5.4 liblua54 liblua5.4 lua liblua | ||
16 | PATHS ${LUA_LIBDIR} | ||
17 | NO_DEFAULT_PATH) | ||
18 | elseif (LUA_EXEC_NAME MATCHES "lua5\.3" OR LUA_EXEC_NAME MATCHES "lua53") | ||
19 | find_library(LUA_LIBRARIES | ||
20 | NAMES lua53 lua5.3 liblua53 liblua5.3 lua liblua | ||
21 | PATHS ${LUA_LIBDIR} | ||
22 | NO_DEFAULT_PATH) | ||
23 | elseif (LUA_EXEC_NAME MATCHES "lua5\.2" OR LUA_EXEC_NAME MATCHES "lua52") | ||
24 | find_library(LUA_LIBRARIES | ||
25 | NAMES lua52 lua5.2 liblua52 liblua5.2 lua liblua | ||
26 | PATHS ${LUA_LIBDIR} | ||
27 | NO_DEFAULT_PATH) | ||
28 | elseif (LUA_EXEC_NAME MATCHES "lua5\.1" OR LUA_EXEC_NAME MATCHES "lua51") | ||
29 | find_library(LUA_LIBRARIES | ||
30 | NAMES lua51 lua5.1 liblua51 liblua5.1 lua liblua | ||
31 | PATHS ${LUA_LIBDIR} | ||
32 | NO_DEFAULT_PATH) | ||
33 | else () | ||
34 | find_library(LUA_LIBRARIES | ||
35 | NAMES lua liblua | ||
36 | PATHS ${LUA_LIBDIR} | ||
37 | NO_DEFAULT_PATH) | ||
38 | endif() | ||
5 | 39 | ||
6 | find_package(Lua) | 40 | if (LUA_LIBRARIES MATCHES "LUA_LIBRARIES-NOTFOUND") |
7 | if (LUA_FOUND) | 41 | find_package(Lua) |
8 | set(LUA_LIBRARIES "${LUA_LIBRARY}") | 42 | if (LUA_FOUND) |
43 | set(LUA_LIBRARIES "${LUA_LIBRARY}") | ||
44 | endif() | ||
9 | else () | 45 | else () |
10 | message(STATUS "Lua: using information from luarocks") | 46 | message(STATUS "Lua: using information from luarocks") |
11 | set(LUA_INCLUDE_DIR "${LUA_INCDIR}") | 47 | endif() |
12 | get_filename_component(LUA_EXEC_NAME ${LUA} NAME_WE) | ||
13 | if (LUA_EXEC_NAME STREQUAL "luajit") | ||
14 | find_library(LUA_LIBRARIES | ||
15 | NAMES luajit libluajit | ||
16 | PATHS ${LUA_LIBDIR} | ||
17 | NO_DEFAULT_PATH) | ||
18 | elseif () | ||
19 | find_library(LUA_LIBRARIES | ||
20 | NAMES lua lua54 lua53 lua52 lua51 liblua liblua54 liblua53 liblua52 liblua51 liblua5.4 liblua5.3 liblua5.2 liblua5.1 | ||
21 | PATHS ${LUA_LIBDIR} | ||
22 | NO_DEFAULT_PATH) | ||
23 | endif() | ||
24 | endif() | ||
25 | 48 | ||
26 | message(STATUS "Lua: " ${LUA}) | 49 | message(STATUS "Lua: " ${LUA}) |
27 | message(STATUS "Lua include: " ${LUA_INCLUDE_DIR}) | 50 | message(STATUS "Lua include: " ${LUA_INCLUDE_DIR}) |
diff --git a/src/yuescript/yuescript.cpp b/src/yuescript/yuescript.cpp index 20fa258..ed09aaa 100644 --- a/src/yuescript/yuescript.cpp +++ b/src/yuescript/yuescript.cpp | |||
@@ -161,7 +161,7 @@ struct yue_stack { | |||
161 | static int yuetoast(lua_State* L) { | 161 | static int yuetoast(lua_State* L) { |
162 | size_t size = 0; | 162 | size_t size = 0; |
163 | const char* input = luaL_checklstring(L, 1, &size); | 163 | const char* input = luaL_checklstring(L, 1, &size); |
164 | int flattenLevel = 2; | 164 | int flattenLevel = 0; |
165 | if (lua_isnoneornil(L, 2) == 0) { | 165 | if (lua_isnoneornil(L, 2) == 0) { |
166 | flattenLevel = static_cast<int>(luaL_checkinteger(L, 2)); | 166 | flattenLevel = static_cast<int>(luaL_checkinteger(L, 2)); |
167 | flattenLevel = std::max(std::min(2, flattenLevel), 0); | 167 | flattenLevel = std::max(std::min(2, flattenLevel), 0); |
@@ -270,8 +270,10 @@ static int yuetoast(lua_State* L) { | |||
270 | lua_pushinteger(L, node->m_begin.m_col); | 270 | lua_pushinteger(L, node->m_begin.m_col); |
271 | lua_rawseti(L, -2, 3); | 271 | lua_rawseti(L, -2, 3); |
272 | for (int i = count, j = 4; i >= 1; i--, j++) { | 272 | for (int i = count, j = 4; i >= 1; i--, j++) { |
273 | lua_rawgeti(L, tableIndex, len); | 273 | lua_rawgeti(L, tableIndex, len - i + 1); |
274 | lua_rawseti(L, -2, j); | 274 | lua_rawseti(L, -2, j); |
275 | } | ||
276 | for (int i = 1; i <= count; i++) { | ||
275 | lua_pushnil(L); | 277 | lua_pushnil(L); |
276 | lua_rawseti(L, tableIndex, len); | 278 | lua_rawseti(L, tableIndex, len); |
277 | len--; | 279 | len--; |
diff --git a/yuescript-dev-1.rockspec b/yuescript-dev-1.rockspec index bcf4933..397254b 100644 --- a/yuescript-dev-1.rockspec +++ b/yuescript-dev-1.rockspec | |||
@@ -19,8 +19,8 @@ dependencies = { | |||
19 | build = { | 19 | build = { |
20 | type = "cmake", | 20 | type = "cmake", |
21 | variables = { | 21 | variables = { |
22 | LUA_INCDIR = "$(LUA_INCDIR)", | ||
23 | LUA = "$(LUA)", | 22 | LUA = "$(LUA)", |
23 | LUA_INCDIR = "$(LUA_INCDIR)", | ||
24 | CMAKE_BUILD_TYPE="Release" | 24 | CMAKE_BUILD_TYPE="Release" |
25 | }, | 25 | }, |
26 | install = { | 26 | install = { |