|
|
| version 1.106, 2002/04/19 11:59:43 | version 1.109, 2002/04/22 14:25:41 |
|---|---|
| Line 88 static void _left(Request& r, const Stri | Line 88 static void _left(Request& r, const Stri |
| size_t n=(size_t)params->as_int(0, "n must be int", r); | size_t n=(size_t)params->as_int(0, "n must be int", r); |
| const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode()); | const String& string=static_cast<VString *>(r.self)->string(); |
| r.write_assign_lang(string.mid(0, n)); | r.write_assign_lang(string.mid(0, n)); |
| } | } |
| Line 97 static void _right(Request& r, const Str | Line 97 static void _right(Request& r, const Str |
| size_t n=(size_t)params->as_int(0, "n must be int", r); | size_t n=(size_t)params->as_int(0, "n must be int", r); |
| const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode()); | const String& string=static_cast<VString *>(r.self)->string(); |
| r.write_assign_lang(string.mid(string.size()-n, string.size())); | r.write_assign_lang(string.mid(string.size()-n, string.size())); |
| } | } |
| static void _mid(Request& r, const String&, MethodParams *params) { | static void _mid(Request& r, const String&, MethodParams *params) { |
| Pool& pool=r.pool(); | Pool& pool=r.pool(); |
| const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode()); | const String& string=*r.self->get_string(); |
| size_t p=(size_t)params->as_int(0, "p must be int", r); | size_t p=(size_t)params->as_int(0, "p must be int", r); |
| size_t n=params->size()>1? | size_t n=params->size()>1? |
| Line 117 static void _pos(Request& r, const Strin | Line 117 static void _pos(Request& r, const Strin |
| Value& substr=params->as_no_junction(0, "substr must not be code"); | Value& substr=params->as_no_junction(0, "substr must not be code"); |
| const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode()); | const String& string=static_cast<VString *>(r.self)->string(); |
| r.write_assign_lang(*new(pool) VInt(pool, string.pos(substr.as_string()))); | r.write_assign_lang(*new(pool) VInt(pool, string.pos(substr.as_string()))); |
| } | } |
| Line 131 static void split_list(Request& r, const | Line 131 static void split_list(Request& r, const |
| static void _lsplit(Request& r, const String& method_name, MethodParams *params) { | static void _lsplit(Request& r, const String& method_name, MethodParams *params) { |
| Pool& pool=r.pool(); | Pool& pool=r.pool(); |
| const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode()); | const String& string=*r.self->get_string(); |
| Array pieces(pool); | Array pieces(pool); |
| split_list(r, method_name, params, string, pieces); | split_list(r, method_name, params, string, pieces); |
| Line 152 static void _lsplit(Request& r, const St | Line 152 static void _lsplit(Request& r, const St |
| static void _rsplit(Request& r, const String& method_name, MethodParams *params) { | static void _rsplit(Request& r, const String& method_name, MethodParams *params) { |
| Pool& pool=r.pool(); | Pool& pool=r.pool(); |
| const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode()); | const String& string=*r.self->get_string(); |
| Array pieces(pool); | Array pieces(pool); |
| split_list(r, method_name, params, string, pieces); | split_list(r, method_name, params, string, pieces); |
| Line 223 static void _match(Request& r, const Str | Line 223 static void _match(Request& r, const Str |
| const String& src=static_cast<VString *>(r.self)->string(); | const String& src=static_cast<VString *>(r.self)->string(); |
| bool was_global; | bool was_global; |
| bool matched=src.match(0, | bool matched=src.match( |
| &method_name, | &method_name, |
| regexp.as_string(), options, | regexp.as_string(), options, |
| &table, | &table, |
| Line 239 static void _match(Request& r, const Str | Line 239 static void _match(Request& r, const Str |
| r.write_assign_lang(*result); | r.write_assign_lang(*result); |
| } else { // replace | } else { // replace |
| char* src_cstr; | char* src_cstr; |
| const String& src=static_cast<VString *>(r.self)->optimized_string(r.origins_mode(), &src_cstr); | const String& src=*r.self->get_string(); |
| 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 254 static void _match(Request& r, const Str | Line 254 static void _match(Request& r, const Str |
| Temp_value_element temp_match_var( | Temp_value_element temp_match_var( |
| *replacement_code.get_junction()->root, | *replacement_code.get_junction()->root, |
| *match_var_name, &vtable); | *match_var_name, &vtable); |
| src.match(src_cstr, | src.match( |
| &method_name, | &method_name, |
| r.process_to_string(regexp), options, | r.process_to_string(regexp), options, |
| &table, | &table, |
| Line 391 static void _sql(Request& r, const Strin | Line 391 static void _sql(Request& r, const Strin |
| static void _replace(Request& r, const String& method_name, MethodParams *params) { | static void _replace(Request& r, const String& method_name, MethodParams *params) { |
| Pool& pool=r.pool(); | Pool& pool=r.pool(); |
| const String& src=static_cast<VString *>(r.self)->optimized_string(false/*unused*/, | const String& src=*r.self->get_string(); |
| 0/*cstr not needed*/, true/*optimization forced, | |
| so that replace fould strings that span across pices*/); | |
| 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) |
| Line 428 static void _save(Request& r, const Stri | Line 426 static void _save(Request& r, const Stri |
| buf, strlen(buf), true, do_append); | buf, strlen(buf), true, do_append); |
| } | } |
| static void _optimize(Request& r, const String& method_name, MethodParams * /*params*/) { | |
| r.write_assign_lang(r.self->get_string()->join_chains(r.pool(), 0/*cstr*/)); | |
| } | |
| // constructor | // constructor |
| MString::MString(Pool& apool) : Methoded(apool, "string") { | MString::MString(Pool& apool) : Methoded(apool, "string") { |
| Line 477 MString::MString(Pool& apool) : Methoded | Line 479 MString::MString(Pool& apool) : Methoded |
| // ^string.save[file] | // ^string.save[file] |
| add_native_method("save", Method::CT_DYNAMIC, _save, 1, 2); | add_native_method("save", Method::CT_DYNAMIC, _save, 1, 2); |
| // ^string.optimize[] | |
| add_native_method("optimize", Method::CT_DYNAMIC, _optimize, 0, 0); | |
| } | } |
| // global variable | // global variable |