Как определить пользовательский режим в ng2-codemirror?

#javascript #angular #typescript #codemirror #codemirror-modes

#javascript #угловой #typescript #codemirror #codemirror-режимы

Вопрос:

Я хотел бы определить свой пользовательский режим, который расширяет один из доступных режимов (например, javascript)? Я пытался использовать приведенный ниже код, но никакого эффекта.

 CodeMirror.defineMode("foo", function (config, parserConfig) {
        var fooOverlay = {
            token: function (stream, state) {
                var ch;
                if (stream.match("{{")) {
                    while ((ch = stream.next()) != null)
                        if (ch == "}" amp;amp; stream.next() == "}") {
                            stream.eat("}");
                            return "foo";
                        }
                }
                while (stream.next() != null amp;amp; !stream.match("{{", false)) { }
                return null;
            }
        };
        return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || "javascript"), fooOverlay);
    });

this.config = {
        lineNumbers: true,
        mode: 'foo'
    };
  

Обновить:

 CodeMirror.defineSimpleMode("foo", {
        start = [
            { regex: /"(?:[^\]|\.)*?(?:"|$)/, token: "string" },
            { regex: /'(?:[^\]|\.)*?(?:'|$)/, token: "string" },
            {
                regex: /(?:if|foreach|in|while)b/,
                token: "keyword"
            },
            { regex: /true|false|null|undefined/, token: "atom" },
        ];
    });
  

Комментарии:

1. Вы когда-нибудь могли это понять?

2. вы решили это? 🙁

3. Извините, ребята, за долгое отсутствие. Наконец, я справился с проблемой способом, описанным выше в разделе обновления.