comparison lib/ur/string.ur @ 2021:2da693675de9

String.trim; add OnChange to more tags
author Adam Chlipala <adam@chlipala.net>
date Tue, 10 Jun 2014 10:58:22 -0400
parents 65fbb250b875
children 1a4b2b983889
comparison
equal deleted inserted replaced
2020:924e2ef31f5a 2021:2da693675de9
84 None => cdata s 84 None => cdata s
85 | Some (s1, s2) => <xml>{[s1]}<br/>{newlines s2}</xml> 85 | Some (s1, s2) => <xml>{[s1]}<br/>{newlines s2}</xml>
86 86
87 fun isPrefix {Full = f, Prefix = p} = 87 fun isPrefix {Full = f, Prefix = p} =
88 length f >= length p && substring f {Start = 0, Len = length p} = p 88 length f >= length p && substring f {Start = 0, Len = length p} = p
89
90 fun trim s =
91 let
92 val len = length s
93
94 fun findStart i =
95 if i < len && Char.isSpace (sub s i) then
96 findStart (i+1)
97 else
98 i
99
100 fun findFinish i =
101 if i >= 0 && Char.isSpace (sub s i) then
102 findFinish (i-1)
103 else
104 i
105
106 val start = findStart 0
107 val finish = findFinish (len - 1)
108 in
109 if finish >= start then
110 substring s {Start = start, Len = finish - start + 1}
111 else
112 ""
113 end