--- parser3/src/classes/table.C 2013/10/10 23:06:28 1.297 +++ parser3/src/classes/table.C 2014/06/29 06:30:25 1.301 @@ -21,7 +21,7 @@ #include "pa_vbool.h" #include "pa_array.h" -volatile const char * IDENT_TABLE_C="$Id: table.C,v 1.297 2013/10/10 23:06:28 moko Exp $"; +volatile const char * IDENT_TABLE_C="$Id: table.C,v 1.301 2014/06/29 06:30:25 misha Exp $"; // class @@ -185,7 +185,7 @@ static void _create(Request& r, MethodPa // data Temp_lang temp_lang(r, String::L_PASS_APPENDED); const String& data= - r.process_to_string(params.as_junction(data_param_index, "body must be code")); + r.process_to_string(params.as_junction(data_param_index, "body must be table or code")); // parse columns size_t raw_pos_after=0; @@ -406,7 +406,7 @@ static void _load(Request& r, MethodPara typedef std::basic_stringstream, gc_allocator > pa_stringstream; typedef std::basic_string, gc_allocator > pa_string; -void maybe_enclose( pa_stringstream& to, const String* from, char encloser ) { +static void enclose( pa_stringstream& to, const String* from, char encloser ) { if(from){ to< i(*table.columns()); i.has_next(); ) { - maybe_enclose( result, i.next(), separators.encloser ); + enclose( result, i.next(), separators.encloser ); if(i.has_next()) result< c(*i.next()); c.has_next(); ) { - maybe_enclose( result, c.next(), separators.encloser ); + enclose( result, c.next(), separators.encloser ); if(c.has_next()) result< i(*table.columns()); i.has_next(); ) { - maybe_enclose( result, i.next(), separators.encloser, separators.sencloser ); + enclose( result, i.next(), separators.encloser, separators.sencloser ); if(i.has_next()) result<<*separators.scolumn; } @@ -524,11 +524,14 @@ static void table_to_csv(String& result, } else { // nameless table [we were asked to output column names] if(int lsize=table.count()?table[0]->count():0) for(int column=0; column c(*i.next()); c.has_next(); ) { - maybe_enclose( result, c.next(), separators.encloser, separators.sencloser ); + enclose( result, c.next(), separators.encloser, separators.sencloser ); if(c.has_next()) result<<*separators.scolumn; } @@ -1110,9 +1113,9 @@ static void _foreach(Request& r, MethodP table.set_current(row); if(rownum_var_name) - var_context->put_element(*rownum_var_name, new VString(*new String(String::Body::Format(row), String::L_CLEAN))); + r.put_element(*var_context, *rownum_var_name, new VString(*new String(String::Body::Format(row), String::L_CLEAN))); if(value_var_name) - var_context->put_element(*value_var_name, new VTable(&table)); + r.put_element(*var_context, *value_var_name, new VTable(&table)); StringOrValue sv_processed=r.process(body_code); Request::Skip lskip=r.get_skip(); r.set_skip(Request::SKIP_NOTHING); @@ -1135,9 +1138,9 @@ static void _foreach(Request& r, MethodP table.set_current(row); if(rownum_var_name) - var_context->put_element(*rownum_var_name, new VString(*new String(String::Body::Format(row), String::L_CLEAN))); + r.put_element(*var_context, *rownum_var_name, new VString(*new String(String::Body::Format(row), String::L_CLEAN))); if(value_var_name) - var_context->put_element(*value_var_name, new VTable(&table)); + r.put_element(*var_context, *value_var_name, new VTable(&table)); r.process_write(body_code); Request::Skip lskip=r.get_skip(); r.set_skip(Request::SKIP_NOTHING);