Navigation Menu

Skip to content

Commit

Permalink
inspect: support vector and object value in JSON load
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Feb 19, 2014
1 parent 1daae55 commit e47cea8
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions lib/util.c
Expand Up @@ -794,6 +794,51 @@ grn_geo_point_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj)
return GRN_SUCCESS;
}

static grn_rc
grn_json_load_open_bracket_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj)
{
uint i, n;

n = GRN_UINT32_VALUE(obj);

GRN_TEXT_PUTS(ctx, buf, "[");
for (i = 0; i < n; i++) {
grn_obj *value;
value = obj + 1 + i;
if (i > 0) {
GRN_TEXT_PUTS(ctx, buf, ", ");
}
grn_inspect(ctx, buf, value);
}
GRN_TEXT_PUTS(ctx, buf, "]");

return GRN_SUCCESS;
}

static grn_rc
grn_json_load_open_brace_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj)
{
uint i, n;

n = GRN_UINT32_VALUE(obj);

GRN_TEXT_PUTS(ctx, buf, "{");
for (i = 0; i < n; i += 2) {
grn_obj *key, *value;
key = obj + 1 + i;
value = key + 1;
if (i > 0) {
GRN_TEXT_PUTS(ctx, buf, ", ");
}
grn_inspect(ctx, buf, key);
GRN_TEXT_PUTS(ctx, buf, ": ");
grn_inspect(ctx, buf, value);
}
GRN_TEXT_PUTS(ctx, buf, "}");

return GRN_SUCCESS;
}

static grn_rc
grn_record_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj)
{
Expand Down Expand Up @@ -906,6 +951,12 @@ grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj)
case GRN_DB_WGS84_GEO_POINT :
grn_geo_point_inspect(ctx, buffer, obj);
return buffer;
case GRN_JSON_LOAD_OPEN_BRACKET :
grn_json_load_open_bracket_inspect(ctx, buffer, obj);
return buffer;
case GRN_JSON_LOAD_OPEN_BRACE :
grn_json_load_open_brace_inspect(ctx, buffer, obj);
return buffer;
default :
domain = grn_ctx_at(ctx, obj->header.domain);
if (domain) {
Expand Down

0 comments on commit e47cea8

Please sign in to comment.