mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
feat(msgpack): convert Blobs to BIN strings
This commit is contained in:
parent
ab82369c8e
commit
af6f454f5c
@ -6692,7 +6692,7 @@ msgpackdump({list}) *msgpackdump()*
|
|||||||
1. |Funcref|s cannot be dumped.
|
1. |Funcref|s cannot be dumped.
|
||||||
2. Containers that reference themselves cannot be dumped.
|
2. Containers that reference themselves cannot be dumped.
|
||||||
3. Dictionary keys are always dumped as STR strings.
|
3. Dictionary keys are always dumped as STR strings.
|
||||||
4. Other strings are always dumped as BIN strings.
|
4. Other strings and |Blob|s are always dumped as BIN strings.
|
||||||
5. Points 3. and 4. do not apply to |msgpack-special-dict|s.
|
5. Points 3. and 4. do not apply to |msgpack-special-dict|s.
|
||||||
|
|
||||||
msgpackparse({list}) *msgpackparse()*
|
msgpackparse({list}) *msgpackparse()*
|
||||||
@ -6706,7 +6706,7 @@ msgpackparse({list}) *msgpackparse()*
|
|||||||
|
|
||||||
Limitations:
|
Limitations:
|
||||||
1. Mapping ordering is not preserved unless messagepack
|
1. Mapping ordering is not preserved unless messagepack
|
||||||
mapping is dumped using generic mapping
|
mapping is dumped using generic mapping
|
||||||
(|msgpack-special-map|).
|
(|msgpack-special-map|).
|
||||||
2. Since the parser aims to preserve all data untouched
|
2. Since the parser aims to preserve all data untouched
|
||||||
(except for 1.) some strings are parsed to
|
(except for 1.) some strings are parsed to
|
||||||
|
@ -950,7 +950,13 @@ char *encode_tv2json(typval_T *tv, size_t *len)
|
|||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define TYPVAL_ENCODE_CONV_BLOB(tv, blob, len) \
|
#define TYPVAL_ENCODE_CONV_BLOB(tv, blob, len) \
|
||||||
abort() /* TODO(seandewar) */ \
|
do { \
|
||||||
|
const size_t len_ = (size_t)(len); \
|
||||||
|
msgpack_pack_bin(packer, len_); \
|
||||||
|
if (len_ > 0) { \
|
||||||
|
msgpack_pack_bin_body(packer, (blob)->bv_ga.ga_data, len_); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#define TYPVAL_ENCODE_CONV_NUMBER(tv, num) \
|
#define TYPVAL_ENCODE_CONV_NUMBER(tv, num) \
|
||||||
msgpack_pack_int64(packer, (int64_t)(num))
|
msgpack_pack_int64(packer, (int64_t)(num))
|
||||||
|
@ -517,6 +517,10 @@ describe('msgpackdump() function', function()
|
|||||||
eq({"\196\004Test"}, eval('msgpackdump(obj)'))
|
eq({"\196\004Test"}, eval('msgpackdump(obj)'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('dumps blob as BIN 8', function()
|
||||||
|
eq({'\196\005Bl\nb!'}, eval('msgpackdump([0z426c006221])'))
|
||||||
|
end)
|
||||||
|
|
||||||
it('can dump generic mapping with generic mapping keys and values', function()
|
it('can dump generic mapping with generic mapping keys and values', function()
|
||||||
command('let todump = {"_TYPE": v:msgpack_types.map, "_VAL": []}')
|
command('let todump = {"_TYPE": v:msgpack_types.map, "_VAL": []}')
|
||||||
command('let todumpv1 = {"_TYPE": v:msgpack_types.map, "_VAL": []}')
|
command('let todumpv1 = {"_TYPE": v:msgpack_types.map, "_VAL": []}')
|
||||||
@ -716,6 +720,10 @@ describe('msgpackdump() function', function()
|
|||||||
eq({'\160'}, eval('msgpackdump([{"_TYPE": v:msgpack_types.string, "_VAL": [$XXX_UNEXISTENT_VAR_XXX]}])'))
|
eq({'\160'}, eval('msgpackdump([{"_TYPE": v:msgpack_types.string, "_VAL": [$XXX_UNEXISTENT_VAR_XXX]}])'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('can dump NULL blob', function()
|
||||||
|
eq({'\196\n'}, eval('msgpackdump([v:_null_blob])'))
|
||||||
|
end)
|
||||||
|
|
||||||
it('can dump NULL list', function()
|
it('can dump NULL list', function()
|
||||||
eq({'\144'}, eval('msgpackdump([v:_null_list])'))
|
eq({'\144'}, eval('msgpackdump([v:_null_list])'))
|
||||||
end)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user