[Turn off line numbering]1: arg trie, key, @values; 2: var n, word; 3: 4: // This still ain't working. Current problem: values get mingled 5: if (trie[1]) { 6: if (key == trie[1][1]) 7: return trie.replace(1, [key, @values]); 8: word = trie[1][1]; 9: if (word) { 10: if (!(n = word[1] in trie[2])) 11: trie = [@trie.replace(2, trie[2] + word[1]), ._add([0, ""], word.subrange(2), @trie[1].subrange(2))]; 12: else 13: trie = trie.replace(n + 2, ._add(trie[n + 2], word.subrange(2), @trie[1].subrange(2), @values)); 14: trie = trie.replace(1, 0); 15: } 16: } 17: if (!trie[1] && trie.length() == 2 || !key) 18: return trie.replace(1, [key, @values]); 19: if (!(n = key[1] in trie[2])) 20: return [@trie.replace(2, trie[2] + key[1]), ._add([0, ""], key.subrange(2), @values)]; 21: 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