mirror of
https://github.com/tstack/lnav
synced 2024-11-01 21:40:34 +00:00
[jget] fix the jget function
This commit is contained in:
parent
b6e10f4ee4
commit
f3ca72f42d
@ -125,7 +125,6 @@ public:
|
|||||||
enum match_state_t {
|
enum match_state_t {
|
||||||
MS_DONE,
|
MS_DONE,
|
||||||
MS_VALUE,
|
MS_VALUE,
|
||||||
MS_ELEMENT,
|
|
||||||
MS_ERR_INVALID_TYPE,
|
MS_ERR_INVALID_TYPE,
|
||||||
MS_ERR_NO_SLASH,
|
MS_ERR_NO_SLASH,
|
||||||
MS_ERR_INVALID_ESCAPE,
|
MS_ERR_INVALID_ESCAPE,
|
||||||
@ -188,16 +187,13 @@ public:
|
|||||||
retval = true;
|
retval = true;
|
||||||
}
|
}
|
||||||
else if (this->jp_state == MS_VALUE) {
|
else if (this->jp_state == MS_VALUE) {
|
||||||
if (this->jp_pos[0] == '/') {
|
if (this->jp_pos[0] == '/') {
|
||||||
this->jp_pos += 1;
|
this->jp_pos += 1;
|
||||||
this->jp_depth += 1;
|
this->jp_depth += 1;
|
||||||
this->jp_state = MS_ELEMENT;
|
this->jp_state = MS_VALUE;
|
||||||
retval = true;
|
this->jp_array_index = -1;
|
||||||
}
|
}
|
||||||
else {
|
retval = true;
|
||||||
this->jp_state = MS_ERR_NO_SLASH;
|
|
||||||
retval = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
retval = true;
|
retval = true;
|
||||||
@ -254,7 +250,10 @@ public:
|
|||||||
|
|
||||||
void exit_container(int32_t &depth, int32_t &index) {
|
void exit_container(int32_t &depth, int32_t &index) {
|
||||||
depth -= 1;
|
depth -= 1;
|
||||||
if (this->jp_state == MS_VALUE && depth == this->jp_depth) {
|
if (this->jp_state == MS_VALUE &&
|
||||||
|
depth == this->jp_depth &&
|
||||||
|
(index == -1 || (index - 1 == this->jp_array_index)) &&
|
||||||
|
this->reached_end()) {
|
||||||
this->jp_state = MS_DONE;
|
this->jp_state = MS_DONE;
|
||||||
index = -1;
|
index = -1;
|
||||||
}
|
}
|
||||||
@ -288,7 +287,7 @@ public:
|
|||||||
else {
|
else {
|
||||||
index = 0;
|
index = 0;
|
||||||
this->jp_pos += offset;
|
this->jp_pos += offset;
|
||||||
this->jp_state = MS_ELEMENT;
|
this->jp_state = MS_VALUE;
|
||||||
retval = true;
|
retval = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,14 @@ check_output "cannot read map" <<EOF
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
run_test ./drive_json_op get /other/val <<EOF
|
||||||
|
{ "other" : { "val" : 5 }, "val" : 3 }
|
||||||
|
EOF
|
||||||
|
|
||||||
|
check_output "cannot read nested map" <<EOF
|
||||||
|
5
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
run_test ./drive_json_op get "" <<EOF
|
run_test ./drive_json_op get "" <<EOF
|
||||||
[0, 1]
|
[0, 1]
|
||||||
|
@ -24,6 +24,16 @@ Row 0:
|
|||||||
Column jget('[null, true, 20, 30, 40]', '/3'): 30
|
Column jget('[null, true, 20, 30, 40]', '/3'): 30
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
run_test ./drive_sql "select jget('[null, true, 20, 30, 40, {\"msg\": \"Hello\"}]', '/5/msg')"
|
||||||
|
|
||||||
|
check_error_output "" <<EOF
|
||||||
|
EOF
|
||||||
|
|
||||||
|
check_output "jget null does not work" <<EOF
|
||||||
|
Row 0:
|
||||||
|
Column jget('[null, true, 20, 30, 40, {"msg": "Hello"}]', '/5/msg'): Hello
|
||||||
|
EOF
|
||||||
|
|
||||||
run_test ./drive_sql "select jget('[null, true, 20, 30, 40]', '/abc')"
|
run_test ./drive_sql "select jget('[null, true, 20, 30, 40]', '/abc')"
|
||||||
|
|
||||||
check_error_output "" <<EOF
|
check_error_output "" <<EOF
|
||||||
|
Loading…
Reference in New Issue
Block a user