--- parser3/src/classes/table.C 2001/04/03 05:23:37 1.44 +++ parser3/src/classes/table.C 2001/04/03 08:23:06 1.47 @@ -1,11 +1,11 @@ /** @file - Parser: table parser class. + Parser: @b table parser class. Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) Author: Alexander Petrosyan (http://design.ru/paf) - $Id: table.C,v 1.44 2001/04/03 05:23:37 paf Exp $ + $Id: table.C,v 1.47 2001/04/03 08:23:06 paf Exp $ */ #include "pa_config_includes.h" @@ -27,7 +27,7 @@ static void _set(Request& r, const Strin // forcing {this body type} r.fail_if_junction_(false, *vdata, method_name, "body must be junction"); - Temp_lang temp_lang(r, String::UL_AS_IS); + Temp_lang temp_lang(r, String::UL_PASS_APPENDED); const String& data=r.process(*vdata).as_string(); size_t pos_after=0; @@ -93,8 +93,7 @@ static void _load(Request& r, const Stri if(char *row_chars=getrow(&data)) do { String *name=new(pool) String(pool); - // never reaches user, can mark it 'clean' - name->APPEND_CLEAN(lsplit(&row_chars, '\t'), 0, file, line++); + name->APPEND_TAINTED(lsplit(&row_chars, '\t'), 0, file, line++); *columns+=name; } while(row_chars); } @@ -377,27 +376,18 @@ static void _flip(Request& r, const Stri vtable.set_table(new_table); } -/// @test use String::split static void _append(Request& r, const String& method_name, Array *params) { Pool& pool=r.pool(); // data is last parameter Value *value=static_cast(params->get(0)); - // forcing [this body type] - r.fail_if_junction_(true, *value, method_name, "body must not be junction"); + // forcing {this body type} + r.fail_if_junction_(false, *value, method_name, "body must be junction"); - const String& string=static_cast(value)->as_string(); + const String& string=r.process(*value).as_string(); // parse cells Array& row=*new(pool) Array(pool); - size_t pos_after=0; - int pos_before; - while((pos_before=string.pos("\t", 1, pos_after, String::UL_CLEAN))>=0) { - row+=&string.piece(pos_after, pos_before); - pos_after=pos_before+1/*\t*/; - } - // last piece - if(pos_after(r.self)->table()+=&row; }