[Turn on line numbering]arg text; var word, out, escaped, token, i, pre_count, open_form, str; // break text into a list of tokens. if (type(text) == 'string) text = [text]; out = []; word = ""; escaped = 0; // pre_count is 0, except inside pre, when it counts the {}'s pre_count = 0; open_form = 0; for str in (text) { str = str.explode(" ", 1); for token in (str) { refresh(); if (!token && !pre_count) continue; while ((i = token.match_regexp("[][{}=\:]"))) { refresh(); i = i[1][1]; if (escaped) { escaped = 0; word = word + "\" + token.subrange(1, i); } else if (pre_count) { if (token[i] == "{") { pre_count++; word += token.subrange(1, i); } else if (token[i] == "}") { pre_count--; if (pre_count) { word += token.subrange(1, i); } else { word += token.subrange(1, i - 1); out = word ? out + [word, token[i]] : out + [token[i]]; word = ""; } } else { word += token.subrange(1, i); } } else { word += token.subrange(1, i - 1); open_form = token[i] == "{"; if (token[i] == "\") { escaped = 1; } else { out = word ? out + [word, token[i]] : out + [token[i]]; word = ""; } } token = token.subrange(i + 1); } if (open_form && token == "quote") { pre_count = 1; open_form = 0; out += [token]; token = ""; continue; } word += token; if (escaped || pre_count) { escaped = 0; word += " "; } else { out = word ? out + [word, " "] : out + [" "]; word = ""; } } if (pre_count) word = word ? word.subrange(1, word.length() - 1) + " " : " "; } if (word) out += [word]; if (out) { if (out.last() == " ") out = out.subrange(1, out.length() - 1); else out = out.replace(out.length(), out.last().subrange(out.last().length() - 1)); } return out;
// Created 17-Jul-1996 as a part of ColdCore, see: @help Credit