Как настроить emmet для генерации динамического кода java-скрипта, такого как html

Я установил и настроил emmet (zen coding) с поддержкой фрагментов сценария java в папке snippets.json для возвышенного, чтобы я мог расширять сокращения. он работает и правильно расширяется из этих определений

"js": 
  {
      "abbreviations": {
        "em":  "emmet"
      },
      "snippets": {
      "forn": "for(i=0;i<${id};i++)\n{\n\t\n}",
      "for": "for (var ${class} = 0; i < ${id}; ${class}++) {\n\t|}"
      }
  }   

Пока все хорошо. Теперь я хотел, когда я использую for> len / = N> на панели ввода, чтобы встроить некоторый код в цикл for.
Я ожидаю

for(var i=0; i<N; i++){
  len/=N
}

Но что бы я ни набирал, это встраивается в HTML-тег после цикла for.

как мне смешивать фрагменты и определенные пользователем переменные после цикла, а не внутри цикла. ** аналогично мне нужен аналогичный синтаксис (текст * 5 + = автомобили), который может расширяться до такого типа шаблона

text += cars[0] + "<br>"; 
text += cars[1] + "<br>"; 
text += cars[2] + "<br>"; 
text += cars[3] + "<br>"; 
text += cars[4] + "<br>"; 
text += cars[5] + "<br>";

person Jay ram    schedule 21.08.2014    source источник
comment
docs.emmet.io/customization/snippets/#variables   -  person Sergey Chikuyonok    schedule 21.08.2014
comment
Привет, Сергей! Спасибо, что ответили. На самом деле я видел эту страницу документа, но хотел чего-то другого, я обновил вопрос, пожалуйста, ответьте и поделитесь любыми примерами, которые могут помочь сформировать сложный вложенный код вместо тегов html для чистого java-скрипта без html   -  person Jay ram    schedule 22.08.2014


Ответы (1)


Таким образом, вы должны написать собственный постпроцессор аббревиатуры, который может находить аббревиатуру в разбираемом дереве и заменять ее настраиваемым фрагментом.

взгляните на генератор Lorem Ipsum. Он берет проанализированное дерево сокращений, просматривает его и находит узлы, соответствующие некоторым критериям. Затем эти узлы заменяются настраиваемыми фрагментами.

Ваш код может выглядеть примерно так:

(function() {
    function resolve(tree) {
        tree.children.forEach(function(node) {
            if (/^my-prefix/.test(node.name())) {
                // do something
                node._name = ''; // empty name
                node.content = 'add some cusom content';
            }

            // walk recursively
            resolve(node);
        });
    }

    // register post-processor
    emmet.require('parser/abbreviation').addPostprocessor(resolve)
})();

Вы можете поместить этот файл в каталог расширений.

PS: обратите внимание, что символы / и = недопустимы для сокращений Эммета. Допустимое сокращенное имя должно соответствовать этому регулярному выражению.

person Sergey Chikuyonok    schedule 22.08.2014