| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | CodeMirror.defineMode("yaml", function() {		var cons = ['true', 'false', 'on', 'off', 'yes', 'no'];	var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i');		return {		token: function(stream, state) {			var ch = stream.peek();			var esc = state.escaped;			state.escaped = false;			/* comments */			if (ch == "#") { stream.skipToEnd(); return "comment"; }			if (state.literal && stream.indentation() > state.keyCol) {				stream.skipToEnd(); return "string";			} else if (state.literal) { state.literal = false; }			if (stream.sol()) {				state.keyCol = 0;				state.pair = false;				state.pairStart = false;				/* document start */				if(stream.match(/---/)) { return "def"; }				/* document end */				if (stream.match(/\.\.\./)) { return "def"; }				/* array list item */				if (stream.match(/\s*-\s+/)) { return 'meta'; }			}			/* pairs (associative arrays) -> key */			if (!state.pair && stream.match(/^\s*([a-z0-9\._-])+(?=\s*:)/i)) {				state.pair = true;				state.keyCol = stream.indentation();				return "atom";			}			if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; }						/* inline pairs/lists */			if (stream.match(/^(\{|\}|\[|\])/)) {				if (ch == '{')					state.inlinePairs++;				else if (ch == '}')					state.inlinePairs--;				else if (ch == '[')					state.inlineList++;				else					state.inlineList--;				return 'meta';			}						/* list seperator */			if (state.inlineList > 0 && !esc && ch == ',') {				stream.next();				return 'meta';			}			/* pairs seperator */			if (state.inlinePairs > 0 && !esc && ch == ',') {				state.keyCol = 0;				state.pair = false;				state.pairStart = false;				stream.next();				return 'meta';			}						/* start of value of a pair */			if (state.pairStart) {				/* block literals */				if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; };				/* references */				if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; }				/* numbers */				if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; }				if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; }				/* keywords */				if (stream.match(keywordRegex)) { return 'keyword'; }			}			/* nothing found, continue */			state.pairStart = false;			state.escaped = (ch == '\\');			stream.next();			return null;		},		startState: function() {			return {				pair: false,				pairStart: false,				keyCol: 0,				inlinePairs: 0,				inlineList: 0,				literal: false,				escaped: false			};		}	};});CodeMirror.defineMIME("text/x-yaml", "yaml");
 |