GPQAPP

Форк
0
78 строк · 2.1 Кб
1
// CodeMirror, copyright (c) by Marijn Haverbeke and others
2
// Distributed under an MIT license: https://codemirror.net/LICENSE
3

4
(function(mod) {
5
  if (typeof exports == "object" && typeof module == "object") // CommonJS
6
    mod(require("../../lib/codemirror"));
7
  else if (typeof define == "function" && define.amd) // AMD
8
    define(["../../lib/codemirror"], mod);
9
  else // Plain browser env
10
    mod(CodeMirror);
11
})(function(CodeMirror) {
12
"use strict";
13

14
CodeMirror.defineMode("properties", function() {
15
  return {
16
    token: function(stream, state) {
17
      var sol = stream.sol() || state.afterSection;
18
      var eol = stream.eol();
19

20
      state.afterSection = false;
21

22
      if (sol) {
23
        if (state.nextMultiline) {
24
          state.inMultiline = true;
25
          state.nextMultiline = false;
26
        } else {
27
          state.position = "def";
28
        }
29
      }
30

31
      if (eol && ! state.nextMultiline) {
32
        state.inMultiline = false;
33
        state.position = "def";
34
      }
35

36
      if (sol) {
37
        while(stream.eatSpace()) {}
38
      }
39

40
      var ch = stream.next();
41

42
      if (sol && (ch === "#" || ch === "!" || ch === ";")) {
43
        state.position = "comment";
44
        stream.skipToEnd();
45
        return "comment";
46
      } else if (sol && ch === "[") {
47
        state.afterSection = true;
48
        stream.skipTo("]"); stream.eat("]");
49
        return "header";
50
      } else if (ch === "=" || ch === ":") {
51
        state.position = "quote";
52
        return null;
53
      } else if (ch === "\\" && state.position === "quote") {
54
        if (stream.eol()) {  // end of line?
55
          // Multiline value
56
          state.nextMultiline = true;
57
        }
58
      }
59

60
      return state.position;
61
    },
62

63
    startState: function() {
64
      return {
65
        position : "def",       // Current position, "def", "quote" or "comment"
66
        nextMultiline : false,  // Is the next line multiline value
67
        inMultiline : false,    // Is the current line a multiline value
68
        afterSection : false    // Did we just open a section
69
      };
70
    }
71

72
  };
73
});
74

75
CodeMirror.defineMIME("text/x-properties", "properties");
76
CodeMirror.defineMIME("text/x-ini", "properties");
77

78
});
79

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.