--- parser3/src/classes/string.C 2001/07/13 12:13:50 1.62 +++ parser3/src/classes/string.C 2001/07/20 09:40:46 1.64 @@ -5,7 +5,7 @@ Author: Alexander Petrosyan (http://design.ru/paf) */ -static const char *RCSId="$Id: string.C,v 1.62 2001/07/13 12:13:50 parser Exp $"; +static const char *RCSId="$Id: string.C,v 1.64 2001/07/20 09:40:46 parser Exp $"; #include "classes.h" #include "pa_request.h" @@ -59,8 +59,12 @@ static void _double(Request& r, const St Temp_lang temp_lang(r, String::UL_PASS_APPENDED); char *buf=format(pool, r.self->as_double(), r.process(fmt).as_string().cstr()); - - r.write_no_lang(String(pool, buf)); + + String result(pool); + result.APPEND_CLEAN(buf, 0, + method_name.origin().file, + method_name.origin().line); + r.write_no_lang(result); } static void _left(Request& r, const String&, MethodParams *params) { @@ -210,17 +214,19 @@ static void _match(Request& r, const Str Temp_lang temp_lang(r, String::UL_PASS_APPENDED); Table *table; if(params->size()<3) { // search + bool was_global; bool matched=src.match(r.pcre_tables, &method_name, regexp.as_string(), options, &table, - search_action, 0); + search_action, 0, + &was_global); // matched - if(table->columns()->size()==3 && // just matched[3=pre/match/post], no substrings - table->size()<=1) // just one row, not /g_lobal search - result=new(pool) VBool(pool, matched); - else // table of pre/match/post+substrings - result=new(pool) VTable(pool, table); + // not (just matched[3=pre/match/post], no substrings) or Global search + if(table->columns()->size()>3 || was_global) + result=new(pool) VTable(pool, table); // table of pre/match/post+substrings + else + result=new(pool) VBool(pool, matched); } else { // replace Value& replacement_code=params->as_junction(2, "replacement code must be code");