From 8041ce31192af8b54e83691372f23b0b9637234c Mon Sep 17 00:00:00 2001 From: Stephen Dolan Date: Tue, 18 Sep 2012 12:58:39 +0100 Subject: [PATCH] Add the builtin 'select' function. --- c/builtin.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/c/builtin.c b/c/builtin.c index 6d0235e7..f291a95e 100644 --- a/c/builtin.c +++ b/c/builtin.c @@ -199,24 +199,25 @@ static bytecoded_builtin bytecoded_builtins[] = { }; static const char* jq_builtins[] = { - "def map(f): [.[] | f];" + "def map(f): [.[] | f];", + "def select(f): if f then . else empty end;", }; block builtins_bind(block b) { - block builtins = gen_noop(); - for (unsigned i=0; i=0; i--) { struct locfile src; locfile_init(&src, jq_builtins[i], strlen(jq_builtins[i])); block funcs; int nerrors = jq_parse_library(&src, &funcs); assert(!nerrors); - block_append(&builtins, funcs); + b = block_bind(funcs, b, OP_IS_CALL_PSEUDO); locfile_free(&src); } + block builtins = gen_noop(); + for (unsigned i=0; i