Ответ 1
begin = '(?:^\s+)?(<)((?i:script))\b(?!([^>]*text/x-jquery-tmpl[^>]*|[^>]*/>))';
перестает обрабатывать теги script с помощью "text/x-jquery-tmpl" в них как javascript
Недавно я начал экспериментировать с шаблонами jQuery, которые полагаются на вашу способность обернуть HTML в теги SCRIPT
.
<script id="movieTemplate" type="text/x-jquery-tmpl">
<li>
<b>${Name}</b> (${ReleaseYear})
</li>
</script>
Проблема заключается в том, что TextMate, естественно, предполагает, что все теги SCRIPT
- это JavaScript. Я уверен, что TextMate может обрабатывать контент по-разному на основе атрибута type
, но я борюсь с некоторыми из грамматики, используемой в комплекте. Я довольно уверен, что строка ниже - ключ, но я не уверен, с чего начать.
begin = '(?:^\s+)?(<)((?i:script))\b(?![^>]*/>)';
Кто-нибудь уже имел дело с подобным сценарием? Кто-нибудь сможет указать мне в правильном направлении?
Рич
begin = '(?:^\s+)?(<)((?i:script))\b(?!([^>]*text/x-jquery-tmpl[^>]*|[^>]*/>))';
перестает обрабатывать теги script с помощью "text/x-jquery-tmpl" в них как javascript
Это регулярное выражение. Вы можете расширить его, чтобы проверить тип text/javascript
следующим образом:
begin = '(?:^\s+)?(<)((?i:script))\b(.*?type="text/javascript")(?![^>]*/>.*)';
Я тестировал его только с помощью if
, но, похоже, он работает. Когда тип text/javascript
TextMate расширяет его до Javascript для каждого другого типа, он использует PHP. (Так же, как вне тегов script.)
Вы можете узнать больше о том, как TextMate использует регулярные выражения здесь: Regex (Руководство по TextMate)
Соответствующие группы имеют смысл. Вам нужно изменить его на это:
begin = '(?:^\s+)?(<)((?i:script))\b(?:.*?type="text/javascript")(?![^>]*/>)';
Чтобы сохранить текущую конфигурацию соответствующей группы.