]> granicus.if.org Git - jq/commitdiff
Add explode/implode jq functions to match jv API
authorNicolas Williams <nico@cryptonector.com>
Thu, 28 Nov 2013 20:53:50 +0000 (14:53 -0600)
committerNicolas Williams <nico@cryptonector.com>
Thu, 5 Dec 2013 00:21:38 +0000 (18:21 -0600)
builtin.c
jv.c

index 721cd3fc3e4c582556d029f34c75d14e5c0710ad..371df3726be024922367bc620e7598e974db4783 100644 (file)
--- a/builtin.c
+++ b/builtin.c
@@ -493,6 +493,8 @@ static const struct cfunction function_list[] = {
   {(cfunction_ptr)f_tonumber, "tonumber", 1},
   {(cfunction_ptr)f_tostring, "tostring", 1},
   {(cfunction_ptr)f_keys, "keys", 1},
+  {(cfunction_ptr)jv_string_explode, "explode", 1},
+  {(cfunction_ptr)jv_string_implode, "implode", 1},
   {(cfunction_ptr)jv_setpath, "setpath", 3}, // FIXME typechecking
   {(cfunction_ptr)jv_getpath, "getpath", 2},
   {(cfunction_ptr)jv_delpaths, "delpaths", 2},
diff --git a/jv.c b/jv.c
index a1e980263f6b0692e42c45053516a37b10e654a3..d9a908ce9028a2ea164f06d2a231f09da1ea638e 100644 (file)
--- a/jv.c
+++ b/jv.c
@@ -618,7 +618,7 @@ jv jv_string_implode(jv j) {
   assert(len >= 0);
 
   for (i = 0; i < len; i++) {
-    jv n = jv_array_get(j, i);
+    jv n = jv_array_get(jv_copy(j), i);
     assert(jv_get_kind(n) == JV_KIND_NUMBER);
     s = jv_string_append_codepoint(s, jv_number_value(n));
   }