summaryrefslogtreecommitdiff
path: root/src/json.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-07-22 23:03:57 +0200
committerBram Moolenaar <Bram@vim.org>2019-07-22 23:03:57 +0200
commit29b7d7a9aac591f920edb89241c8cde27378e50b (patch)
tree96368a556edd943bec67f303778bc0c864573860 /src/json.c
parente5e6950193ddf365c6c507ddefcd7f9db939e5ac (diff)
downloadvim-git-29b7d7a9aac591f920edb89241c8cde27378e50b.tar.gz
patch 8.1.1734: the evalfunc.c file is too bigv8.1.1734
Problem: The evalfunc.c file is too big. Solution: Move some functions to other files.
Diffstat (limited to 'src/json.c')
-rw-r--r--src/json.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/json.c b/src/json.c
index 3a5de7092..c9a6230d2 100644
--- a/src/json.c
+++ b/src/json.c
@@ -1127,3 +1127,52 @@ json_find_end(js_read_T *reader, int options)
return ret;
}
#endif
+
+/*
+ * "js_decode()" function
+ */
+ void
+f_js_decode(typval_T *argvars, typval_T *rettv)
+{
+ js_read_T reader;
+
+ reader.js_buf = tv_get_string(&argvars[0]);
+ reader.js_fill = NULL;
+ reader.js_used = 0;
+ if (json_decode_all(&reader, rettv, JSON_JS) != OK)
+ emsg(_(e_invarg));
+}
+
+/*
+ * "js_encode()" function
+ */
+ void
+f_js_encode(typval_T *argvars, typval_T *rettv)
+{
+ rettv->v_type = VAR_STRING;
+ rettv->vval.v_string = json_encode(&argvars[0], JSON_JS);
+}
+
+/*
+ * "json_decode()" function
+ */
+ void
+f_json_decode(typval_T *argvars, typval_T *rettv)
+{
+ js_read_T reader;
+
+ reader.js_buf = tv_get_string(&argvars[0]);
+ reader.js_fill = NULL;
+ reader.js_used = 0;
+ json_decode_all(&reader, rettv, 0);
+}
+
+/*
+ * "json_encode()" function
+ */
+ void
+f_json_encode(typval_T *argvars, typval_T *rettv)
+{
+ rettv->v_type = VAR_STRING;
+ rettv->vval.v_string = json_encode(&argvars[0], 0);
+}