| 
          var YAML = { | 
        
        
           | 
          	parse: function(tokens) { | 
        
        
           | 
          		var data; | 
        
        
           | 
          		 | 
        
        
           | 
          		while (string = tokens.shift()) { | 
        
        
           | 
          			if (/^(?:---|#.*)?\s*$/.test(string)) { // Comments, empty lines etc | 
        
        
           | 
          				// do nothing! | 
        
        
           | 
          			} else if (/^\s*-\s+(.*)$/.test(string)) { // Arrays (longhand) | 
        
        
           | 
          				var this_item = [RegExp.$1] | 
        
        
           | 
          				data = [] | 
        
        
           | 
          				 | 
        
        
           | 
          				while (string = tokens.shift()) { | 
        
        
           | 
          					if (/^\s*-\s+(.*)$/.test(string)) { | 
        
        
           | 
          						var new_item = RegExp.$1 | 
        
        
           | 
          						data.push(this.parse(this_item)) | 
        
        
           | 
          						this_item = [new_item] | 
        
        
           | 
          					} else if (/^\s+(.+)/.test(string)) { | 
        
        
           | 
          						this_item.push(RegExp.$1) | 
        
        
           | 
          					} else { | 
        
        
           | 
          						tokens.unshift(string) | 
        
        
           | 
          						break | 
        
        
           | 
          					} | 
        
        
           | 
          				} | 
        
        
           | 
          				 | 
        
        
           | 
          				data.push(this.parse(this_item)) | 
        
        
           | 
          				 | 
        
        
           | 
          				return data | 
        
        
           | 
          			} else if (/^(\s*)[\w\-_]+:/.test(string)) { // Hash | 
        
        
           | 
          				var origin_indent = RegExp.$1 | 
        
        
           | 
          				if (data == undefined) | 
        
        
           | 
          					data = {} | 
        
        
           | 
          				 | 
        
        
           | 
          				if (/^(\s*)([\w\-_]+):\s*([\|>]?)$/.test(string)) { // Hash contains multiline | 
        
        
           | 
          					var key = RegExp.$2 | 
        
        
           | 
          					var multiline = [] | 
        
        
           | 
          					 | 
        
        
           | 
          					if (RegExp.$3 != '') | 
        
        
           | 
          						multiline.push(RegExp.$3) | 
        
        
           | 
          					 | 
        
        
           | 
          					var origin_indent = RegExp.$1.replace('\t','\\t') | 
        
        
           | 
          					 | 
        
        
           | 
          					while (string = tokens.shift()) { | 
        
        
           | 
          						if (new RegExp('^'+origin_indent+'[\\w\\-_]+:').test(string)) { | 
        
        
           | 
          							// Make sure we leave the next one in place | 
        
        
           | 
          							tokens.unshift(string) | 
        
        
           | 
          							break | 
        
        
           | 
          						} else { | 
        
        
           | 
          							multiline.push(string) | 
        
        
           | 
          						} | 
        
        
           | 
          					} | 
        
        
           | 
          					 | 
        
        
           | 
          					data[key] = this.parse(multiline) | 
        
        
           | 
          				} else if (/^\s*([\w\-_]+):\s+(.+)$/.test(string)) { // Hash contains single line | 
        
        
           | 
          					data[RegExp.$1] = this.parse([RegExp.$2]) | 
        
        
           | 
          					 | 
        
        
           | 
          				} | 
        
        
           | 
          			} else if (/^\[(.*?)\]$/.test(string)) { // Array (one line) | 
        
        
           | 
          				data = [] | 
        
        
           | 
          				var contents = RegExp.$1.split(", ") | 
        
        
           | 
          			 | 
        
        
           | 
          				for(var i in contents) { | 
        
        
           | 
          					data.push(this.parse([contents[i]])) | 
        
        
           | 
          				} | 
        
        
           | 
          				return data | 
        
        
           | 
          			} else if (/^\{(.*?)\}$/.test(string)) { // Hash (one line) | 
        
        
           | 
          				data = {} | 
        
        
           | 
          				var contents = RegExp.$1.split(", ") | 
        
        
           | 
          
 | 
        
        
           | 
          				return this.parse(contents) | 
        
        
           | 
          			} else if (/^\-?\d+$/.test(string)) { // Integer | 
        
        
           | 
          				return parseInt(string) | 
        
        
           | 
          			} else if (/^\-?\d+\.\d+$/.test(string)) { // Float | 
        
        
           | 
          				return parseFloat(string) | 
        
        
           | 
          			} else if (/^true|yes$/i.test(string)) { // Boolean (true) | 
        
        
           | 
          				return true | 
        
        
           | 
          			} else if (/^false|no$/i.test(string)) { // Boolean (false) | 
        
        
           | 
          				return false | 
        
        
           | 
          			} else if (/^(?:---\ )?\|$/.test(string)) { // Multiline string, newlines preserved | 
        
        
           | 
          				tokens.shift().match(/^(\s*)(.*)$/) | 
        
        
           | 
          				var multiline = [RegExp.$2] | 
        
        
           | 
          				var origin_indent = RegExp.$1.replace('\t','\\t') | 
        
        
           | 
          				 | 
        
        
           | 
          				while (string = tokens.shift()) { | 
        
        
           | 
          					if (new RegExp('^'+origin_indent+'(.*)$').test(string)) { | 
        
        
           | 
          						multiline.push(RegExp.$1) | 
        
        
           | 
          					} else { | 
        
        
           | 
          						// Not strictly necessary, as tokens should only contain stuff for the string | 
        
        
           | 
          						tokens.unshift(string) | 
        
        
           | 
          						break | 
        
        
           | 
          					} | 
        
        
           | 
          				} | 
        
        
           | 
          				 | 
        
        
           | 
          				return multiline.join("\n") | 
        
        
           | 
          			} else if (/^(?:---\ )?>$/.test(string)) { // Multiline string, newlines folded | 
        
        
           | 
          					var multiline = [] | 
        
        
           | 
          					 | 
        
        
           | 
          					while (string = tokens.shift()) { | 
        
        
           | 
          						multiline.push(string.trim()) | 
        
        
           | 
          					} | 
        
        
           | 
          					 | 
        
        
           | 
          					return multiline.join(' ') | 
        
        
           | 
          			} else { // String | 
        
        
           | 
          				return string | 
        
        
           | 
          			} | 
        
        
           | 
          		} | 
        
        
           | 
          		return data | 
        
        
           | 
          	}, | 
        
        
           | 
          	eval:function(string) { | 
        
        
           | 
          		return this.parse(string.replace('\r','\n').replace(/\n\s*\n/,'\n').split("\n")) | 
        
        
           | 
          	} | 
        
        
           | 
          } |