Navigation Menu

Skip to content

Commit

Permalink
normalize: improve error messages
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Jun 5, 2014
1 parent 1a2b3a4 commit 83f820a
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 4 deletions.
33 changes: 29 additions & 4 deletions lib/proc.c
Expand Up @@ -2944,6 +2944,20 @@ parse_normalize_flags(grn_ctx *ctx, grn_obj *flag_names)
return flags;
}

static grn_bool
is_normalizer(grn_ctx *ctx, grn_obj *object)
{
if (object->header.type != GRN_PROC) {
return GRN_FALSE;
}

if (grn_proc_get_type(ctx, object) != GRN_PROC_NORMALIZER) {
return GRN_FALSE;
}

return GRN_TRUE;
}

static const char *
char_type_name(grn_char_type type)
{
Expand Down Expand Up @@ -3006,17 +3020,28 @@ proc_normalize(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data
normalizer = grn_ctx_get(ctx,
GRN_TEXT_VALUE(normalizer_name),
GRN_TEXT_LEN(normalizer_name));
if (!normalizer ||
normalizer->header.type != GRN_PROC ||
grn_proc_get_type(ctx, normalizer) != GRN_PROC_NORMALIZER) {
if (!normalizer) {
ERR(GRN_INVALID_ARGUMENT,
"unknown normalizer: <%.*s>",
"[normalize] nonexistent normalizer: <%.*s>",
(int)GRN_TEXT_LEN(normalizer_name),
GRN_TEXT_VALUE(normalizer_name));
GRN_OUTPUT_CSTR("");
return NULL;
}

if (!is_normalizer(ctx, normalizer)) {
grn_obj inspected;
GRN_TEXT_INIT(&inspected, 0);
grn_inspect(ctx, &inspected, normalizer);
ERR(GRN_INVALID_ARGUMENT,
"[normalize] not normalizer: %.*s",
(int)GRN_TEXT_LEN(&inspected),
GRN_TEXT_VALUE(&inspected));
GRN_OBJ_FIN(ctx, &inspected);
GRN_OUTPUT_CSTR("");
return NULL;
}

grn_string = grn_string_open(ctx,
GRN_TEXT_VALUE(string), GRN_TEXT_LEN(string),
normalizer, flags);
Expand Down
13 changes: 13 additions & 0 deletions test/command/suite/normalize/invalid/normalizer/invalid.expected
@@ -0,0 +1,13 @@
normalize TokenBigram "aBcDe"
[
[
[
-22,
0.0,
0.0
],
"[normalize] not normalizer: #<proc:tokenizer TokenBigram arguments:[$1, $2, $3]>"
],
""
]
#|e| [normalize] not normalizer: #<proc:tokenizer TokenBigram arguments:[$1, $2, $3]>
@@ -0,0 +1 @@
normalize TokenBigram "aBcDe"
@@ -0,0 +1,3 @@
normalize Nonexistent "aBcDe"
[[[-22,0.0,0.0],"[normalize] nonexistent normalizer: <Nonexistent>"],""]
#|e| [normalize] nonexistent normalizer: <Nonexistent>
@@ -0,0 +1 @@
normalize Nonexistent "aBcDe"

0 comments on commit 83f820a

Please sign in to comment.