1

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

这需要我使用 Nette过滤器删除spansApiGen 生成的现有文件。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>
4

1 回答 1

0

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

王牌编辑是门票。

于 2016-01-02T00:52:13.227 回答