diff options
author | ZyX <kp-pav@yandex.ru> | 2017-08-15 16:32:06 +0300 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2017-08-15 16:34:51 +0300 |
commit | 93ef823f5e5347e685b4a69fff487278d0b4ed87 (patch) | |
tree | d9ef1fe4379c8ae3b46a86e157ac89e37b43fb75 | |
parent | 96b1600bc822d72f5a1defa1dafda562ff208b7e (diff) | |
download | rneovim-93ef823f5e5347e685b4a69fff487278d0b4ed87.tar.gz rneovim-93ef823f5e5347e685b4a69fff487278d0b4ed87.tar.bz2 rneovim-93ef823f5e5347e685b4a69fff487278d0b4ed87.zip |
lua/executor: Move stricmp to vim “module” and document it
-rw-r--r-- | runtime/doc/if_lua.txt | 5 | ||||
-rw-r--r-- | src/nvim/lua/executor.c | 8 | ||||
-rw-r--r-- | test/functional/lua/utility_functions_spec.lua | 166 |
3 files changed, 92 insertions, 87 deletions
diff --git a/runtime/doc/if_lua.txt b/runtime/doc/if_lua.txt index c4efd57b45..515864555b 100644 --- a/runtime/doc/if_lua.txt +++ b/runtime/doc/if_lua.txt @@ -246,6 +246,11 @@ Lua interfaces Vim through the "vim" module. Currently it only has `api` submodule which is a table with all API functions. Descriptions of these functions may be found in |api.txt|. +vim.stricmp(a, b) *lua-vim.stricmp* + Function used for case-insensitive string comparison. Takes two + string arguments and returns 0, 1 or -1 if strings are equal, a is + greater then b or a is lesser then b respectively. + ============================================================================== 3. The luaeval function *lua-luaeval* *lua-eval* *luaeval()* diff --git a/src/nvim/lua/executor.c b/src/nvim/lua/executor.c index 4ed477ea36..90333be541 100644 --- a/src/nvim/lua/executor.c +++ b/src/nvim/lua/executor.c @@ -281,10 +281,6 @@ static int nlua_exec_lua_file(lua_State *const lstate) FUNC_ATTR_NONNULL_ALL /// Called by lua interpreter itself to initialize state. static int nlua_state_init(lua_State *const lstate) FUNC_ATTR_NONNULL_ALL { - // stricmp - lua_pushcfunction(lstate, &nlua_stricmp); - lua_setglobal(lstate, "stricmp"); - // print lua_pushcfunction(lstate, &nlua_print); lua_setglobal(lstate, "print"); @@ -304,6 +300,10 @@ static int nlua_state_init(lua_State *const lstate) FUNC_ATTR_NONNULL_ALL nlua_add_api_functions(lstate); // vim.types, vim.type_idx, vim.val_idx nlua_init_types(lstate); + // stricmp + lua_pushcfunction(lstate, &nlua_stricmp); + lua_setfield(lstate, -2, "stricmp"); + lua_setglobal(lstate, "vim"); return 0; } diff --git a/test/functional/lua/utility_functions_spec.lua b/test/functional/lua/utility_functions_spec.lua index c89a21a968..c2c61299b1 100644 --- a/test/functional/lua/utility_functions_spec.lua +++ b/test/functional/lua/utility_functions_spec.lua @@ -7,7 +7,7 @@ local eq = helpers.eq before_each(clear) -describe('stricmp', function() +describe('vim.stricmp', function() -- İ: `tolower("İ")` is `i` which has length 1 while `İ` itself has -- length 2 (in bytes). -- Ⱥ: `tolower("Ⱥ")` is `ⱥ` which has length 2 while `Ⱥ` itself has @@ -16,87 +16,87 @@ describe('stricmp', function() -- Neovim comparison (i.e. when there is no strcasecmp) works only on ASCII -- characters. it('works', function() - eq(0, funcs.luaeval('stricmp("a", "A")')) - eq(0, funcs.luaeval('stricmp("A", "a")')) - eq(0, funcs.luaeval('stricmp("a", "a")')) - eq(0, funcs.luaeval('stricmp("A", "A")')) - - eq(0, funcs.luaeval('stricmp("", "")')) - eq(0, funcs.luaeval('stricmp("\\0", "\\0")')) - eq(0, funcs.luaeval('stricmp("\\0\\0", "\\0\\0")')) - eq(0, funcs.luaeval('stricmp("\\0\\0\\0", "\\0\\0\\0")')) - eq(0, funcs.luaeval('stricmp("\\0\\0\\0A", "\\0\\0\\0a")')) - eq(0, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0A")')) - eq(0, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0a")')) - - eq(0, funcs.luaeval('stricmp("a\\0", "A\\0")')) - eq(0, funcs.luaeval('stricmp("A\\0", "a\\0")')) - eq(0, funcs.luaeval('stricmp("a\\0", "a\\0")')) - eq(0, funcs.luaeval('stricmp("A\\0", "A\\0")')) - - eq(0, funcs.luaeval('stricmp("\\0a", "\\0A")')) - eq(0, funcs.luaeval('stricmp("\\0A", "\\0a")')) - eq(0, funcs.luaeval('stricmp("\\0a", "\\0a")')) - eq(0, funcs.luaeval('stricmp("\\0A", "\\0A")')) - - eq(0, funcs.luaeval('stricmp("\\0a\\0", "\\0A\\0")')) - eq(0, funcs.luaeval('stricmp("\\0A\\0", "\\0a\\0")')) - eq(0, funcs.luaeval('stricmp("\\0a\\0", "\\0a\\0")')) - eq(0, funcs.luaeval('stricmp("\\0A\\0", "\\0A\\0")')) - - eq(-1, funcs.luaeval('stricmp("a", "B")')) - eq(-1, funcs.luaeval('stricmp("A", "b")')) - eq(-1, funcs.luaeval('stricmp("a", "b")')) - eq(-1, funcs.luaeval('stricmp("A", "B")')) - - eq(-1, funcs.luaeval('stricmp("", "\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0", "\\0\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0\\0", "\\0\\0\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0\\0\\0A", "\\0\\0\\0b")')) - eq(-1, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0B")')) - eq(-1, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0b")')) - - eq(-1, funcs.luaeval('stricmp("a\\0", "B\\0")')) - eq(-1, funcs.luaeval('stricmp("A\\0", "b\\0")')) - eq(-1, funcs.luaeval('stricmp("a\\0", "b\\0")')) - eq(-1, funcs.luaeval('stricmp("A\\0", "B\\0")')) - - eq(-1, funcs.luaeval('stricmp("\\0a", "\\0B")')) - eq(-1, funcs.luaeval('stricmp("\\0A", "\\0b")')) - eq(-1, funcs.luaeval('stricmp("\\0a", "\\0b")')) - eq(-1, funcs.luaeval('stricmp("\\0A", "\\0B")')) - - eq(-1, funcs.luaeval('stricmp("\\0a\\0", "\\0B\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0A\\0", "\\0b\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0a\\0", "\\0b\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0A\\0", "\\0B\\0")')) - - eq(1, funcs.luaeval('stricmp("c", "B")')) - eq(1, funcs.luaeval('stricmp("C", "b")')) - eq(1, funcs.luaeval('stricmp("c", "b")')) - eq(1, funcs.luaeval('stricmp("C", "B")')) - - eq(1, funcs.luaeval('stricmp("\\0", "")')) - eq(1, funcs.luaeval('stricmp("\\0\\0", "\\0")')) - eq(1, funcs.luaeval('stricmp("\\0\\0\\0", "\\0\\0")')) - eq(1, funcs.luaeval('stricmp("\\0\\0\\0\\0", "\\0\\0\\0")')) - eq(1, funcs.luaeval('stricmp("\\0\\0\\0C", "\\0\\0\\0b")')) - eq(1, funcs.luaeval('stricmp("\\0\\0\\0c", "\\0\\0\\0B")')) - eq(1, funcs.luaeval('stricmp("\\0\\0\\0c", "\\0\\0\\0b")')) - - eq(1, funcs.luaeval('stricmp("c\\0", "B\\0")')) - eq(1, funcs.luaeval('stricmp("C\\0", "b\\0")')) - eq(1, funcs.luaeval('stricmp("c\\0", "b\\0")')) - eq(1, funcs.luaeval('stricmp("C\\0", "B\\0")')) - - eq(1, funcs.luaeval('stricmp("\\0c", "\\0B")')) - eq(1, funcs.luaeval('stricmp("\\0C", "\\0b")')) - eq(1, funcs.luaeval('stricmp("\\0c", "\\0b")')) - eq(1, funcs.luaeval('stricmp("\\0C", "\\0B")')) - - eq(1, funcs.luaeval('stricmp("\\0c\\0", "\\0B\\0")')) - eq(1, funcs.luaeval('stricmp("\\0C\\0", "\\0b\\0")')) - eq(1, funcs.luaeval('stricmp("\\0c\\0", "\\0b\\0")')) - eq(1, funcs.luaeval('stricmp("\\0C\\0", "\\0B\\0")')) + eq(0, funcs.luaeval('vim.stricmp("a", "A")')) + eq(0, funcs.luaeval('vim.stricmp("A", "a")')) + eq(0, funcs.luaeval('vim.stricmp("a", "a")')) + eq(0, funcs.luaeval('vim.stricmp("A", "A")')) + + eq(0, funcs.luaeval('vim.stricmp("", "")')) + eq(0, funcs.luaeval('vim.stricmp("\\0", "\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0\\0", "\\0\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0", "\\0\\0\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0A", "\\0\\0\\0a")')) + eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0A")')) + eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0a")')) + + eq(0, funcs.luaeval('vim.stricmp("a\\0", "A\\0")')) + eq(0, funcs.luaeval('vim.stricmp("A\\0", "a\\0")')) + eq(0, funcs.luaeval('vim.stricmp("a\\0", "a\\0")')) + eq(0, funcs.luaeval('vim.stricmp("A\\0", "A\\0")')) + + eq(0, funcs.luaeval('vim.stricmp("\\0a", "\\0A")')) + eq(0, funcs.luaeval('vim.stricmp("\\0A", "\\0a")')) + eq(0, funcs.luaeval('vim.stricmp("\\0a", "\\0a")')) + eq(0, funcs.luaeval('vim.stricmp("\\0A", "\\0A")')) + + eq(0, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0A\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0a\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0a\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0A\\0")')) + + eq(-1, funcs.luaeval('vim.stricmp("a", "B")')) + eq(-1, funcs.luaeval('vim.stricmp("A", "b")')) + eq(-1, funcs.luaeval('vim.stricmp("a", "b")')) + eq(-1, funcs.luaeval('vim.stricmp("A", "B")')) + + eq(-1, funcs.luaeval('vim.stricmp("", "\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0", "\\0\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0\\0", "\\0\\0\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0\\0\\0A", "\\0\\0\\0b")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0B")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0b")')) + + eq(-1, funcs.luaeval('vim.stricmp("a\\0", "B\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("A\\0", "b\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("a\\0", "b\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("A\\0", "B\\0")')) + + eq(-1, funcs.luaeval('vim.stricmp("\\0a", "\\0B")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0A", "\\0b")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0a", "\\0b")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0A", "\\0B")')) + + eq(-1, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0B\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0b\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0b\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0B\\0")')) + + eq(1, funcs.luaeval('vim.stricmp("c", "B")')) + eq(1, funcs.luaeval('vim.stricmp("C", "b")')) + eq(1, funcs.luaeval('vim.stricmp("c", "b")')) + eq(1, funcs.luaeval('vim.stricmp("C", "B")')) + + eq(1, funcs.luaeval('vim.stricmp("\\0", "")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0", "\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0", "\\0\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0\\0", "\\0\\0\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0C", "\\0\\0\\0b")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0c", "\\0\\0\\0B")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0c", "\\0\\0\\0b")')) + + eq(1, funcs.luaeval('vim.stricmp("c\\0", "B\\0")')) + eq(1, funcs.luaeval('vim.stricmp("C\\0", "b\\0")')) + eq(1, funcs.luaeval('vim.stricmp("c\\0", "b\\0")')) + eq(1, funcs.luaeval('vim.stricmp("C\\0", "B\\0")')) + + eq(1, funcs.luaeval('vim.stricmp("\\0c", "\\0B")')) + eq(1, funcs.luaeval('vim.stricmp("\\0C", "\\0b")')) + eq(1, funcs.luaeval('vim.stricmp("\\0c", "\\0b")')) + eq(1, funcs.luaeval('vim.stricmp("\\0C", "\\0B")')) + + eq(1, funcs.luaeval('vim.stricmp("\\0c\\0", "\\0B\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0C\\0", "\\0b\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0c\\0", "\\0b\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0C\\0", "\\0B\\0")')) end) end) |