|
|
| version 1.147, 2005/11/22 11:21:35 | version 1.151, 2007/02/03 18:08:38 |
|---|---|
| Line 88 static void _double(Request& r, MethodPa | Line 88 static void _double(Request& r, MethodPa |
| r.write_no_lang(*new VDouble(converted)); | r.write_no_lang(*new VDouble(converted)); |
| } | } |
| static void _bool(Request& r, MethodParams& params) { | |
| const String& self_string=GET_SELF(r, VString).string(); | |
| bool converted; | |
| try { | |
| if(self_string.is_empty()) | |
| throw Exception("parser.runtime", | |
| 0, | |
| "parameter is empty string, error converting"); | |
| converted=self_string.as_bool(); | |
| } catch(...) { // convert problem | |
| if(params.count()>0) | |
| converted=params.as_bool(0, "default must be bool", r); // (default) | |
| else | |
| rethrow; // we have a problem when no default | |
| } | |
| r.write_no_lang(*new VBool(converted)); | |
| } | |
| /*not static*/void _string_format(Request& r, MethodParams& params) { | /*not static*/void _string_format(Request& r, MethodParams& params) { |
| Value& fmt_maybe_code=params[0]; | Value& fmt_maybe_code=params[0]; |
| Line 323 static void _match(Request& r, MethodPar | Line 342 static void _match(Request& r, MethodPar |
| regexp.as_string(), options, | regexp.as_string(), options, |
| search_action, 0, | search_action, 0, |
| just_matched); | just_matched); |
| Value* result; | // Value* result; |
| if(table) | // if(table) |
| result=new VTable(table); // table of pre/match/post+substrings | // result=new VTable(table); // table of pre/match/post+substrings |
| else | // else |
| result=new VBool(just_matched); | // result=new VBool(just_matched); |
| r.write_assign_lang(*result); | // r.write_assign_lang(*result); |
| r.write_assign_lang(*new VTable(table)); | |
| } else { // replace | } else { // replace |
| Value& replacement_code=params.as_junction(2, "replacement param must be code"); | Value& replacement_code=params.as_junction(2, "replacement param must be code"); |
| Line 446 const String* sql_result_string(Request& | Line 466 const String* sql_result_string(Request& |
| } | } |
| if((default_code=options->get(sql_default_name))) { | if((default_code=options->get(sql_default_name))) { |
| valid_options++; | valid_options++; |
| if(!default_code->get_junction()) | |
| throw Exception("parser.runtime", | |
| 0, | |
| "default option must be code"); | |
| } | } |
| if(valid_options!=options->count()) | if(valid_options!=options->count()) |
| throw Exception("parser.runtime", | throw Exception("parser.runtime", |
| Line 591 static void _base64(Request& r, MethodPa | Line 607 static void _base64(Request& r, MethodPa |
| if(params.count()) { | if(params.count()) { |
| // decode | // decode |
| const char* cstr=params.as_string(0, "parameter must be string").cstr(); | const char* cstr=params.as_string(0, "parameter must be string").cstr(); |
| void* decoded_cstr=0; | char* decoded_cstr=0; |
| size_t decoded_size=0; | size_t decoded_size=0; |
| pa_base64_decode(cstr, strlen(cstr), decoded_cstr, decoded_size); | pa_base64_decode(cstr, strlen(cstr), decoded_cstr, decoded_size); |
| if(decoded_cstr && decoded_size) | if(decoded_cstr && decoded_size) |
| r.write_assign_lang(*new String(static_cast<const char*>(decoded_cstr), decoded_size, true)); | r.write_assign_lang(*new String(decoded_cstr, decoded_size, true)); |
| } else { | } else { |
| // encode | // encode |
| VString& vself=GET_SELF(r, VString); | VString& self=GET_SELF(r, VString); |
| const char* cstr=vself.string().cstr(); | const char* cstr=self.string().cstr(); |
| const char* encoded=pa_base64_encode(cstr, strlen(cstr)); | const char* encoded=pa_base64_encode(cstr, strlen(cstr)); |
| r.write_assign_lang(*new String(encoded, 0, true/*once ?param=base64(something) was needed*/)); | r.write_assign_lang(*new String(encoded, 0, true/*once ?param=base64(something) was needed*/)); |
| } | } |
| Line 617 MString::MString(): Methoded("string") { | Line 633 MString::MString(): Methoded("string") { |
| // ^string.double[] | // ^string.double[] |
| // ^string.double(default) | // ^string.double(default) |
| add_native_method("double", Method::CT_DYNAMIC, _double, 0, 1); | add_native_method("double", Method::CT_DYNAMIC, _double, 0, 1); |
| // ^void.bool[] | |
| // ^void.bool(default) | |
| add_native_method("bool", Method::CT_DYNAMIC, _bool, 0, 1); | |
| // ^string.format{format} | // ^string.format{format} |
| add_native_method("format", Method::CT_DYNAMIC, _string_format, 1, 1); | add_native_method("format", Method::CT_DYNAMIC, _string_format, 1, 1); |