|
|
| version 1.9, 2024/09/22 17:01:23 | version 1.10, 2024/09/22 18:23:22 |
|---|---|
| Line 144 static void _join(Request& r, MethodPara | Line 144 static void _join(Request& r, MethodPara |
| static void _sql(Request& r, MethodParams& params) {} | static void _sql(Request& r, MethodParams& params) {} |
| static void mid(Request& r, ArrayValue::Action_options o) { | static void mid(Request& r, size_t offset=0, size_t limit=ARRAY_OPTION_LIMIT_ALL) { |
| ArrayValue& array=GET_SELF(r, VArray).array(); | ArrayValue& array=GET_SELF(r, VArray).array(); |
| if(o.limit>0){ | if(limit>0){ |
| VArray *result=new VArray; | VArray *result=new VArray; |
| ArrayValue& result_array=result->array(); | ArrayValue& result_array=result->array(); |
| for(ArrayValue::Iterator i(array); i; i.next()){ | for(ArrayValue::Iterator i(array); i; i.next()){ |
| if(i.value()){ | if(i.value()){ |
| if(o.offset > 0){ | if(offset > 0){ |
| o.offset--; | offset--; |
| continue; | continue; |
| } | } |
| if(o.limit-- == 0) | if(limit-- == 0) |
| break; | break; |
| result_array+=i.value(); | result_array+=i.value(); |
| } | } |
| Line 168 static void mid(Request& r, ArrayValue:: | Line 168 static void mid(Request& r, ArrayValue:: |
| static void _left(Request& r, MethodParams& params) { | static void _left(Request& r, MethodParams& params) { |
| int sn=params.as_int(0, "n must be int", r); | int sn=params.as_int(0, "n must be int", r); |
| mid(r, ArrayValue::Action_options(0, sn < 0 ? 0 : sn)); | mid(r, 0, sn < 0 ? 0 : sn); |
| } | } |
| static void _right(Request& r, MethodParams& params) { | static void _right(Request& r, MethodParams& params) { |
| Line 177 static void _right(Request& r, MethodPar | Line 177 static void _right(Request& r, MethodPar |
| if(sn>0){ | if(sn>0){ |
| size_t used=GET_SELF(r, VArray).array().used(); | size_t used=GET_SELF(r, VArray).array().used(); |
| if(sn<used){ | if(sn<used){ |
| mid(r, ArrayValue::Action_options(used-sn, sn)); | mid(r, used-sn, sn); |
| } else { | } else { |
| mid(r, ArrayValue::Action_options()); | mid(r); |
| } | } |
| } else { | } else { |
| mid(r, ArrayValue::Action_options(0, 0)); | mid(r, 0, 0); |
| } | } |
| } | } |
| Line 200 static void _mid(Request& r, MethodParam | Line 200 static void _mid(Request& r, MethodParam |
| int n=params.as_int(1, "n must be int", r); | int n=params.as_int(1, "n must be int", r); |
| if(n<0) | if(n<0) |
| throw Exception(PARSER_RUNTIME, 0, "n(%d) must be >=0", n); | throw Exception(PARSER_RUNTIME, 0, "n(%d) must be >=0", n); |
| mid(r, ArrayValue::Action_options(begin, n)); | mid(r, begin, n); |
| } else { | } else { |
| mid(r, ArrayValue::Action_options(begin)); | mid(r, begin); |
| } | } |
| } | } |