aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/ur/string.ur
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2011-01-11 18:04:52 -0500
committerGravatar Adam Chlipala <adam@chlipala.net>2011-01-11 18:04:52 -0500
commit4eb2a196fa24d52462f3f325d73952fe2d1c12cd (patch)
tree5e3b768a97aef4741f8ba13b7b6d80490fe39b12 /lib/ur/string.ur
parent138f64b8f02f05e6073f61b1db2c3d5e805b75c0 (diff)
Some more string parsing functions; naughtyDebug
Diffstat (limited to 'lib/ur/string.ur')
-rw-r--r--lib/ur/string.ur18
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/ur/string.ur b/lib/ur/string.ur
index 235e5939..a93f7a57 100644
--- a/lib/ur/string.ur
+++ b/lib/ur/string.ur
@@ -24,17 +24,31 @@ fun mindex {Haystack = s, Needle = chs} =
fun substring s {Start = start, Len = len} = Basis.substring s start len
+fun seek s ch =
+ case index s ch of
+ None => None
+ | Some i => Some (suffix s (i + 1))
+fun mseek {Haystack = s, Needle = chs} =
+ case mindex {Haystack = s, Needle = chs} of
+ None => None
+ | Some i => Some (sub s i, suffix s (i + 1))
+
fun split s ch =
case index s ch of
None => None
| Some i => Some (substring s {Start = 0, Len = i},
- substring s {Start = i + 1, Len = length s - i - 1})
+ suffix s (i + 1))
+fun split' s ch =
+ case index s ch of
+ None => None
+ | Some i => Some (substring s {Start = 0, Len = i},
+ suffix s i)
fun msplit {Haystack = s, Needle = chs} =
case mindex {Haystack = s, Needle = chs} of
None => None
| Some i => Some (substring s {Start = 0, Len = i},
sub s i,
- substring s {Start = i + 1, Len = length s - i - 1})
+ suffix s (i + 1))
fun all f s =
let