--- parser3/src/classes/table.C 2016/10/26 15:44:49 1.337 +++ parser3/src/classes/table.C 2016/12/26 20:37:53 1.340 @@ -22,7 +22,7 @@ #define USE_STRINGSTREAM #endif -volatile const char * IDENT_TABLE_C="$Id: table.C,v 1.337 2016/10/26 15:44:49 moko Exp $"; +volatile const char * IDENT_TABLE_C="$Id: table.C,v 1.340 2016/12/26 20:37:53 moko Exp $"; // class @@ -711,13 +711,13 @@ static void _csv_string(Request& r, Meth table_to_csv(ost, table, control_chars, output_column_names); - r.write_no_lang(*new VString(*new String(pa_strdup(ost.str().c_str()), String::L_CLEAN))); + r.write(*new VString(*new String(pa_strdup(ost.str().c_str()), String::L_CLEAN))); #else String sdata; table_to_csv(sdata, table, control_chars, output_column_names); - r.write_no_lang(*new VString(*new String(sdata.cstr(), String::L_CLEAN))); + r.write(*new VString(*new String(sdata.cstr(), String::L_CLEAN))); #endif } @@ -737,12 +737,12 @@ static void _count(Request& r, MethodPar } else result = table.count(); - r.write_no_lang(*new VInt(result)); + r.write(*new VInt(result)); } static void _line(Request& r, MethodParams&) { int result=1+GET_SELF(r, VTable).table().current(); - r.write_no_lang(*new VInt(result)); + r.write(*new VInt(result)); } static void _offset(Request& r, MethodParams& params) { @@ -762,7 +762,7 @@ static void _offset(Request& r, MethodPa int offset=params.as_int(params.count()-1, "offset must be expression", r); table.offset(absolute, offset); } else - r.write_no_lang(*new VInt(table.current())); + r.write(*new VInt(table.current())); } static void _menu(Request& r, MethodParams& params) { @@ -786,12 +786,12 @@ static void _menu(Request& r, MethodPara const String* s_processed=sv_processed.get_string(); if(s_processed && !s_processed->is_empty()) { // we have body if(need_delim) // need delim & iteration produced string? - r.write_pass_lang(r.process(*delim_maybe_code)); + r.write(r.process(*delim_maybe_code)); else need_delim=true; } - r.write_pass_lang(sv_processed); + r.write(sv_processed); if(lskip==Request::SKIP_BREAK) break; @@ -986,8 +986,8 @@ static void _hash(Request& r, MethodPara throw Exception(PARSER_RUNTIME, 0, "value field(s) must be string or table or code"); } - if(value_type==C_STRING && value_fields.count()!=1) - throw Exception(PARSER_RUNTIME, 0, "you can specify only one value field with option $.type[string]"); + if(value_type==C_STRING && value_fields.count()>1) + throw Exception(PARSER_RUNTIME, 0, "you can't specify more then one value field with option $.type[string]"); { Value* key_param=¶ms[0]; @@ -1013,7 +1013,7 @@ static void _hash(Request& r, MethodPara } } } - r.write_no_lang(result); + r.write(result); } #ifndef DOXYGEN @@ -1044,9 +1044,7 @@ static int sort_cmp_double(const void *a static void _sort(Request& r, MethodParams& params) { Value& key_maker=params.as_junction(0, "key-maker must be code"); - bool reverse=params.count()>1/*..[desc|asc|]*/? - reverse=params.as_no_junction(1, "order must not be code").as_string()=="desc": - false; // default=asc + bool reverse=params.count()>1 /*..[desc|asc|]*/ && params.as_no_junction(1, "order must not be code").as_string()=="desc"; // default=asc Table& old_table=GET_SELF(r, VTable).table(); Table& new_table=*new Table(old_table.columns()); @@ -1124,7 +1122,7 @@ static void _locate(Request& r, MethodPa bool result=params[0].get_junction() || (params.count() == 1) ? _locate_expression(table, r, params) : _locate_name_value(table, r, params); - r.write_no_lang(VBool::get(result)); + r.write(VBool::get(result)); } @@ -1142,7 +1140,7 @@ static void _flip(Request& r, MethodPara new_table+=new_row; } - r.write_no_lang(*new VTable(&new_table)); + r.write(*new VTable(&new_table)); } static void _foreach(Request& r, MethodParams& params) { @@ -1179,12 +1177,12 @@ static void _foreach(Request& r, MethodP const String* s_processed=sv_processed.get_string(); if(s_processed && !s_processed->is_empty()) { // we have body if(need_delim) // need delim & iteration produced string? - r.write_pass_lang(r.process(*delim_maybe_code)); + r.write(r.process(*delim_maybe_code)); else need_delim=true; } - r.write_pass_lang(sv_processed); + r.write(sv_processed); if(lskip==Request::SKIP_BREAK) break; @@ -1448,7 +1446,7 @@ static void _columns(Request& r, MethodP } } - r.write_no_lang(*new VTable(&result_table)); + r.write(*new VTable(&result_table)); } static void _select(Request& r, MethodParams& params) { @@ -1511,7 +1509,7 @@ static void _select(Request& r, MethodPa source_table.set_current(saved_current); } - r.write_no_lang(*new VTable(&result_table)); + r.write(*new VTable(&result_table)); } // constructor