dist/ext/twitter.js

File

			(function(global, undefined) { var kafe = global.kafe, $ = kafe.dependencies.jQuery; kafe.bonify({name:'ext.twitter', version:'1.1.1', obj:(function(){
			
				/**
				* ### Version 1.1.1
				* Extra methods for Twitter.
				*
				* @module kafe.ext
				* @class kafe.ext.twitter
				*/
				var twitter = {};
				
			
			
				/**
				* Loads the api javascript used for twitter widgets
				*
				* @method loadWidgetAPI
				*/
				twitter.loadWidgetAPI = function() {
					(function(d,s,id){
						var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';
						if(!d.getElementById(id)){
							js=d.createElement(s);
							js.id=id;
							js.src=p+'://platform.twitter.com/widgets.js';
							fjs.parentNode.insertBefore(js,fjs);
						}
					})(document,'script','twitter-wjs');
				};
			
			
				/**
				* Outputs tweet with links.
				*
				* @method linkifyTweet
				* @param {String} tweet Plain text tweet
				* @param {Object} [options] Options
				*	@param {String} [options.link] Normal link template
				*	@param {String} [options.user] User link template
				*	@param {String} [options.hash] Hash link template
				* @return {String} The tweet with links
				*
				* @example
				*	kafe.ext.twitter.linkifyTweet('I really dig this #twitter function by @absolunet : http://www.absolunet.com/');
				*	// returns "I really dig this #<a href="//search.twitter.com/search?q=%23twitter" data-external="true">twitter</a> function by @<a href="//twitter.com/absolunet" data-external="true">absolunet</a> : <a href="http://www.absolunet.com/" data-external="true">http://www.absolunet.com/</a>"
				*/
				twitter.linkifyTweet = function(tweet,options) {
					options   = (!!options) ? options : {};
			
					var
						$link = (!!options.link) ? $(options.link) : $('<a data-external="true">'),
						$user = (!!options.user) ? $(options.user) : $('<a data-external="true">'),
						$hash = (!!options.hash) ? $(options.hash) : $('<a data-external="true">'),
			
						_link = function($tmpl,data,link) {
							return $('<div>').append( $tmpl.clone().attr('href', link+data).text(data) ).html();
						}
					;
					
			
					tweet = tweet.replace(/[a-z]+:\/\/[a-z0-9-_]+\.[a-z0-9-_:~%&#\?\/.=]+[^:\.,\)\s*$]/ig, function (link) {
						return _link($link,link,'');
					});
					tweet = tweet.replace(/(^|[^\w]+)\@([a-zA-Z0-9_]{1,15})/g, function (blank, prev, user) {
						return prev + '@' + _link($user,user,'//twitter.com/');
					});
					tweet = tweet.replace(/(^|[^\w'"]+)\#([a-zA-Z0-9_]+)/g, function (blank, prev, hash) {
						return prev + '#' + _link($hash,hash,'//search.twitter.com/search?q=%23');
					});
					
					return tweet;
				};
			
			
				return twitter;
			
			})()}); })(typeof window !== 'undefined' ? window : this);