comparison lib/ur/string.ur @ 1390:65fbb250b875

More string processing
author Adam Chlipala <adam@chlipala.net>
date Thu, 13 Jan 2011 10:02:50 -0500
parents 9a721f0722d3
children 2da693675de9
comparison
equal deleted inserted replaced
1389:9a721f0722d3 1390:65fbb250b875
8 8
9 val sub = Basis.strsub 9 val sub = Basis.strsub
10 val suffix = Basis.strsuffix 10 val suffix = Basis.strsuffix
11 11
12 val index = Basis.strindex 12 val index = Basis.strindex
13 fun sindex r = Basis.strsindex r.Haystack r.Needle
13 val atFirst = Basis.strchr 14 val atFirst = Basis.strchr
14 15
15 fun mindex {Haystack = s, Needle = chs} = 16 fun mindex {Haystack = s, Needle = chs} =
16 let 17 let
17 val n = Basis.strcspn s chs 18 val n = Basis.strcspn s chs
48 None => None 49 None => None
49 | Some i => Some (substring s {Start = 0, Len = i}, 50 | Some i => Some (substring s {Start = 0, Len = i},
50 sub s i, 51 sub s i,
51 suffix s (i + 1)) 52 suffix s (i + 1))
52 53
54 fun ssplit r =
55 case sindex r of
56 None => None
57 | Some i => Some (substring r.Haystack {Start = 0, Len = i},
58 suffix r.Haystack (i + length r.Needle))
59
53 fun all f s = 60 fun all f s =
54 let 61 let
55 val len = length s 62 val len = length s
56 63
57 fun al i = 64 fun al i =