--- Revision None +++ Revision 303139353737 @@ -0,0 +1,99 @@ +/* comment */ + +comment = { + _id: "itsid" + _rev : "", + link_id: "id of item you comment", + parent: "id of parent"n + children: "comment children", +} + +/* map function */ +function(doc) { + if (doc.kind == "comment") { + emit(doc.link_id, doc); + } +} + +/* reduce */ +function (key, values) { + var idx_comments = {}; + var comments = []; + for (var i=0; i 0) { + + for (var j=0; j0) { + comment['thread'] = iter_comments(thread); + } else { + comment['thread'] = null; + } + } + lcomments[i] = comment + } + return lcomments; + } + tmp = iter_comments(comments); + return tmp; +} + + +/* rereduce */ +function(key, values) { + function cmp(a, b) { + if (a['created'] > b['created']) + return true; + return false; + } + function swap(arr, i, j) { + var tmp = arr[i]; + arr[i] = arr[j]; + arr[j] = tmp; + } + function partition(arr, start, end, pivot) { + var pval = arr[pivot]; + swap(arr, pivot, end--); + while (start < end) { + if (cmp(arr[start], pval) { + swap(arr, start, pivot); + pivot++; + } + } + swap(arr, pivot, end+1); + return pivot; + } + + function qsort(arr, start, end) { + if (start < end) { + var pivot = partition(arr, start, end, start); + qsort(arr, start, pivot); + qsort(arr, pivot+1, end) + } + } + + function iter_comments(comments) { + qsort(comments, 0, comments.length-1); + for (var i=0; i1) + comment['thread'] = iter_comments(comment['thread']); + comments[i] = comment; + + } + return comments; + } + return iter_comments(values); +}