aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2021-10-30 06:59:59 -0700
committerGitHub <noreply@github.com>2021-10-30 06:59:59 -0700
commita141f6e9225fea065d8580b37510de2de168f9de (patch)
tree93ef10f8cbe0f7c6e95a08e9b0babb70da7874aa
parenteb6a1039c500dc901563b786b3cd06ff740ab152 (diff)
downloadrneovim-a141f6e9225fea065d8580b37510de2de168f9de.tar.gz
rneovim-a141f6e9225fea065d8580b37510de2de168f9de.tar.bz2
rneovim-a141f6e9225fea065d8580b37510de2de168f9de.zip
fix(vim.mpack): rename pack/unpack => encode/decode #16175
Problem: 1. "unpack" has an unrelated meaning in Lua: https://www.lua.org/manual/5.1/manual.html#pdf-unpack 2. We already have msgpackparse()/msgpackdump() and json_encode()/json_decode(), so introducing another name for the same thing is entropy. Solution: - Rename vim.mpack.pack/unpack => vim.mpack.encode/decode Caveat: This is incongruent with the `Unpacker` and `Packer` functions. - It's probably too invasive to rename those. - They also aren't part of our documented interface. - This commit is "reversible" in the sense that we can always revert it and add `vim.mpack.encode/decode` as _aliases_ to `vim.mpack.pack/unpack`, at any time in the future, if we want stricter fidelity with upstream libmpack. Meanwhile, `vim.mpack.encode/decode` is currently the total _documented_ interface of `vim.mpack`, so this change serves the purpose of consistent naming in the Nvim stdlib.
-rw-r--r--runtime/doc/lua.txt13
-rw-r--r--src/mpack/lmpack.c14
-rw-r--r--test/functional/lua/mpack_spec.lua8
3 files changed, 18 insertions, 17 deletions
diff --git a/runtime/doc/lua.txt b/runtime/doc/lua.txt
index 877c838602..1e058874bd 100644
--- a/runtime/doc/lua.txt
+++ b/runtime/doc/lua.txt
@@ -698,15 +698,14 @@ vim.diff({a}, {b}, {opts}) *vim.diff()*
------------------------------------------------------------------------------
VIM.MPACK *lua-mpack*
-The *vim.mpack* module provides packing and unpacking of lua objects to
-msgpack encoded strings. |vim.NIL| and |vim.empty_dict()| are supported.
+The *vim.mpack* module provides encoding and decoding of Lua objects to and
+from msgpack-encoded strings. Supports |vim.NIL| and |vim.empty_dict()|.
-vim.mpack.pack({obj}) *vim.mpack.pack*
- Packs a lua object {obj} and returns the msgpack representation as
- a string
+vim.mpack.encode({obj}) *vim.mpack.encode*
+ Encodes (or "packs") Lua object {obj} as msgpack in a Lua string.
-vim.mpack.unpack({str}) *vim.mpack.unpack*
- Unpacks the msgpack encoded {str} and returns a lua object
+vim.mpack.decode({str}) *vim.mpack.decode*
+ Decodes (or "unpacks") the msgpack-encoded {str} to a Lua object.
------------------------------------------------------------------------------
VIM *lua-builtin*
diff --git a/src/mpack/lmpack.c b/src/mpack/lmpack.c
index 24d27fd17a..87acf46592 100644
--- a/src/mpack/lmpack.c
+++ b/src/mpack/lmpack.c
@@ -34,7 +34,9 @@
#include "rpc.h"
#define UNPACKER_META_NAME "mpack.Unpacker"
+#define UNPACK_FN_NAME "decode"
#define PACKER_META_NAME "mpack.Packer"
+#define PACK_FN_NAME "encode"
#define SESSION_META_NAME "mpack.Session"
#define NIL_NAME "mpack.NIL"
#define EMPTY_DICT_NAME "mpack.empty_dict"
@@ -432,8 +434,8 @@ static int lmpack_unpacker_unpack_str(lua_State *L, Unpacker *unpacker,
if (unpacker->unpacking) {
return luaL_error(L, "Unpacker instance already working. Use another "
- "Unpacker or the module's \"unpack\" function if you "
- "need to unpack from the ext handler");
+ "Unpacker or mpack." UNPACK_FN_NAME "() if you "
+ "need to " UNPACK_FN_NAME " from the ext handler");
}
do {
@@ -784,8 +786,8 @@ static int lmpack_packer_pack(lua_State *L)
if (packer->packing) {
return luaL_error(L, "Packer instance already working. Use another Packer "
- "or the module's \"pack\" function if you need to "
- "pack from the ext handler");
+ "or mpack." PACK_FN_NAME "() if you need to "
+ PACK_FN_NAME " from the ext handler");
}
do {
@@ -1161,8 +1163,8 @@ static const luaL_reg mpack_functions[] = {
{"Unpacker", lmpack_unpacker_new},
{"Packer", lmpack_packer_new},
{"Session", lmpack_session_new},
- {"unpack", lmpack_unpack},
- {"pack", lmpack_pack},
+ {UNPACK_FN_NAME, lmpack_unpack},
+ {PACK_FN_NAME, lmpack_pack},
{NULL, NULL}
};
diff --git a/test/functional/lua/mpack_spec.lua b/test/functional/lua/mpack_spec.lua
index ef693f01f3..cc788ed8bb 100644
--- a/test/functional/lua/mpack_spec.lua
+++ b/test/functional/lua/mpack_spec.lua
@@ -7,16 +7,16 @@ local exec_lua = helpers.exec_lua
describe('lua vim.mpack', function()
before_each(clear)
- it('can pack vim.NIL', function()
+ it('encodes vim.NIL', function()
eq({true, true, true, true}, exec_lua [[
- local var = vim.mpack.unpack(vim.mpack.pack({33, vim.NIL, 77}))
+ local var = vim.mpack.decode(vim.mpack.encode({33, vim.NIL, 77}))
return {var[1]==33, var[2]==vim.NIL, var[3]==77, var[4]==nil}
]])
end)
- it('can pack vim.empty_dict()', function()
+ it('encodes vim.empty_dict()', function()
eq({{{}, "foo", {}}, true, false}, exec_lua [[
- local var = vim.mpack.unpack(vim.mpack.pack({{}, "foo", vim.empty_dict()}))
+ local var = vim.mpack.decode(vim.mpack.encode({{}, "foo", vim.empty_dict()}))
return {var, vim.tbl_islist(var[1]), vim.tbl_islist(var[3])}
]])
end)