PageSourceSearch

https://ethno.by/assets/js/jquery.tagcloud.js

js ethno.by collected 2026-09-25 07:22:17 UTC 2,359 bytes, 92 lines download raw bytes

1/*!
2 * jquery.tagcloud.js
3 * A Simple Tag Cloud Plugin for JQuery
4 *
5 * https://github.com/addywaddy/jquery.tagcloud.js
6 * created by Adam Groves
7 */
8(function($) {
9
10  /*global jQuery*/
11  "use strict";
12
13  var compareWeights = function(a, b)
14  {
15    return a - b;
16  };
17
18  // Converts hex to an RGB array
19  var toRGB = function(code) {
20    if (code.length === 4) {
21      code = code.replace(/(\w)(\w)(\w)/gi, "\$1\$1\$2\$2\$3\$3");
22    }
23    var hex = /(\w{2})(\w{2})(\w{2})/.exec(code);
24    return [parseInt(hex[1], 16), parseInt(hex[2], 16), parseInt(hex[3], 16)];
25  };
26
27  // Converts an RGB array to hex
28  var toHex = function(ary) {
29    return "#" + jQuery.map(ary, function(i) {
30      var hex =  i.toString(16);
31      hex = (hex.length === 1) ? "0" + hex : hex;
32      return hex;
33    }).join("");
34  };
35
36  var colorIncrement = function(color, range) {
37    return jQuery.map(toRGB(color.end), function(n, i) {
38      return (n - toRGB(color.start)[i])/range;
39    });
40  };
41
42  var tagColor = function(color, increment, weighting) {
43    var rgb = jQuery.map(toRGB(color.start), function(n, i) {
44      var ref = Math.round(n + (increment[i] * weighting));
45      if (ref > 255) {
46        ref = 255;
47      } else {
48        if (ref < 0) {
49          ref = 0;
50        }
51      }
52      return ref;
53    });
54    return toHex(rgb);
55  };
56
57  $.fn.tagcloud = function(options) {
58
59    var opts = $.extend({}, $.fn.tagcloud.defaults, options);
60    var tagWeights = this.map(function(){
61      return $(this).attr("rel");
62    });
63    tagWeights = jQuery.makeArray(tagWeights).sort(compareWeights);
64    var lowest = tagWeights[0];
65    var highest = tagWeights.pop();
66    var range = highest - lowest;
67    if(range === 0) {range = 1;}
68    // Sizes
69    var fontIncr, colorIncr;
70    if (opts.size) {
71      fontIncr = (opts.size.end - opts.size.start)/range;
72    }
73    // Colors
74    if (opts.color) {
75      colorIncr = colorIncrement (opts.color, range);
76    }
77    return this.each(function() {
78      var weighting = $(this).attr("rel") - lowest;
79      if (opts.size) {
80        $(this).css({"font-size": opts.size.start + (weighting * fontIncr) + opts.size.unit});
81      }
82      if (opts.color) {
83        $(this).css({"color": tagColor(opts.color, colorIncr, weighting)});
84      }
85    });
86  };
87
88  $.fn.tagcloud.defaults = {
89    size: {start: 14, end: 18, unit: "pt"}
90  };
91
92})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.