Skip to content

Commit

Permalink
Add --strip-comments option
Browse files Browse the repository at this point in the history
  • Loading branch information
liquidaty authored and wader committed Feb 24, 2024
1 parent e659a5e commit 6747033
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 7 deletions.
3 changes: 2 additions & 1 deletion Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ endif

### Tests (make check)

TESTS = tests/mantest tests/jqtest tests/shtest tests/utf8test tests/base64test
TESTS = tests/mantest tests/jqtest tests/shtest tests/utf8test tests/base64test tests/commenttest
if !WIN32
TESTS += tests/optionaltest
endif
Expand Down Expand Up @@ -233,6 +233,7 @@ EXTRA_DIST = $(DOC_FILES) $(man_MANS) $(TESTS) $(TEST_LOG_COMPILER) \
tests/setup tests/torture/input0.json \
tests/optional.test tests/man.test tests/manonig.test \
tests/jq.test tests/onig.test tests/base64.test \
tests/commenttest \
tests/utf8-truncate.jq tests/jq-f-test.sh \
tests/no-main-program.jq tests/yes-main-program.jq

Expand Down
1 change: 1 addition & 0 deletions src/jv.h
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ enum {
JV_PARSE_SEQ = 1,
JV_PARSE_STREAMING = 2,
JV_PARSE_STREAM_ERRORS = 4,
JV_PARSE_STRIP_COMMENTS = 8
};

jv jv_parse(const char* string);
Expand Down
7 changes: 1 addition & 6 deletions src/jv_parse.c
Original file line number Diff line number Diff line change
Expand Up @@ -652,7 +652,6 @@ static pfunc scan_line_comment(struct jv_parser* p, char ch, jv* out) {
return OK;
}


static pfunc scan_c_comment_close(struct jv_parser* p, char ch, jv* out) {
if(ch == '/') {
p->scan = scan_json;
Expand Down Expand Up @@ -703,11 +702,7 @@ static pfunc scan_json(struct jv_parser* p, char ch, jv* out) {
presult answer = 0;
p->last_ch_was_ws = 0;
if (p->st == JV_PARSER_NORMAL) {
if(ch == '#') {
p->scan = scan_line_comment;
return OK;
}
if(ch == '/') {
if(ch == '/' && (p->flags & JV_PARSE_STRIP_COMMENTS)) {
p->scan = scan_slash_comment;
return OK;
}
Expand Down
5 changes: 5 additions & 0 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ static void usage(int code, int keep_it_short) {
" -C, --color-output colorize JSON output;\n"
" -M, --monochrome-output disable colored output;\n"
" --tab use tabs for indentation;\n"
" --strip-comments accept and strip comments from input;\n"
" --indent n use n spaces for indentation (max 7 spaces);\n"
" --unbuffered flush output stream after each output;\n"
" --stream parse the input value in streaming fashion;\n"
Expand Down Expand Up @@ -471,6 +472,10 @@ int main(int argc, char* argv[]) {
parser_flags |= JV_PARSE_STREAMING;
continue;
}
if (isoption(argv[i], 0, "strip-comments", &short_opts)) {
parser_flags |= JV_PARSE_STRIP_COMMENTS;
continue;
}
if (isoption(argv[i], 0, "stream-errors", &short_opts)) {
parser_flags |= JV_PARSE_STREAMING | JV_PARSE_STREAM_ERRORS;
continue;
Expand Down
15 changes: 15 additions & 0 deletions tests/commenttest
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/sh

. "${0%/*}/setup" "$@"

if [ "$(echo '{"hi":"there"/*comment*/}' | $VALGRIND $Q $JQ --strip-comments '.hi')" != '"there"' ]; then
echo "C-style comment test failed"
exit 1
fi

if [ "$(printf '{"hi"://comment\n"there"}' | $VALGRIND $Q $JQ --strip-comments '.hi')" != '"there"' ]; then
echo "C++-style comment test failed"
exit 1
fi

exit 0

0 comments on commit 6747033

Please sign in to comment.