PageRenderTime 54ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/share/spice/reddit_search/spice.js

http://github.com/duckduckgo/zeroclickinfo-spice
JavaScript | 50 lines | 50 code | 0 blank | 0 comment | 11 complexity | 99f3d350a6acaeb9f5bc1a5b2d8be623 MD5 | raw file
Possible License(s): Apache-2.0
  1. function ddg_spice_reddit(re) {
  2. var query = decodeURIComponent(rq);
  3. var subreddit = query.match(/\/?r\/\w+/);
  4. var restrict_sr = false;
  5. var header = '(reddit)';
  6. if (subreddit) {
  7. subreddit = subreddit[0];
  8. restrict_sr = 'true';
  9. } else if (query.split(' ')[0] == 'subreddit') {
  10. subreddit = query.split(' ')[1];
  11. restrict_sr = 'true';
  12. }
  13. if (restrict_sr == 'true') {
  14. subreddit.replace(/^\/?r\//g, "");
  15. header = "(<a href='http://reddit.com" + subreddit
  16. + "'>subreddit " + subreddit + "</a>)";
  17. }
  18. query = query.replace(/^\s*(\/?r\/\w+|reddit|subreddit\s*\w+)\s+/, "");
  19. header = query + " " + header;
  20. re = re.data.children;
  21. var content = '';
  22. for (var i=0; i < re.length; i++) {
  23. result = re[i].data;
  24. content += "<a href='" + result.url + "'>" + result.title + "</a>"
  25. + " [<a href='http://www.reddit.com" + result.permalink
  26. + "'>" + result.num_comments
  27. + (result.num_comments === 1 ? " comment</a>]" : " comments</a>]")
  28. + " (" + result.domain + ", " + result.score
  29. + (result.score === 1 ? " point)" : " points)")
  30. + "<br>";
  31. if (i == 4) break;
  32. }
  33. items = new Array();
  34. items[0] = new Array();
  35. items[0]["a"] = content;
  36. items[0]["h"] = header;
  37. items[0]["s"] = "Reddit";
  38. items[0]["u"] = "http://www.reddit.com/r/";
  39. if (restrict_sr) {
  40. items[0]["u"] += subreddit.substr(3)
  41. + "/search?q=" + query
  42. + "&restrict_sr=true&sort=relevance";
  43. } else {
  44. items[0]["u"] += "duckduckgo/search?q=" + query
  45. + "&restrict_sr=false&sort=relevance";
  46. }
  47. items[0]["force_big_header"] = true;
  48. items[0]["force_space_after"] = true;
  49. nra(items);
  50. };