[Turn on line numbering]arg trie, key, @values; var n, word; // This still ain't working. Current problem: values get mingled if (trie[1]) { if (key == trie[1][1]) return trie.replace(1, [key, @values]); word = trie[1][1]; if (word) { if (!(n = word[1] in trie[2])) trie = [@trie.replace(2, trie[2] + word[1]), ._add([0, ""], word.subrange(2), @trie[1].subrange(2))]; else trie = trie.replace(n + 2, ._add(trie[n + 2], word.subrange(2), @trie[1].subrange(2), @values)); trie = trie.replace(1, 0); } } if (!trie[1] && trie.length() == 2 || !key) return trie.replace(1, [key, @values]); if (!(n = key[1] in trie[2])) return [@trie.replace(2, trie[2] + key[1]), ._add([0, ""], key.subrange(2), @values)]; return trie.replace(n + 2, ._add(trie[n + 2], key.subrange(2), @values));
// Miroslav Silovic
// Created 10-May-1995 as a part of ColdCore, see: @help Credit