User:Yayepicyay/test.js

/** * Syntax: * getHSDatatest( playerName, callback ) ** playerName **** Type: String **** The name of the player whose stats you want ** callback **** Type: Function(Array stats) **** The callback function to be performed, where *stats* contains the player's stats in the format [ level, XP ]. This function is *void*. * Example: ** getHSData('zezima', function( stats ) { ** 	// logs '2595' ** 	console.log( stats[ "Overall" ][ 0 ] ); ** 	// logs '200000000' ** 	console.log( stats[ "Dungeoneering" ][ 1 ] ); ** }); */ var skills = [ "Overall", "Attack", "Defence", "Strength", "Constitution", "Ranged", "Prayer", "Magic", "Cooking", "Woodcutting", "Fletching", "Fishing", "Firemaking", "Crafting", "Smithing", "Mining", "Herblore", "Agility", "Thieving", "Slayer", "Farming", "Runecrafting", "Hunter", "Construction", "Summoning", "Dungeoneering", "Divination" ]; String.prototype.replaceAll = function(find, replace) { return this.replace(new RegExp(find, 'g'), replace); } // This function was stolen from somewhere on Stackoverflow function CSVToArraytest( strData, strDelimiter ) { // Check to see if the delimiter is defined. If not, // then default to comma. strDelimiter = ( strDelimiter || "," ); // Create a regular expression to parse the CSV values. var objPattern = new RegExp(		( // Delimiters. "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" + // Quoted fields. "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +			// Standard fields.			"([^\"\\" + strDelimiter + "\\r\\n]*))"		),		"gi"		);	// Create an array to hold our data. Give the array	// a default empty first row.	var arrData = ;	// Create an array to hold our individual pattern	// matching groups.	var arrMatches = null;	// Keep looping over the regular expression matches	// until we can no longer find a match.	while (arrMatches = objPattern.exec( strData )) {		// Get the delimiter that was found.		var strMatchedDelimiter = arrMatches[ 1 ];		// Check to see if the given delimiter has a length		// (is not the start of string) and if it matches		// field delimiter. If id does not, then we know		// that this delimiter is a row delimiter.		if ( strMatchedDelimiter.length && strMatchedDelimiter !== strDelimiter ) {			// Since we have reached a new row of data,			// add an empty row to our data array.			arrData.push( [] ); }		var strMatchedValue; // Now that we have our delimiter out of the way, // let's check to see which kind of value we // captured (quoted or unquoted). if (arrMatches[ 2 ]){ // We found a quoted value. When we capture // this value, unescape any double quotes. strMatchedValue = arrMatches[ 2 ].replace(				new RegExp( "\"\"", "g" ),				"\""				);		} else {			// We found a non-quoted value.			strMatchedValue = arrMatches[ 3 ];		}		// Now that we have our value string, let's add		// it to the data array.		arrData[ arrData.length - 1 ].push( strMatchedValue );	}	// Return the parsed data.	return( arrData ); } function getHSDatatest( playerName, fn, e ) {	// for debugging	callback = ( fn || function( stats ) {		console.log( stats );	});	error = ( e || function( msg ) {		console.log( 'An error was encountered while ' + msg );	});	playerName.replaceAll(" ", "+")	$.getJSON('http://anyorigin.com/dev/get?url=http%3A//services.runescape.com/m%3Dhiscore/index_lite.ws%3Fplayer%3D' + playerName + '&callback=?', function( data ) {		console.log(data[ 'contents' ]);		// Jagex's CSV is evil, so we need to make it normal:		try {			var csv = data[ 'contents' ].replaceAll(" ", "\n"), temp = CSVToArraytest(csv), stats = {}; } catch( e ) { error( 'fetching data from the RS servers' ); }		// now we just need to parse this try { $.each(skills, function( index ) {				var skill = skills[ index ], console.log(skill);					tempData = temp[ index ];				stats[ skill ] = [ tempData[ 1 ], tempData[ 2 ] ]; console.log("worked")			}); } catch( e ) { error( 'parsing the data' ); }		// now we're ready to do the callback try { callback( stats ); } catch( e ) { error( 'executing the callback function' ); }	}); }