Regex Заменить Нетте и Латте в ApiGen

1

Я использую шаблон Bootstrap для ApiGen, и я хочу заменить представления исходного кода по умолчанию на Highlight.js.

Это требует от меня удалить существующие spans созданные ApiGen, используя фильтр replaceRE.

Исходный код выглядит так:

<pre id="source">
    <code>{$source|replaceRE:'~<span class="line">(\s*)(\d+):(\s*)</span>([^\\n]*(?:\\n|$))~','<span id="$2" class="l">
        <a href="#$2">$1$2$3</a>$4</span>'|noescape}
    </code>
</pre>

Переменная $4 содержит пробелы, которые нужно заменить, выглядя так:

<span class="xlang">&lt;?php</span>
<span class="php-comment">/**</span>
<span class="php-comment"> * app/Base/Controller.php</span>
<span class="php-comment"> *</span>
<span class="php-comment"> * Local base controller for application.</span>
<span class="php-comment"> */</span>
<span class="php-keyword1">use</span> Illuminate\Foundation\Bus\DispatchesJobs;

и так далее.

Очевидно, что код должен оставаться неизменным, но пробелы:

<span class="whatever">leave code alone</span>

необходимо удалить.

Я попробовал вложенную replaceRE но получил ошибки анализа ApiGen.

<pre id="source">
    <code>{$source|replaceRE:'~<span class="line">(\s*)(\d+):(\s*)</span>([^\\n]*(?:\\n|$))~','<span id="$2" class="l">
        <a href="#$2">$1$2$3</a>{$4|replaceRE:'~<span .*?class="(.*?)">~',''|noescape}</span>'|noescape}
    </code>
</pre>
  • 0
    Похоже, работа для SimpleXML и XPath
  • 0
    Это не сработает, потому что replaceRE сути, просто вызывает preg_replace и результат не анализируется (точно так же, как результат {$source} не анализируется снова). Вы можете использовать два разных фильтра, например replaceRE:'a','b'|replaceRE:'c','d' . В качестве альтернативы вы можете отключить подсветку исходного кода, но AFAIK, для этого нет опции конфигурации, поэтому вам придется редактировать сам ApiGen.
Показать ещё 1 комментарий
Теги:
nette
apigen

1 ответ

0

В результате оказалось, что highlight.js был неправильным инструментом для этого, поскольку ApiGen требует номера строк для исходного кода, а hljs не поддерживает номера строк.

Акс редактор был билет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню