| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 | 
							- // CodeMirror, copyright (c) by Marijn Haverbeke and others
 
- // Distributed under an MIT license: http://codemirror.net/LICENSE
 
- (function(mod) {
 
-   if (typeof exports == "object" && typeof module == "object") // CommonJS
 
-     mod(require("../../lib/codemirror"));
 
-   else if (typeof define == "function" && define.amd) // AMD
 
-     define(["../../lib/codemirror"], mod);
 
-   else // Plain browser env
 
-     mod(CodeMirror);
 
- })(function(CodeMirror) {
 
- "use strict";
 
- 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.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) {
 
-         stream.skipToEnd();
 
-         return "comment";
 
-       }
 
-       if (stream.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))
 
-         return "string";
 
-       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'; }
 
-       }
 
-       /* 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'; }
 
-       }
 
-       /* pairs (associative arrays) -> key */
 
-       if (!state.pair && stream.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)) {
 
-         state.pair = true;
 
-         state.keyCol = stream.indentation();
 
-         return "atom";
 
-       }
 
-       if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; }
 
-       /* 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");
 
- });
 
 
  |