123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // 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("cisco-config", function() {
- return {
- token: function(stream, state) {
- var sol = stream.sol() || state.afterSection;
- var eol = stream.eol();
- state.afterSection = false;
- if (sol) {
- if (state.nextMultiline) {
- state.inMultiline = true;
- state.nextMultiline = false;
- } else {
- state.position = "def";
- }
- }
- if (eol && ! state.nextMultiline) {
- state.inMultiline = false;
- state.position = "def";
- }
- if (sol) {
- while(stream.eatSpace());
- }
- var ch = stream.next();
- if (sol && (ch === "!")) {
- state.position = "comment";
- stream.skipToEnd();
- return "comment";
- } else if (sol && !ch.match(/\s/)) {
- state.position = "header";
- stream.skipToEnd();
- return "header";
- }
- return state.position;
- },
- startState: function() {
- return {
- position : "def", // Current position, "def", "quote" or "comment"
- nextMultiline : false, // Is the next line multiline value
- inMultiline : false, // Is the current line a multiline value
- afterSection : false // Did we just open a section
- };
- }
- };
- });
- CodeMirror.defineMIME("text/x-cisco-config", "cfg");
- });
|