diff --git a/README.textile b/README.md similarity index 54% rename from README.textile rename to README.md index 0ff9c39..ea5df43 100644 --- a/README.textile +++ b/README.md @@ -1,23 +1,27 @@ -h1. jQCloud: beautiful word clouds with jQuery +jQCloud: beautiful word clouds with jQuery +========================================== -jQCloud is a jQuery plugin that builds neat and pure HTML + CSS word clouds and tag clouds that are actually shaped like a cloud (otherwise, why would we call them 'word clouds'?). +jQCloud is a jQuery plugin that builds neat and pure HTML + CSS word clouds and tag clouds that are actually shaped like a cloud (otherwise, why should we call them 'word clouds'?). You can see a "demo here":http://www.lucaongaro.eu/demos/jqcloud/ -h2. Installation +Installation +------------ Installing jQCloud is extremely simple: -# Make sure to import the jQuery library in your project. -# Download the jQCloud files. Place "jqcloud-0.2.6.js":https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud-0.2.6.js (or the minified version "jqcloud-0.2.6.min.js":https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud-0.2.6.min.js) and "jqcloud.css":https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud.css somewhere in your project and import both of them in your HTML code. +1. Make sure to import the jQuery library in your project. +2. Download the jQCloud files. Place [jqcloud-0.2.6.js](https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud-0.2.6.js) (or the minified version [jqcloud-0.2.6.min.js](https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud-0.2.6.min.js)) and [jqcloud.css](https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud.css) somewhere in your project and import both of them in your HTML code. You can easily substitute jqcloud.css with a custom CSS stylesheet following the guidelines explained later. -h2. Usage +Usage +----- Once you imported the .js and .css files, drawing a cloud is as simple as this: -bc. +```javascript + jQCloud Example @@ -39,6 +43,7 @@ bc. * url: a URL to which the word will be linked. It will be used as the href attribute of an HTML anchor. * title: an HTML title for the that will contain the word(s) * callback: a function to be called after this word is rendered. Within the function, 'this' is the word element. + * handlers: an object specifying event handlers that will bind to the word (e.g.: {click: function() { alert("it works!"); } }) */ var word_list = [ {text: "Lorem", weight: 15}, @@ -59,8 +64,10 @@ bc.
+``` -h3. Options: +Options: +-------- Since version 0.2.0, jQCloud accepts an object containing configuration options as the second argument: @@ -71,78 +78,81 @@ bc. $("#example").jQCloud(word_list, { The full list of available options is the following: -* *width* (number): The width of the word cloud. Defaults to the width of the container element. -* *height* (number): The height of the word cloud. Defaults to the height of the container element. -* *center* (object): The x and y coordinates of the center of the word cloud (e.g.: {x: 300, y: 150}). Defaults to the center of the container element. -* *callback* (function): A callback function to be called after the cloud is fully rendered. This is different from the callbacks defined for each word in which this one is called after the whole cloud is rendered. -* *delayedMode* (boolean): If true, words are rendered one after another with a tiny delay between each one. This prevents freezing of the browser when there are many words to be rendered. If false, the cloud will be rendered in one single shot. By default, delayedMode is true when there are more than 50 words. -* *randomClasses* (number or array): If it's a number and higher than 0, each word will be assigned randomly to a class of kind @r1@, @r2@, ..., @rN@ with N = randomClasses. If it is an array of classes, each word will be assigned randomly to one of the classes in the array. This random class can be used for random CSS styling of words, for example to set a random color or random orientation (see @examples/vertical_words.html@). -* *handlers* (object): an object specifying event handlers to bind to words (e.g.: {click: function() { alert("it works!"); } }) -* *nofollow* (boolean): if true, all words linked to a URL will have the rel="nofollow" attribute. +* **width** (number): The width of the word cloud. Defaults to the width of the container element. +* **height** (number): The height of the word cloud. Defaults to the height of the container element. +* **center** (object): The x and y coordinates of the center of the word cloud (e.g.: {x: 300, y: 150}). Defaults to the center of the container element. +* **callback** (function): A callback function to be called after the cloud is fully rendered. This is different from the callbacks defined for each word in which this one is called after the whole cloud is rendered. +* **delayedMode** (boolean): If true, words are rendered one after another with a tiny delay between each one. This prevents freezing of the browser when there are many words to be rendered. If false, the cloud will be rendered in one single shot. By default, delayedMode is true when there are more than 50 words. +* **randomClasses** (number or array): If it's a number and higher than 0, each word will be assigned randomly to a class of kind `r1`, `r2`, ..., `rN` with N = randomClasses. If it is an array of classes, each word will be assigned randomly to one of the classes in the array. This random class can be used for random CSS styling of words, for example to set a random color or random orientation (see `examples/vertical_words.html`). +* **nofollow** (boolean): if true, all words linked to a URL will have the `rel="nofollow"` attribute. -h3. Note: +### Note: Since drawing the cloud is rather computationally intensive, cloud rendering isn't instantaneous. If you want to make sure that some code executes after the cloud is rendered, you can specify in the options a callback function: -bc. $("#example").jQCloud(word_list, { +```javascript +$("#example").jQCloud(word_list, { callback: function() { // This code executes after the cloud is fully rendered } }); +``` -h4. Deprecation warning: +#### Deprecation warning: Before version 0.2.0 jQCloud used to accept a callback function as the second argument. This way of specifying the callback function is deprecated and, although version 0.2.0 maintains backward compatibility, it will be removed in newer versions. If you need a callback function, use the 'callback' configuration option instead. -h2. Custom CSS guidelines +Custom CSS guidelines +--------------------- -The word cloud produced by jQCloud is made of pure HTML, so you can style it using CSS. When you call $("#example").jQCloud(...), the containing element is given a CSS class of "jqcloud", allowing for easy CSS targeting. The included CSS file jqcloud.css is intended as an example and as a base on which to develop your own custom style, defining dimensions and appearance of words in the cloud. When writing your custom CSS, just follow these guidelines: +The word cloud produced by jQCloud is made of pure HTML, so you can style it using CSS. When you call `$("#example").jQCloud(...)`, the containing element is given a CSS class of "jqcloud", allowing for easy CSS targeting. The included CSS file `jqcloud.css` is intended as an example and as a base on which to develop your own custom style, defining dimensions and appearance of words in the cloud. When writing your custom CSS, just follow these guidelines: * Always specify the dimensions of the container element (div.jqcloud in jqcloud.css). * The CSS attribute 'position' of the container element must be explicitly declared and different from 'static'. -* Specifying the style of the words (color, font, dimension, etc.) is super easy: words are wrapped in @@ tags with ten levels of importance corresponding to the following classes (in descending order of importance): w10, w9, w8, w7, w6, w5, w4, w3, w2, w1. +* Specifying the style of the words (color, font, dimension, etc.) is super easy: words are wrapped in `` tags with ten levels of importance corresponding to the following classes (in descending order of importance): w10, w9, w8, w7, w6, w5, w4, w3, w2, w1. h2. Examples -Just have a look at the examples directory provided in the project or see a "demo here":http://www.lucaongaro.eu/demos/jqcloud/. +Just have a look at the examples directory provided in the project or see a [demo here](http://www.lucaongaro.eu/demos/jqcloud/). -If you happen to use jQCloud in your projects, you can make me know (just contact me on "my website":http://www.lucaongaro.eu) and I can add a link to your website in a 'gallery' section, so that other people can take inspiration from it. +If you happen to use jQCloud in your projects, you can make me know (just contact me on [my website](http://www.lucaongaro.eu)) and I can add a link to your website in a 'gallery' section, so that other people can take inspiration from it. -h2. Contribute +Contribute +---------- -Contributes are welcome! To setup your build environment, make sure you have Ruby installed, as well as the @rake@ and @erb@ gems. Then, to build jQCloud, run: +Contributes are welcome! To setup your build environment, make sure you have Ruby installed, as well as the `rake` and `erb` gems. Then, to build jQCloud, run: bc. rake build -The newly-built distribution files will be put in the @jqcloud@ subdirectory. +The newly-built distribution files will be put in the `jqcloud` subdirectory. -If you make changes to the JavaScript source, to the README, to examples or to tests, make them to .erb files in the @src@ subdirectory: changes will be reflected in the distribution files as soon as you build jQCloud. Also, if you send me a pull request, please don't change the version.txt file. +If you make changes to the JavaScript source, to the README, to examples or to tests, make them to .erb files in the `src` subdirectory: changes will be reflected in the distribution files as soon as you build jQCloud. Also, if you send me a pull request, please don't change the version.txt file. h2. Changelog -0.2.6 Fix bug with handlers, add nofollow option (thanks to "strobotta":https://github.com/strobotta) and word callbacks. +0.2.6 Fix bug with handlers, add nofollow option (thanks to [strobotta](https://github.com/strobotta)) and word callbacks. -0.2.5 Add possiblity to bind event handlers to words (thanks to "astintzing":https://github.com/astintzing) +0.2.5 Add possiblity to bind event handlers to words (thanks to [astintzing](https://github.com/astintzing)) 0.2.4 Option randomClasses can be an array of classes among which a random class is selected for each word -0.2.3 Add option randomClasses, allowing for random CSS styling (inspired by issue about vertical words opened by "tttp":https://github.com/tttp) +0.2.3 Add option randomClasses, allowing for random CSS styling (inspired by issue about vertical words opened by [tttp](https://github.com/tttp)) -0.2.2 CSS improvements (as suggested by "NomikOS":https://github.com/NomikOS) +0.2.2 CSS improvements (as suggested by [NomikOS](https://github.com/NomikOS)) 0.2.1 Optimization and performance improvements (making 0.2.1 around 25% faster than 0.2.0) -0.2.0 Add configuration options, passed as the second argument of jQCloud (include ideas proposed by "mindscratch":https://github.com/mindscratch and "aaaa0441":https://github.com/aaaa0441) +0.2.0 Add configuration options, passed as the second argument of jQCloud (include ideas proposed by [mindscratch](https://github.com/mindscratch) and [aaaa0441](https://github.com/aaaa0441)) -0.1.8 Fix bug in the algorithm causing sometimes unbalanced layouts (thanks to "isamochernov":https://github.com/isamochernov) +0.1.8 Fix bug in the algorithm causing sometimes unbalanced layouts (thanks to [isamochernov](https://github.com/isamochernov)) -0.1.7 Remove duplicated @@ when word has an URL (thanks to "rbrancher":https://github.com/rbrancher) +0.1.7 Remove duplicated `` when word has an URL (thanks to [rbrancher](https://github.com/rbrancher)) -0.1.6 JavaScript-friendly URL encode 'url' option; Typecast 'weight' option to float (thanks to "nudesign":https://github.com/nudesign) +0.1.6 JavaScript-friendly URL encode 'url' option; Typecast 'weight' option to float (thanks to [nudesign](https://github.com/nudesign)) -0.1.5 Apply CSS style to a "jqcloud" class, automatically added (previously an id was used. Again, thanks to "seanahrens":https://github.com/seanahrens) +0.1.5 Apply CSS style to a "jqcloud" class, automatically added (previously an id was used. Again, thanks to [seanahrens](https://github.com/seanahrens)) -0.1.4 Fix bug with multiple clouds on the same page (kudos to "seanahrens":https://github.com/seanahrens) +0.1.4 Fix bug with multiple clouds on the same page (kudos to [seanahrens](https://github.com/seanahrens)) 0.1.3 Added possibility to pass a callback function and to specify a custom HTML title attribute for each word in the cloud diff --git a/Rakefile b/Rakefile index e3555ca..424452f 100644 --- a/Rakefile +++ b/Rakefile @@ -16,9 +16,9 @@ task :compile do f.write ERB.new(File.new(File.join("src", "jqcloud", "jqcloud.js.erb"), "r").read).result(binding) end - puts "Compiling README.textile" - File.open("README.textile", "w") do |f| - f.write ERB.new(File.new(File.join("src", "README.textile.erb"), "r").read).result(binding) + puts "Compiling README.md" + File.open("README.md", "w") do |f| + f.write ERB.new(File.new(File.join("src", "README.md.erb"), "r").read).result(binding) end puts "Compiling examples" diff --git a/jqcloud/jqcloud-0.2.6.js b/jqcloud/jqcloud-0.2.6.js index 5619625..5ebde6c 100644 --- a/jqcloud/jqcloud-0.2.6.js +++ b/jqcloud/jqcloud-0.2.6.js @@ -6,7 +6,7 @@ * Copyright 2011, Luca Ongaro * Licensed under the MIT license. * - * Date: Mon Nov 07 21:51:42 +0100 2011 + * Date: Tue Nov 08 21:29:01 +0100 2011 */ (function( $ ) { diff --git a/jqcloud/jqcloud-0.2.6.min.js b/jqcloud/jqcloud-0.2.6.min.js index e79074b..2c6f57c 100644 --- a/jqcloud/jqcloud-0.2.6.min.js +++ b/jqcloud/jqcloud-0.2.6.min.js @@ -6,6 +6,6 @@ * Copyright 2011, Luca Ongaro * Licensed under the MIT license. * - * Date: Mon Nov 07 21:39:07 +0100 2011 + * Date: Tue Nov 08 21:29:01 +0100 2011 */ (function(a){"use strict",a.fn.jQCloud=function(b,c){var d=this,e=d.attr("id"),f={width:d.width(),height:d.height(),center:{x:d.width()/2,y:d.height()/2},delayedMode:b.length>50,randomClasses:0,nofollow:!1};typeof c=="function"&&(c={callback:c}),c=a.extend(f,c||{}),d.addClass("jqcloud");var g=function(){var f=function(a,b){var c=function(a,b){return Math.abs(2*a.offsetLeft+a.offsetWidth-2*b.offsetLeft-b.offsetWidth)b.weight?-1:0});var h=2,i=[],j=c.width/c.height,k=function(g,k){var l=e+"_word_"+g,m="#"+l,n=typeof c.randomClasses=="number"&&c.randomClasses>0?" r"+Math.ceil(Math.random()*c.randomClasses):a.isArray(c.randomClasses)&&c.randomClasses.length>0?" "+c.randomClasses[Math.floor(Math.random()*c.randomClasses.length)]:"",o=6.28*Math.random(),p=0,q=Math.round((k.weight-b[b.length-1].weight)/(b[0].weight-b[b.length-1].weight)*9)+1,r=a("").attr("id",l).attr("class","w"+q).addClass(n).attr("title",k.title||k.text||""),s;k.url?(s=a("").attr("href",encodeURI(k.url).replace(/'/g,"%27")).text(k.text),!c.nofollow||s.attr("rel","nofollow")):s=k.text,r.append(s);if(!!k.handlers)for(var t in k.handlers)k.handlers.hasOwnProperty(t)&&typeof k.handlers[t]=="function"&&a(r).bind(t,k.handlers[t]);d.append(r);var u=r.width(),v=r.height(),w=c.center.x-u/2,x=c.center.y-v/2,y=r[0].style;y.position="absolute",y.left=w+"px",y.top=x+"px";while(f(document.getElementById(l),i))p+=h,o+=(g%2===0?1:-1)*h,w=c.center.x-u/2+p*Math.cos(o)*j,x=c.center.y+p*Math.sin(o)-v/2,y.left=w+"px",y.top=x+"px";i.push(document.getElementById(l)),typeof k.callback=="function"&&k.callback.call(r)},l=function(a){a=a||0,a.js":https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud-<%= version %>.js (or the minified version "jqcloud-<%= version %>.min.js":https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud-<%= version %>.min.js) and "jqcloud.css":https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud.css somewhere in your project and import both of them in your HTML code. +1. Make sure to import the jQuery library in your project. +2. Download the jQCloud files. Place [jqcloud-<%= version %>.js](https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud-<%= version %>.js) (or the minified version [jqcloud-<%= version %>.min.js](https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud-<%= version %>.min.js)) and [jqcloud.css](https://raw.github.com/DukeLeNoir/jQCloud/master/jqcloud/jqcloud.css) somewhere in your project and import both of them in your HTML code. You can easily substitute jqcloud.css with a custom CSS stylesheet following the guidelines explained later. -h2. Usage +Usage +----- Once you imported the .js and .css files, drawing a cloud is as simple as this: -bc. +```javascript + jQCloud Example @@ -39,6 +43,7 @@ bc. * url: a URL to which the word will be linked. It will be used as the href attribute of an HTML anchor. * title: an HTML title for the that will contain the word(s) * callback: a function to be called after this word is rendered. Within the function, 'this' is the word element. + * handlers: an object specifying event handlers that will bind to the word (e.g.: {click: function() { alert("it works!"); } }) */ var word_list = [ {text: "Lorem", weight: 15}, @@ -59,8 +64,10 @@ bc.
+``` -h3. Options: +Options: +-------- Since version 0.2.0, jQCloud accepts an object containing configuration options as the second argument: @@ -71,78 +78,81 @@ bc. $("#example").jQCloud(word_list, { The full list of available options is the following: -* *width* (number): The width of the word cloud. Defaults to the width of the container element. -* *height* (number): The height of the word cloud. Defaults to the height of the container element. -* *center* (object): The x and y coordinates of the center of the word cloud (e.g.: {x: 300, y: 150}). Defaults to the center of the container element. -* *callback* (function): A callback function to be called after the cloud is fully rendered. This is different from the callbacks defined for each word in which this one is called after the whole cloud is rendered. -* *delayedMode* (boolean): If true, words are rendered one after another with a tiny delay between each one. This prevents freezing of the browser when there are many words to be rendered. If false, the cloud will be rendered in one single shot. By default, delayedMode is true when there are more than 50 words. -* *randomClasses* (number or array): If it's a number and higher than 0, each word will be assigned randomly to a class of kind @r1@, @r2@, ..., @rN@ with N = randomClasses. If it is an array of classes, each word will be assigned randomly to one of the classes in the array. This random class can be used for random CSS styling of words, for example to set a random color or random orientation (see @examples/vertical_words.html@). -* *handlers* (object): an object specifying event handlers to bind to words (e.g.: {click: function() { alert("it works!"); } }) -* *nofollow* (boolean): if true, all words linked to a URL will have the rel="nofollow" attribute. +* **width** (number): The width of the word cloud. Defaults to the width of the container element. +* **height** (number): The height of the word cloud. Defaults to the height of the container element. +* **center** (object): The x and y coordinates of the center of the word cloud (e.g.: {x: 300, y: 150}). Defaults to the center of the container element. +* **callback** (function): A callback function to be called after the cloud is fully rendered. This is different from the callbacks defined for each word in which this one is called after the whole cloud is rendered. +* **delayedMode** (boolean): If true, words are rendered one after another with a tiny delay between each one. This prevents freezing of the browser when there are many words to be rendered. If false, the cloud will be rendered in one single shot. By default, delayedMode is true when there are more than 50 words. +* **randomClasses** (number or array): If it's a number and higher than 0, each word will be assigned randomly to a class of kind `r1`, `r2`, ..., `rN` with N = randomClasses. If it is an array of classes, each word will be assigned randomly to one of the classes in the array. This random class can be used for random CSS styling of words, for example to set a random color or random orientation (see `examples/vertical_words.html`). +* **nofollow** (boolean): if true, all words linked to a URL will have the `rel="nofollow"` attribute. -h3. Note: +### Note: Since drawing the cloud is rather computationally intensive, cloud rendering isn't instantaneous. If you want to make sure that some code executes after the cloud is rendered, you can specify in the options a callback function: -bc. $("#example").jQCloud(word_list, { +```javascript +$("#example").jQCloud(word_list, { callback: function() { // This code executes after the cloud is fully rendered } }); +``` -h4. Deprecation warning: +#### Deprecation warning: Before version 0.2.0 jQCloud used to accept a callback function as the second argument. This way of specifying the callback function is deprecated and, although version 0.2.0 maintains backward compatibility, it will be removed in newer versions. If you need a callback function, use the 'callback' configuration option instead. -h2. Custom CSS guidelines +Custom CSS guidelines +--------------------- -The word cloud produced by jQCloud is made of pure HTML, so you can style it using CSS. When you call $("#example").jQCloud(...), the containing element is given a CSS class of "jqcloud", allowing for easy CSS targeting. The included CSS file jqcloud.css is intended as an example and as a base on which to develop your own custom style, defining dimensions and appearance of words in the cloud. When writing your custom CSS, just follow these guidelines: +The word cloud produced by jQCloud is made of pure HTML, so you can style it using CSS. When you call `$("#example").jQCloud(...)`, the containing element is given a CSS class of "jqcloud", allowing for easy CSS targeting. The included CSS file `jqcloud.css` is intended as an example and as a base on which to develop your own custom style, defining dimensions and appearance of words in the cloud. When writing your custom CSS, just follow these guidelines: * Always specify the dimensions of the container element (div.jqcloud in jqcloud.css). * The CSS attribute 'position' of the container element must be explicitly declared and different from 'static'. -* Specifying the style of the words (color, font, dimension, etc.) is super easy: words are wrapped in @@ tags with ten levels of importance corresponding to the following classes (in descending order of importance): w10, w9, w8, w7, w6, w5, w4, w3, w2, w1. +* Specifying the style of the words (color, font, dimension, etc.) is super easy: words are wrapped in `` tags with ten levels of importance corresponding to the following classes (in descending order of importance): w10, w9, w8, w7, w6, w5, w4, w3, w2, w1. h2. Examples -Just have a look at the examples directory provided in the project or see a "demo here":http://www.lucaongaro.eu/demos/jqcloud/. +Just have a look at the examples directory provided in the project or see a [demo here](http://www.lucaongaro.eu/demos/jqcloud/). -If you happen to use jQCloud in your projects, you can make me know (just contact me on "my website":http://www.lucaongaro.eu) and I can add a link to your website in a 'gallery' section, so that other people can take inspiration from it. +If you happen to use jQCloud in your projects, you can make me know (just contact me on [my website](http://www.lucaongaro.eu)) and I can add a link to your website in a 'gallery' section, so that other people can take inspiration from it. -h2. Contribute +Contribute +---------- -Contributes are welcome! To setup your build environment, make sure you have Ruby installed, as well as the @rake@ and @erb@ gems. Then, to build jQCloud, run: +Contributes are welcome! To setup your build environment, make sure you have Ruby installed, as well as the `rake` and `erb` gems. Then, to build jQCloud, run: bc. rake build -The newly-built distribution files will be put in the @jqcloud@ subdirectory. +The newly-built distribution files will be put in the `jqcloud` subdirectory. -If you make changes to the JavaScript source, to the README, to examples or to tests, make them to .erb files in the @src@ subdirectory: changes will be reflected in the distribution files as soon as you build jQCloud. Also, if you send me a pull request, please don't change the version.txt file. +If you make changes to the JavaScript source, to the README, to examples or to tests, make them to .erb files in the `src` subdirectory: changes will be reflected in the distribution files as soon as you build jQCloud. Also, if you send me a pull request, please don't change the version.txt file. h2. Changelog -0.2.6 Fix bug with handlers, add nofollow option (thanks to "strobotta":https://github.com/strobotta) and word callbacks. +0.2.6 Fix bug with handlers, add nofollow option (thanks to [strobotta](https://github.com/strobotta)) and word callbacks. -0.2.5 Add possiblity to bind event handlers to words (thanks to "astintzing":https://github.com/astintzing) +0.2.5 Add possiblity to bind event handlers to words (thanks to [astintzing](https://github.com/astintzing)) 0.2.4 Option randomClasses can be an array of classes among which a random class is selected for each word -0.2.3 Add option randomClasses, allowing for random CSS styling (inspired by issue about vertical words opened by "tttp":https://github.com/tttp) +0.2.3 Add option randomClasses, allowing for random CSS styling (inspired by issue about vertical words opened by [tttp](https://github.com/tttp)) -0.2.2 CSS improvements (as suggested by "NomikOS":https://github.com/NomikOS) +0.2.2 CSS improvements (as suggested by [NomikOS](https://github.com/NomikOS)) 0.2.1 Optimization and performance improvements (making 0.2.1 around 25% faster than 0.2.0) -0.2.0 Add configuration options, passed as the second argument of jQCloud (include ideas proposed by "mindscratch":https://github.com/mindscratch and "aaaa0441":https://github.com/aaaa0441) +0.2.0 Add configuration options, passed as the second argument of jQCloud (include ideas proposed by [mindscratch](https://github.com/mindscratch) and [aaaa0441](https://github.com/aaaa0441)) -0.1.8 Fix bug in the algorithm causing sometimes unbalanced layouts (thanks to "isamochernov":https://github.com/isamochernov) +0.1.8 Fix bug in the algorithm causing sometimes unbalanced layouts (thanks to [isamochernov](https://github.com/isamochernov)) -0.1.7 Remove duplicated @@ when word has an URL (thanks to "rbrancher":https://github.com/rbrancher) +0.1.7 Remove duplicated `` when word has an URL (thanks to [rbrancher](https://github.com/rbrancher)) -0.1.6 JavaScript-friendly URL encode 'url' option; Typecast 'weight' option to float (thanks to "nudesign":https://github.com/nudesign) +0.1.6 JavaScript-friendly URL encode 'url' option; Typecast 'weight' option to float (thanks to [nudesign](https://github.com/nudesign)) -0.1.5 Apply CSS style to a "jqcloud" class, automatically added (previously an id was used. Again, thanks to "seanahrens":https://github.com/seanahrens) +0.1.5 Apply CSS style to a "jqcloud" class, automatically added (previously an id was used. Again, thanks to [seanahrens](https://github.com/seanahrens)) -0.1.4 Fix bug with multiple clouds on the same page (kudos to "seanahrens":https://github.com/seanahrens) +0.1.4 Fix bug with multiple clouds on the same page (kudos to [seanahrens](https://github.com/seanahrens)) 0.1.3 Added possibility to pass a callback function and to specify a custom HTML title attribute for each word in the cloud