|
|
| version 1.97, 2002/02/08 08:30:10 | version 1.99, 2002/04/10 09:53:14 |
|---|---|
| Line 50 static void _int(Request& r, const Strin | Line 50 static void _int(Request& r, const Strin |
| if(!default_code) // we have a problem when no default | if(!default_code) // we have a problem when no default |
| /*re*/throw; | /*re*/throw; |
| else | else |
| converted=r.process(*default_code).as_int(); | converted=r.process_to_value(*default_code).as_int(); |
| } | } |
| Value& result=*new(pool) VInt(pool, converted); | Value& result=*new(pool) VInt(pool, converted); |
| Line 69 static void _double(Request& r, const St | Line 69 static void _double(Request& r, const St |
| if(!default_code) // we have a problem when no default | if(!default_code) // we have a problem when no default |
| /*re*/throw; | /*re*/throw; |
| else | else |
| converted=r.process(*default_code).as_double(); | converted=r.process_to_value(*default_code).as_double(); |
| } | } |
| Value& result=*new(pool) VDouble(pool, converted); | Value& result=*new(pool) VDouble(pool, converted); |
| Line 82 static void _double(Request& r, const St | Line 82 static void _double(Request& r, const St |
| Value& fmt_maybe_code=params->get(0); | Value& fmt_maybe_code=params->get(0); |
| // for some time due to stupid {} in original design | // for some time due to stupid {} in original design |
| const String& fmt= | const String& fmt=r.process_to_string(fmt_maybe_code); |
| (fmt_maybe_code.get_junction()?r.process(fmt_maybe_code):fmt_maybe_code).as_string(); | |
| char *buf=format(pool, r.self->as_double(), fmt.cstr()); | char *buf=format(pool, r.self->as_double(), fmt.cstr()); |
| Line 215 static void replace_action(Table& table, | Line 214 static void replace_action(Table& table, |
| Junction *junction=ai.replacement_code->get_junction(); | Junction *junction=ai.replacement_code->get_junction(); |
| Value *saved_match_var_value=junction->root->get_element(*match_var_name); | Value *saved_match_var_value=junction->root->get_element(*match_var_name); |
| junction->root->put_element(*match_var_name, &vtable); | junction->root->put_element(*match_var_name, &vtable); |
| Value& replaced=ai.request->process(*ai.replacement_code, ai.origin, false); | const String& replaced=ai.request->process_to_string(*ai.replacement_code, ai.origin); |
| junction->root->put_element(*match_var_name, saved_match_var_value); | junction->root->put_element(*match_var_name, saved_match_var_value); |
| /* | /* |
| Line 223 static void replace_action(Table& table, | Line 222 static void replace_action(Table& table, |
| *ai.dest << *(String *)row->get(1/*match* /); | *ai.dest << *(String *)row->get(1/*match* /); |
| ai.dest->APPEND_CONST(")"); | ai.dest->APPEND_CONST(")"); |
| */ | */ |
| *ai.dest << replaced.as_string(); | *ai.dest << replaced; |
| } | } |
| ai.post_match=(String *)row->get(2/*post_match*/); | ai.post_match=(String *)row->get(2/*post_match*/); |
| } else // end | } else // end |
| Line 270 static void _match(Request& r, const Str | Line 269 static void _match(Request& r, const Str |
| }; | }; |
| src.match( | src.match( |
| &method_name, | &method_name, |
| r.process(regexp).as_string(), options, | r.process_to_string(regexp), options, |
| &table, | &table, |
| replace_action, &replace_action_info); | replace_action, &replace_action_info); |
| result=new(pool) VString(dest); | result=new(pool) VString(dest); |
| Line 308 public: | Line 307 public: |
| void add_column(void *ptr, size_t size) { | void add_column(void *ptr, size_t size) { |
| if(got_column) | if(got_column) |
| throw Exception(0, 0, | throw Exception("parser.runtime", |
| &statement_string, | &statement_string, |
| "result must contain exactly one column"); | "result must contain exactly one column"); |
| got_column=true; | got_column=true; |
| Line 317 public: | Line 316 public: |
| void add_row() { /* ignore */ } | void add_row() { /* ignore */ } |
| void add_row_cell(void *ptr, size_t size) { | void add_row_cell(void *ptr, size_t size) { |
| if(got_cell) | if(got_cell) |
| throw Exception(0, 0, | throw Exception("parser.runtime", |
| &statement_string, | &statement_string, |
| "result must not contain more then one row"); | "result must not contain more then one row"); |
| got_cell=true; | got_cell=true; |
| Line 348 const String* sql_result_string(Request& | Line 347 const String* sql_result_string(Request& |
| if(voptions.is_defined()) | if(voptions.is_defined()) |
| if(options=voptions.get_hash(&method_name)) { | if(options=voptions.get_hash(&method_name)) { |
| if(Value *vlimit=(Value *)options->get(*sql_limit_name)) | if(Value *vlimit=(Value *)options->get(*sql_limit_name)) |
| limit=(ulong)r.process(*vlimit).as_double(); | limit=(ulong)r.process_to_value(*vlimit).as_double(); |
| if(Value *voffset=(Value *)options->get(*sql_offset_name)) | if(Value *voffset=(Value *)options->get(*sql_offset_name)) |
| offset=(ulong)r.process(*voffset).as_double(); | offset=(ulong)r.process_to_value(*voffset).as_double(); |
| if(default_code=(Value *)options->get(*sql_default_name)) { | if(default_code=(Value *)options->get(*sql_default_name)) { |
| if(!default_code->get_junction()) | if(!default_code->get_junction()) |
| throw Exception(0, 0, | throw Exception("parser.runtime", |
| &method_name, | &method_name, |
| "default option must be code"); | "default option must be code"); |
| } | } |
| } else | } else |
| throw Exception(0, 0, | throw Exception("parser.runtime", |
| &method_name, | &method_name, |
| "options must be hash"); | "options must be hash"); |
| } else | } else |
| options=0; | options=0; |
| Temp_lang temp_lang(r, String::UL_SQL); | Temp_lang temp_lang(r, String::UL_SQL); |
| const String& statement_string=r.process(statement).as_string(); | const String& statement_string=r.process_to_string(statement); |
| const char *statement_cstr= | const char *statement_cstr= |
| statement_string.cstr(String::UL_UNSPECIFIED, r.connection(&method_name)); | statement_string.cstr(String::UL_UNSPECIFIED, r.connection(&method_name)); |
| String_sql_event_handlers handlers(pool, statement_string, statement_cstr); | String_sql_event_handlers handlers(pool, statement_string, statement_cstr); |
| Line 375 const String* sql_result_string(Request& | Line 374 const String* sql_result_string(Request& |
| handlers); | handlers); |
| } catch(const Exception& e) { // query problem | } catch(const Exception& e) { // query problem |
| // give more specific source [were url] | // give more specific source [were url] |
| throw Exception(e.type(), e.code(), | throw Exception("sql.execute", |
| &statement_string, | &statement_string, |
| "%s", e.comment()); | "%s", e.comment()); |
| } | } |
| Line 394 static void _sql(Request& r, const Strin | Line 393 static void _sql(Request& r, const Strin |
| const String *string=sql_result_string(r, method_name, params, options, default_code); | const String *string=sql_result_string(r, method_name, params, options, default_code); |
| if(!string) { | if(!string) { |
| if(default_code) { | if(default_code) { |
| string=r.process(*default_code).get_string(); | string=&r.process_to_string(*default_code); |
| if(!string) | if(!string) |
| string=new(pool) String(pool); | string=new(pool) String(pool); |
| } else | } else |
| throw Exception(0, 0, | throw Exception("parser.runtime", |
| &method_name, | &method_name, |
| "produced no result, but no default option specified"); | "produced no result, but no default option specified"); |
| } | } |
| Line 413 static void _replace(Request& r, const S | Line 412 static void _replace(Request& r, const S |
| Table *table=params->as_no_junction(0, "parameter must not be code").get_table(); | Table *table=params->as_no_junction(0, "parameter must not be code").get_table(); |
| if(!table) | if(!table) |
| throw Exception(0, 0, | throw Exception("parser.runtime", |
| &method_name, | &method_name, |
| "parameter must be table"); | "parameter must be table"); |
| Line 433 static void _save(Request& r, const Stri | Line 432 static void _save(Request& r, const Stri |
| if(mode=="append") | if(mode=="append") |
| do_append=true; | do_append=true; |
| else | else |
| throw Exception(0, 0, | throw Exception("parser.runtime", |
| &mode, | &mode, |
| "unknown mode, must be 'append'"); | "unknown mode, must be 'append'"); |
| } | } |