diff options
author | Sébastien Dailly <sebastien@chimrod.com> | 2020-12-16 14:39:42 +0100 |
---|---|---|
committer | Sébastien Dailly <sebastien@chimrod.com> | 2020-12-16 14:39:42 +0100 |
commit | 4f262d6540281487f79870aff589ca92f5d2f6c6 (patch) | |
tree | 940e59d943715366d1aa72bb93f248dcd65ab992 /matrix/Helpers.ml |
Initial commit
Diffstat (limited to 'matrix/Helpers.ml')
-rwxr-xr-x | matrix/Helpers.ml | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/matrix/Helpers.ml b/matrix/Helpers.ml new file mode 100755 index 0000000..6980052 --- /dev/null +++ b/matrix/Helpers.ml @@ -0,0 +1,16 @@ +(* Takes in a string and a separator, and separates the string into a list of + * substrings where each substring is between two separators or between a + * separator and the beginning/end of the string *) +let explode (s: string) (space: string) : string list = + let rec build (curr: string) (buffer: string) (lst: string list) : string list = + let len = String.length curr in + if len = 0 then buffer::lst + else + let c = String.sub curr (len - 1) 1 in + if len = 1 then (c ^ buffer)::lst + else + let s' = String.sub curr 0 (len - 1) in + if c = space then build s' "" (buffer::lst) + else build s' (c ^ buffer) lst in + build (String.trim s) "" [] + |