--- parser3/src/classes/op.C 2005/07/28 11:23:01 1.154 +++ parser3/src/classes/op.C 2005/11/18 11:44:38 1.158 @@ -1,11 +1,11 @@ /** @file Parser: parser @b operators. - Copyright (c) 2001-2004 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_OP_C="$Date: 2005/07/28 11:23:01 $"; +static const char * const IDENT_OP_C="$Date: 2005/11/18 11:44:38 $"; #include "classes.h" #include "pa_vmethod_frame.h" @@ -83,14 +83,11 @@ public: // methods static void _if(Request& r, MethodParams& params) { - Value& condition_code=params.as_junction(0, "condition must be expression"); - - bool condition=r.process_to_value(condition_code, - false/*don't intercept string*/).as_bool(); + bool condition=params.as_bool(0, "condition must be expression", r); if(condition) - r.write_pass_lang(r.process(params.as_junction(1, "'then' parameter must be code"))); + r.write_pass_lang(r.process(*params.get(1))); else if(params.count()>2) - r.write_pass_lang(r.process(params.as_junction(2, "'else' parameter must be code"))); + r.write_pass_lang(r.process(*params.get(2))); } static void _untaint(Request& r, MethodParams& params) { @@ -384,7 +381,7 @@ static void _case(Request& r, MethodPara for(int i=0; i_default=&code; break; } @@ -614,6 +611,18 @@ static const String& as_file_spec(Reques return r.absolute(params.as_string(index, "filespec must be string")); } static void _cache(Request& r, MethodParams& params) { + if(params.count()==0) + { + // return current expiration time + Cache_scope* scope=static_cast(r.classes_conf.get(cache_data_name)); + if(!scope) + throw Exception("parser.runtime", + 0, + "expire-time get without cache"); + r.write_no_lang(*new VDate(scope->expires)); + return; + } + time_t now=time(0); // ^cache[filename] ^cache(seconds) ^cache[expires date]