Commit Graph

801 Commits

Author SHA1 Message Date
Enyby
6f9395f3aa Fix gmatch for pass testsuites
Test suites from lua.org:
```
-- tests for gmatch
local a = 0
for i in string.gmatch('abcde', '()') do assert(i == a+1); a=i end
assert(a==6)

t = {n=0}
for w in string.gmatch("first second word", "%w+") do
      t.n=t.n+1; t[t.n] = w
end
assert(t[1] == "first" and t[2] == "second" and t[3] == "word")

t = {3, 6, 9}
for i in string.gmatch ("xuxx uu ppar r", "()(.)%2") do
  assert(i == table.remove(t, 1))
end
assert(#t == 0)

t = {}
for i,j in string.gmatch("13 14 10 = 11, 15= 16, 22=23", "(%d+)%s*=%s*(%d+)") do
  t[tonumber(i)] = tonumber(j)
end
a = 0
for k,v in pairs(t) do assert(k+1 == v+0); a=a+1 end
assert(a == 3)


-- tests for `%f' (`frontiers')

assert(string.gsub("aaa aa a aaa a", "%f[%w]a", "x") == "xaa xa x xaa x")
assert(string.gsub("[[]] [][] [[[[", "%f[[].", "x") == "x[]] x]x] x[[[")
assert(string.gsub("01abc45de3", "%f[%d]", ".") == ".01abc.45de.3")
assert(string.gsub("01abc45 de3x", "%f[%D]%w", ".") == "01.bc45 de3.")
assert(string.gsub("function", "%f[\1-\255]%w", ".") == ".unction")
assert(string.gsub("function", "%f[^\1-\255]", ".") == "function.")

assert(string.find("a", "%f[a]") == 1)
assert(string.find("a", "%f[^%z]") == 1)
assert(string.find("a", "%f[^%l]") == 2)
assert(string.find("aba", "%f[a%z]") == 3)
assert(string.find("aba", "%f[%z]") == 4)
assert(not string.find("aba", "%f[%l%z]"))
assert(not string.find("aba", "%f[^%l%z]"))

local i, e = string.find(" alo aalo allo", "%f[%S].-%f[%s].-%f[%S]")
assert(i == 2 and e == 5)
local k = string.match(" alo aalo allo", "%f[%S](.-%f[%s].-%f[%S])")
assert(k == 'alo ')

local a = {1, 5, 9, 14, 17,}
for k in string.gmatch("alo alo th02 is 1hat", "()%f[%w%d]") do
  assert(table.remove(a, 1) == k)
end
assert(#a == 0)
```
Code from lua:
https://www.lua.org/source/5.2/lstrlib.c.html
```
static int gmatch_aux (lua_State *L) {
  MatchState ms;
  size_t ls, lp;
  const char *s = lua_tolstring(L, lua_upvalueindex(1), &ls);
  const char *p = lua_tolstring(L, lua_upvalueindex(2), &lp);
  const char *src;
  ms.L = L;
  ms.matchdepth = MAXCCALLS;
  ms.src_init = s;
  ms.src_end = s+ls;
  ms.p_end = p + lp;
  for (src = s + (size_t)lua_tointeger(L, lua_upvalueindex(3));
       src <= ms.src_end;
       src++) {
    const char *e;
    ms.level = 0;
    lua_assert(ms.matchdepth == MAXCCALLS);
    if ((e = match(&ms, src, p)) != NULL) {
      lua_Integer newstart = e-s;
      if (e == src) newstart++;  /* empty match? go at least one position */
      lua_pushinteger(L, newstart);
      lua_replace(L, lua_upvalueindex(3));
      return push_captures(&ms, src, e);
    }
  }
  return 0;  /* not found */
}
```
On empty match need increase string offset.
2018-07-02 04:12:54 +03:00
James Roseborough
08dfdf1434 Fix os.time() conversions for pm times. 2015-04-28 23:06:40 +00:00
James Roseborough
4c3d0f9cdd Revert change that removed default traceback in debug builds. 2015-04-23 03:25:30 +00:00
James Roseborough
cdc33ab5b6 Add test to detect class load order issues and fix load order bug in lua string class. 2015-04-21 14:19:18 +00:00
James Roseborough
b545646922 Add utilities and sample code to load luaj in custom class loader for strong sandboxing, and use of orphaned threads. 2015-04-17 02:59:50 +00:00
James Roseborough
70f7859cee Fix links in javadoc 2015-04-16 04:56:03 +00:00
James Roseborough
f3fb9a7fde Fix javadoc comments. 2015-04-15 05:07:43 +00:00
James Roseborough
ef008fca5e Improve links in javadoc comments. 2015-04-15 05:02:57 +00:00
James Roseborough
1cbe99d3c5 Remove unused code 2015-04-15 03:18:59 +00:00
James Roseborough
b16c521f40 Fix message when disallowing plain setmetatable for non-tables. 2015-04-11 23:07:08 +00:00
James Roseborough
977353080c Turn off traceback by default. Use xpcall with debug.traceback instead. 2015-04-11 23:06:16 +00:00
James Roseborough
2c50d505eb Add SampleSandboxed.java sample code to illustrate sandboxing. 2015-04-06 05:18:52 +00:00
James Roseborough
57888814df Correct userdata usage in debug lib. 2015-04-05 21:02:10 +00:00
James Roseborough
878bf5ac78 Improve string lib factoring, javadoc on lib loading functions. 2015-04-05 16:19:13 +00:00
James Roseborough
591de13a46 Move hook function state to LuaThread.State class. 2015-03-22 16:54:56 +00:00
James Roseborough
450692d130 Add blank initializers to all Prototypes. 2015-03-22 16:54:12 +00:00
James Roseborough
d0e0fd4445 Add function to Print to print only stack. 2015-03-22 16:53:35 +00:00
James Roseborough
ba43e15e72 Add ReadOnlyTable and ReadWriteShadowTable, add sandboxing example code, make string metatable a real metatable. 2015-03-22 00:36:44 +00:00
James Roseborough
85381770a7 ix os.date("*t") to return hour in 24 hour format (fixes issue #45) 2015-03-18 16:16:13 +00:00
James Roseborough
87f19030cb Improve synchronization of debug library 2015-03-18 15:52:49 +00:00
James Roseborough
237c384d55 LuaScriptEngineFactory.getScriptEngine() now returns new instance of lua script engine for each call. 2015-03-18 15:07:56 +00:00
James Roseborough
cd9cdc496e Improve collection of orphaned coroutines when yielding from debug hook functions. 2015-03-18 03:16:05 +00:00
James Roseborough
31c13af7b4 Let os.getenv() return System.getenv() values first for JSE, then fall back to properties 2015-03-15 23:23:38 +00:00
James Roseborough
17ffcc6940 Fix aliasing issue for some multiple assignments from varargs return values 2015-03-15 23:23:06 +00:00
James Roseborough
4cf1dca264 Fix aliasing issue for some multiple assignments from varargs return values 2015-03-15 21:32:34 +00:00
James Roseborough
06a9ddbb88 Fix return value for table.remove() and table.insert() 2015-03-15 05:45:50 +00:00
James Roseborough
63e99c1500 List keyeq() and keyindex() methods as abstract on LuaTable.Entry. 2015-03-14 18:12:13 +00:00
James Roseborough
8c8c98fb00 Allow access to Java inner classes using lua field syntax. 2015-03-14 17:53:55 +00:00
James Roseborough
6bde11639c Let collectgarbage() behave as collectgarbage("collect") 2015-03-14 16:32:38 +00:00
James Roseborough
c8e4bea43d Improve string byte backing ownership, add gradle file, up version, improve build packaging rules. 2015-03-09 06:32:54 +00:00
James Roseborough
71500e7d8d Allow error() function to pass any lua object including non-strings. 2015-03-08 20:29:37 +00:00
James Roseborough
c5081c5de1 Convert anonymous classes to inner classes (gradle build support). 2015-03-08 20:22:30 +00:00
James Roseborough
c0e043403f Fix corner cases in _LE and _LEN metatag processing. 2014-10-27 13:52:26 +00:00
James Roseborough
384bf690c8 Make buffered stream classes package scope. 2014-07-04 04:59:10 +00:00
James Roseborough
54788cdc71 Fix line number reporting in debug stack traces (fixes issue #30). 2014-07-04 03:22:09 +00:00
James Roseborough
83d54e9d77 Coerce byte[] to LuaString, pass LuaValue as-is in CoerceJavaToLua.coerce(). 2014-07-04 02:58:44 +00:00
James Roseborough
7d06027154 Fix bug in Globals.UTF8Stream affecting loading from Readers. Add buffered input for compiling and loading of scripts. 2014-07-03 21:44:27 +00:00
James Roseborough
df6167cb66 Guard against exceptions when reading properties. 2014-03-09 18:05:25 +00:00
James Roseborough
a6105d5f62 Rename Globals.FINDER to Globals.finder. 2014-03-09 18:00:40 +00:00
James Roseborough
e9ee95fd58 Autoflush and encode written bytes in script contexts (fixes issue #20) 2014-03-09 17:59:25 +00:00
James Roseborough
736218d1f2 Pass user-supplied ScriptContext to script engine evaluation (fixes issue #21). 2014-03-09 16:45:57 +00:00
James Roseborough
7b97573ac8 Fix balanced match for empty string (fixes issue #23) 2014-03-09 15:33:44 +00:00
James Roseborough
8201095b0d Let sample applet use a plain class loader within the luajava library. 2014-01-16 07:13:15 +00:00
James Roseborough
1bc4acdb89 Add sample applet build file. 2014-01-14 07:15:26 +00:00
James Roseborough
0304dc1736 Add back stack traces when debug is installed and new error message handler is defined. 2014-01-01 17:54:33 +00:00
James Roseborough
03985ec7ee Make error message handler in xpcall per-thread instead of per-globals. 2013-12-31 00:44:55 +00:00
James Roseborough
b0d52fe118 Let errors thrown in debug hooks bubble up to the running coroutine. 2013-12-30 23:58:02 +00:00
James Roseborough
18c1116d22 Add back deprecated function for compatibility 2013-12-30 23:54:20 +00:00
James Roseborough
337ff63dbb Improve documentation around loading. 2013-12-30 00:21:17 +00:00
James Roseborough
de33943eaf Update javadoc comments related to library initialization and loading lua code. 2013-12-29 22:49:23 +00:00