Method code for $string.explode_delimited()

[Turn on line numbering]
arg str, left, right;
var pattern, parsed, matched, match_num, match_result;

// parse str looking for anything surrounded by left and right
// ;$string.explode_delimited("foo<bar>baz", "<", ">")  
// => [["foo", 1, "baz"], ["bar"]]
pattern = "*" + left + "*" + right + "*";
parsed = [];
matched = [];
match_num = 0;
anticipate_assignment();
while (str) {
    match_result = match_pattern(str, pattern);
    if (match_result) {
        match_num++;
        parsed += [match_result[1], match_num];
        matched += [match_result[2]];
        str = match_result[3];
    } else {
        parsed += [str];
        str = "";
    }
}
return [parsed, matched];

// Created 27-Mar-1995 as a part of ColdCore, see: @help Credit

Tlon