--- parser3/src/classes/table.C 2001/08/10 07:10:17 1.102 +++ parser3/src/classes/table.C 2001/08/21 11:12:20 1.105 @@ -5,19 +5,15 @@ Author: Alexander Petrosyan (http://design.ru/paf) */ -static const char *RCSId="$Id: table.C,v 1.102 2001/08/10 07:10:17 parser Exp $"; - -#include "pa_config_includes.h" - -#include "pcre.h" +static const char *RCSId="$Id: table.C,v 1.105 2001/08/21 11:12:20 parser Exp $"; #include "classes.h" +#include "pa_config_includes.h" #include "pa_common.h" #include "pa_request.h" #include "pa_vtable.h" #include "pa_vint.h" #include "pa_sql_connection.h" -#include "pa_dir.h" #include "pa_vbool.h" // defines @@ -441,8 +437,8 @@ static void _sort(Request& r, const Stri Value& key_maker=params->as_junction(0, "key-maker must be code"); bool reverse=params->size()==2/*..[desc|asc|]*/? - reverse=params->as_no_junction(1, "order must not be code").as_string()=="asc": - false; + reverse=params->as_no_junction(1, "order must not be code").as_string()=="desc": + false; // default=asc Table& old_table=static_cast(r.self)->table(); Table& new_table=*new(pool) Table(pool, &method_name, old_table.columns()); @@ -660,81 +656,6 @@ static void _sql(Request& r, const Strin static_cast(r.self)->set_table(*result); } -static void _dir(Request& r, const String& method_name, MethodParams *params) { - Pool& pool=r.pool(); - - Value& relative_path=params->as_no_junction(0, "path must not be code"); - - const String *regexp; - pcre *regexp_code; - int ovecsize; - int *ovector; - if(params->size()>1) { - regexp=¶ms->as_no_junction(1, "regexp must not be code").as_string(); - - const char *pattern=regexp->cstr(String::UL_AS_IS); - const char *errptr; - int erroffset; - regexp_code=pcre_compile(pattern, PCRE_EXTRA | PCRE_DOTALL, - &errptr, &erroffset, - r.pcre_tables); - - if(!regexp_code) - PTHROW(0, 0, - ®exp->mid(erroffset, regexp->size()), - "regular expression syntax error - %s", errptr); - - ovector=(int *)malloc(sizeof(int)*(ovecsize=(1/*match*/)*3)); - } else - regexp_code=0; - - - const char* absolute_path_cstr=r.absolute(relative_path.as_string()) - .cstr(String::UL_FILE_NAME); - - Array& columns=*new(pool) Array(pool); - columns+=new(pool) String(pool, "name"); - Table& table=*new(pool) Table(pool, &method_name, &columns); - - LOAD_DIR(absolute_path_cstr, - size_t file_name_size=strlen(ffblk.ff_name); - bool suits=true; - if(regexp_code) { - int exec_result=pcre_exec(regexp_code, 0, - ffblk.ff_name, file_name_size, 0, - 0, ovector, ovecsize); - - if(exec_result==PCRE_ERROR_NOMATCH) - suits=false; - else if(exec_result<0) { - (*pcre_free)(regexp_code); - PTHROW(0, 0, - regexp, - "regular expression execute (%d)", - exec_result); - } - } - - if(suits) { - char *file_name_cstr=(char *)r.malloc(file_name_size); - memcpy(file_name_cstr, ffblk.ff_name, file_name_size); - String &file_name=*new(pool) String(pool); - file_name.APPEND(file_name_cstr, file_name_size, String::UL_FILE_NAME, - method_name.origin().file, method_name.origin().line); - - Array& row=*new(pool) Array(pool); - row+=&file_name; - table+=&row; - } - ); - - if(regexp_code) - (*pcre_free)(regexp_code); - - // replace any previous table value - static_cast(r.self)->set_table(table); -} - static void _columns(Request& r, const String& method_name, MethodParams *) { Pool& pool=r.pool(); @@ -820,10 +741,6 @@ MTable::MTable(Pool& apool) : Methoded(a // ^table:sql[query][$.limit(1) $.offset(2)] add_native_method("sql", Method::CT_DYNAMIC, _sql, 1, 2); - // ^table:dir[path] - // ^table:dir[path][regexp] - add_native_method("dir", Method::CT_DYNAMIC, _dir, 1, 2); - // ^table:columns[] add_native_method("columns", Method::CT_DYNAMIC, _columns, 0, 0); }