source/javascripts/twitter_gitter.js
5c736f5e
 /*
 	Plugin:   	TwitterGitter
 	Author:   	David Walsh
 	Website:    http://davidwalsh.name
 	Date:     	2/21/2009
 */
 
 var TwitterGitter = new Class({
 
 	//implements
 	Implements: [Options,Events],
 
 	//options
 	options: {
 		count: 2,
 		sinceID: 1,
 		link: true,
 		onRequest: $empty,
 		onComplete: $empty
 	},
 	
 	//initialization
 	initialize: function(username,options) {
 		//set options
 		this.setOptions(options);
 		this.info = {};
 		this.username = username;
 	},
 	
 	//get it!
 	retrieve: function() {
 		new JsonP('http://twitter.com/statuses/user_timeline/' + this.username + '.json',{
 			data: {
 				count: this.options.count,
 				since_id: this.options.sinceID
 			},
 			onRequest: this.fireEvent('request'),
 			onComplete: function(data) {
 				//linkify?
 				if(this.options.link) {
 					data.each(function(tweet) { tweet.text = this.linkify(tweet.text); },this);
 				}
 				//complete!
 				this.fireEvent('complete',[data,data[0].user]);
 			}.bind(this)
 		}).request();
 		return this;
 	},
 	
 	//format
 	linkify: function(text) {
 		//courtesy of Jeremy Parrish (rrish.org)
 		return text.replace(/(https?:\/\/\S+)/gi,'<a href="$1">$1</a>').replace(/(^|\s)@(\w+)/g,'$1<a href="http://twitter.com/$2">@$2</a>').replace(/(^|\s)#(\w+)/g,'$1#<a href="http://search.twitter.com/search?q=%23$2">$2</a>');
 	}
 });