jweinst1
3/30/2016 - 7:18 AM

stringparser.js

//string builder that re-concats strings with spaces,
//despite the language being space significant 

var StringBuilder = (function(){
	function StringBuilder(){
		this.smode = false;
	}
	StringBuilder.prototype.parse = function(arr) {
		try {
			for(var i=arr.length-1;i>0;i-=1) {
				if(this.smode) {
					if(arr[i][arr[i].length-1] !== '"' && arr[i][0] !== '"') {
						arr[i-1] = arr[i] + " " + arr[i-1];
						arr.splice(i, 1);
					}
					else if(arr[i][arr[i].length-1] !== '"' && arr[i][0] === '"') {
						arr[i-1] = arr[i] + " " + arr[i-1];
						arr.splice(i, 1);
						this.smode = false;
					}
					else if(/^[^"].+\"$/.test(arr[i])) {
						throw err;
					}
				}
				else {
					if(arr[i][arr[i].length-1] === '"' && arr[i][0] !== '"') {
						this.smode = true;
					}
				}
			}
			return arr;
		}
		catch(err) {
			console.log("String Error");
		}
	};
	//checks if parsing needs to begin on argument stack
	StringBuilder.prototype.check = function(arr, i) {
		if(/^.+\"$/.test(arr[i])) this.parse(arr);
	};
	
	return StringBuilder;
})();