首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式取代ApiGen中的Nette和Latte

正则表达式取代ApiGen中的Nette和Latte
EN

Stack Overflow用户
提问于 2016-01-01 16:57:01
回答 1查看 188关注 0票数 1

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

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

原始代码如下所示:

代码语言:javascript
复制
<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包含需要替换的跨度,如下所示:

代码语言:javascript
复制
<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;

诸若此类。

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

代码语言:javascript
复制
<span class="whatever">leave code alone</span>

需要移除。

我尝试了一个嵌套的replaceRE,但是从ApiGen得到了解析错误。

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2016-01-02 08:52:13

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

Ace编辑器就是门票。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34554816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档