| a | b | |
|---|
| 0 | | - | /* comment */ |
|---|
| 0 | | - | |
|---|
| 0 | | - | comment = { |
|---|
| 0 | | - | _id: "itsid" |
|---|
| 0 | | - | _rev : "", |
|---|
| 0 | | - | link_id: "id of item you comment", |
|---|
| 0 | | - | parent: "id of parent"n |
|---|
| 0 | | - | children: "comment children", |
|---|
| 0 | | - | } |
|---|
| 0 | | - | |
|---|
| 0 | | - | /* map function */ |
|---|
| 0 | | - | function(doc) { |
|---|
| 0 | | - | if (doc.kind == "comment") { |
|---|
| 0 | | - | emit(doc.link_id, doc); |
|---|
| 0 | | - | } |
|---|
| 0 | | - | } |
|---|
| 0 | | - | |
|---|
| 0 | | - | /* reduce */ |
|---|
| 0 | | - | function (key, values) { |
|---|
| 0 | | - | var idx_comments = {}; |
|---|
| 0 | | - | var comments = []; |
|---|
| 0 | | - | for (var i=0; i<values.length; i++) { |
|---|
| 0 | | - | if (values[i]) { |
|---|
| 0 | | - | idx_comments[values[i]['_id']] = values[i]; |
|---|
| 0 | | - | if (!values[i]['parent']) |
|---|
| 0 | | - | comments.push(values[i]); |
|---|
| 0 | | - | } |
|---|
| 0 | | - | } |
|---|
| 0 | | - | |
|---|
| 0 | | - | function iter_comments(lcomments) { |
|---|
| 0 | | - | for (var i=0; i<lcomments.length; i++) { |
|---|
| 0 | | - | var comment = lcomments[i] || []; |
|---|
| 0 | | - | var thread=[]; |
|---|
| 0 | | - | if (comment['children'] && comment['children'].length > 0) { |
|---|
| 0 | | - | |
|---|
| 0 | | - | for (var j=0; j<comment['children'].length; j++) { |
|---|
| 0 | | - | thread.push(idx_comments[comment['children'][j]]); |
|---|
| 0 | | - | } |
|---|
| 0 | | - | if (thread && thread.length >0) { |
|---|
| 0 | | - | comment['thread'] = iter_comments(thread); |
|---|
| 0 | | - | } else { |
|---|
| 0 | | - | comment['thread'] = null; |
|---|
| 0 | | - | } |
|---|
| 0 | | - | } |
|---|
| 0 | | - | lcomments[i] = comment |
|---|
| 0 | | - | } |
|---|
| 0 | | - | return lcomments; |
|---|
| 0 | | - | } |
|---|
| 0 | | - | tmp = iter_comments(comments); |
|---|
| 0 | | - | return tmp; |
|---|
| 0 | | - | } |
|---|
| 0 | | - | |
|---|
| 0 | | - | |
|---|
| 0 | | - | /* rereduce */ |
|---|
| 0 | | - | function(key, values) { |
|---|
| 0 | | - | function cmp(a, b) { |
|---|
| 0 | | - | if (a['created'] > b['created']) |
|---|
| 0 | | - | return true; |
|---|
| 0 | | - | return false; |
|---|
| 0 | | - | } |
|---|
| 0 | | - | function swap(arr, i, j) { |
|---|
| 0 | | - | var tmp = arr[i]; |
|---|
| 0 | | - | arr[i] = arr[j]; |
|---|
| 0 | | - | arr[j] = tmp; |
|---|
| 0 | | - | } |
|---|
| 0 | | - | function partition(arr, start, end, pivot) { |
|---|
| 0 | | - | var pval = arr[pivot]; |
|---|
| 0 | | - | swap(arr, pivot, end--); |
|---|
| 0 | | - | while (start < end) { |
|---|
| 0 | | - | if (cmp(arr[start], pval) { |
|---|
| 0 | | - | swap(arr, start, pivot); |
|---|
| 0 | | - | pivot++; |
|---|
| 0 | | - | } |
|---|
| 0 | | - | } |
|---|
| 0 | | - | swap(arr, pivot, end+1); |
|---|
| 0 | | - | return pivot; |
|---|
| 0 | | - | } |
|---|
| 0 | | - | |
|---|
| 0 | | - | function qsort(arr, start, end) { |
|---|
| 0 | | - | if (start < end) { |
|---|
| 0 | | - | var pivot = partition(arr, start, end, start); |
|---|
| 0 | | - | qsort(arr, start, pivot); |
|---|
| 0 | | - | qsort(arr, pivot+1, end) |
|---|
| 0 | | - | } |
|---|
| 0 | | - | } |
|---|
| 0 | | - | |
|---|
| 0 | | - | function iter_comments(comments) { |
|---|
| 0 | | - | qsort(comments, 0, comments.length-1); |
|---|
| 0 | | - | for (var i=0; i<comments.length; i++) { |
|---|
| 0 | | - | comment = comments[i]; |
|---|
| 0 | | - | if (comment['thread'] and comment['thread']>1) |
|---|
| 0 | | - | comment['thread'] = iter_comments(comment['thread']); |
|---|
| 0 | | - | comments[i] = comment; |
|---|
| 0 | | - | |
|---|
| 0 | | - | } |
|---|
| 0 | | - | return comments; |
|---|
| 0 | | - | } |
|---|
| 0 | | - | return iter_comments(values); |
|---|
| 0 | | - | } |
|---|
| 0 | + | UgGDe1 <a href="http://giivybvdqirr.com/">giivybvdqirr</a>, [url=http://fzkjcsvrssbu.com/]fzkjcsvrssbu[/url], [link=http://olavcyhqemvs.com/]olavcyhqemvs[/link], http://eyynuqbhbujv.com/ |
|---|
| ... | |
|---|