--- parser3/tests/185.html 2008/07/16 17:35:43 1.1
+++ parser3/tests/185.html 2010/07/03 07:21:52 1.6
@@ -1,4 +1,4 @@
-@main[]
+@main[]
$request:charset[UTF-8]
$response:charset[UTF-8]
$response:content-type[
@@ -6,58 +6,117 @@ $response:content-type[
$.charset[$response:charset]
]
+$str[ab^taint["]"cd^taint[xml][&]&ef]
+
^$str[$str] [^str.length[]]
+^^str.left[]: ^left[$str]
+^^str.left(-2): ^left[$str](-2)
+^^str.left(4): ^left[$str](4)
+^^str.left(9): ^left[$str](9)
+^^str.left(20): ^left[$str](20)
+^^str.right[]: ^right[$str]
+^^str.right(-3): ^right[$str](-3)
+^^str.right(4): ^right[$str](4)
+^^str.right(9): ^right[$str](9)
+^^str.right(30): ^right[$str](30)
+^^str.mid(1;8): ^mid[$str](1;8)
+^^str.mid(2;0): ^mid[$str](2;0)
+^^str.mid(3;-1): ^mid[$str](3;-1)
+^^str.mid(7): ^mid[$str](7)
+^^str.mid(8;99): ^mid[$str](8;99)
+^^str.mid(40): ^mid[$str](40)
+^^str.mid(40;2): ^mid[$str](40;2)
+^^str.mid(-5): ^mid[$str](-5)
+^^str.mid(-5;2): ^mid[$str](-5;2)
+
+
$str[о сколько нам открытий чудных...10.11.2005]
$length(^str.length[]) ^rem{ *** length in real chars (not in bytes) == 42 *** }
^taint[as-is][
-^$str[$str]
- 01234567890123456789012345678901234567890123456789
+^$str[$str] [^str.length[]]
+ 01234567890123456789012345678901234567890123456789
]
-^^str.length[]: ^str.length[]
-
-#=^str.right(5)=
-#=^str.mid(43;2)=
-
+^^str.pos[]: ^try{^str.pos[]}{$exception.handled(1)error}
+^^str.pos[^$empty]: ^str.pos[$empty]
^pos[$str;о]
+^pos[$str;о;2]
^pos[$str; ]
^pos[$str;чудных]
^pos[$str;2005]
^pos[$str;zzz]
-
+
- | N |
- ^^str.left(N) |
- ^^str.right(N)
- | ^^str.mid(N;Z)
+ | L |
+ ^^str.left(L) [^^substr.length[]]
+ | R |
+ ^^str.right(R) [^^substr.length[]]
+ | N, O |
+ ^^str.mid(N;O)
^for[i](0;$length\2+1){
|
- | ^eval($i*2) |
- ^left[$str]($i*2) |
- ^right[$str]($i*2) |
- ^mid[$str]($i*2;3) |
+ $iLeft($i*2+$i%2)
+ $iLeft |
+ ^left[$str]($iLeft) |
+
+ $iRight($i*2+($i+1)%2)
+ $iRight |
+ ^right[$str]($iRight) |
+
+ $iMid($i*2)
+ $iLength(^if($i%2)(3;4))
+ $iMid, $iLength |
+ ^mid[$str]($iMid;$iLength) |
}
+@left[str;num][substr]
+^try{
+ ^if(def $num){
+ $substr[^str.left($num)]
+ }{
+ $substr[^str.left[]]
+ }
+ $result['$substr' [^substr.length[]]]
+}{
+ $exception.handled(1)
+ $result[error]
+}
-
-@left[str;num]
-'^str.left($num)'
-
-
-
-@right[str;num]
-'^str.right($num)'
-
+@right[str;num][substr]
+^try{
+ ^if(def $num){
+ $substr[^str.right($num)]
+ }{
+ $substr[^str.right[]]
+ }
+ $result['$substr' [^substr.length[]]]
+}{
+ $exception.handled(1)
+ $result[error]
+}
@mid[str;num;count]
-'^str.mid($num;$count)'
-
+^try{
+ ^if(def $num){
+ ^if(def $count){
+ $substr[^str.mid($num;$count)]
+ }{
+ $substr[^str.mid($num)]
+ }
+ }{
+ $substr[^str.mid[]]
+ }
+ $result['$substr' [^substr.length[]]]
+}{
+ $exception.handled(1)
+ $result[error]
+}
-@pos[str;substr]
-^^str.pos[$substr]: ^str.pos[$substr]
+@pos[str;substr;offset]
+^^str.pos[$substr]^if(def $offset){($offset)}: ^if(def $offset){^str.pos[$substr]($offset)}{^str.pos[$substr]}