Regex取代ApiGen中的Nette和Latte



我正在使用ApiGen的Bootstrap模板,我想用Highlight.js替换默认的源代码视图。

这需要我删除ApiGen使用Nette replaceRE筛选器生成的现有spans

原始代码看起来是这样的:

<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> IlluminateFoundationBusDispatchesJobs;

等等

显然,代码需要保持不变,但跨度:

<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>

最终发现highlight.js是错误的工具,因为ApiGen需要源代码的行号,而hljs不支持行号。

王牌编辑是入场券。

相关内容

  • 没有找到相关文章

最新更新