/* * call-seq: * clause.to_s -> string * * Return a string representation of this clause. This will not be used by * BooleanQuery#to_s. It is only used by BooleanClause#to_s and will specify * whether the clause is +:must+, +:should+ or +:must_not+. */ static VALUE frb_bc_to_s(VALUE self) { VALUE rstr; char *qstr, *ostr = "", *str; int len; GET_BC(); qstr = bc->query->to_s(bc->query, NULL); switch (bc->occur) { case BC_SHOULD: ostr = "Should"; break; case BC_MUST: ostr = "Must"; break; case BC_MUST_NOT: ostr = "Must Not"; break; } len = strlen(ostr) + strlen(qstr) + 2; str = ALLOC_N(char, len); sprintf(str, "%s:%s", ostr, qstr); rstr = rb_str_new(str, len); free(qstr); free(str); return rstr; }