Advertisement
Guest User

Word Graph

a guest
Feb 15th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. (function(){
  2.  
  3. var util = {
  4. getWordsForElement: function(elem) {
  5. var words = {};
  6.  
  7. if(elem.innerText){
  8. // split text into words... removing any special characters we don't want
  9. var pieces = elem.innerText.toLowerCase().replace(/[^A-Za-z\-'\s]/g, '').split(/\s/);
  10.  
  11. for(var i = 0; i < pieces.length; i++){
  12. var piece = pieces[i];
  13.  
  14. // don't add too short strings or numbers to our list
  15. if(!piece || piece.length < 4 || piece.match(/[\d\-']+/))
  16. continue;
  17.  
  18. if(words[piece]){
  19. words[piece]++;
  20. } else {
  21. words[piece] = 1;
  22. }
  23. }
  24. }
  25.  
  26. for(var i = 0; i < elem.children.length; i++){
  27. util.merge(words, util.getWordsForElement(elem.children[i]));
  28. }
  29.  
  30. return words;
  31. },
  32. merge: function(target, source) {
  33. var sourceNames = Object.getOwnPropertyNames(source);
  34.  
  35. for(var i = 0; i < sourceNames.length; i++){
  36. var name = sourceNames[i];
  37.  
  38. if(target[name]){
  39. target[name] += source[name];
  40. } else {
  41. target[name] = source[name];
  42. }
  43.  
  44. }
  45. }
  46. }; // util end
  47.  
  48. var wordCounts = getWordsForElement(document.body);
  49. var words = Object.getOwnPropertyNames(wordCounts).sort(function(a, b) {
  50. if (a < b) //sort string ascending
  51. return -1;
  52. if (a > b)
  53. return 1;
  54.  
  55. return 0;
  56. });
  57.  
  58. var max = wordCounts[words[0]];
  59. var min = wordCounts[words[0]];
  60.  
  61. for(var i = 1; i < words.length; i++){
  62. if(wordCounts[words[i]] > max)
  63. max = wordCounts[words[i]];
  64. if(wordCounts[words[i]] < min)
  65. min = wordCounts[words[i]];
  66. }
  67.  
  68. var minFont = 8;
  69. var maxFont = 50;
  70.  
  71. var wrapper = document.createElement('div');
  72. wrapper.style.cssText = 'position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 10000; padding: 100px; background-color: rgba(255, 255, 255, 0.9); display: flex; flex-wrap: wrap; align-items: baseline;';
  73.  
  74. for(var i = 0; i < words.length; i++) {
  75.  
  76. var element = document.createElement('div');
  77. element.style.cssText = 'color: #154394; padding: 0 10px;';
  78. element.innerText = words[i];
  79. element.style.fontSize = Math.round(((maxFont - minFont) * (wordCounts[words[i]] / (max - min))) + minFont) + 'px';
  80.  
  81. wrapper.appendChild(element);
  82. }
  83.  
  84. document.body.prepend(wrapper);
  85.  
  86. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement