繁体   English   中英

如何在语法突出显示的降价代码中标记搜索短语?

[英]How to mark search phrase in syntax highlighted markdown code?

在我的rails博客应用中,我可以编写帖子正文markdown(我正在使用redcarpet进行Markdown解析,并使用CodeRay进行语法高亮显示)。

我有一个搜索页面,该页面返回包含搜索查询字符串的帖子。

我使用rails助手突出显示查询:

@post.body = highlight(@post.body, @query_phrase, highlighter: '<span class=\\'highlighted\\'>\\1</span>'))

我使用CSS将突出显示的类的背景设置为黄色。

帖子正文按在文本区域中输入的形式存储(如markdown,未转换),并且在渲染诸如posts#show和搜索结果之类的只读视图时处理markdown。

问题是当我搜索单词'ruby'时,输入的markdown使用带有语言名称的带围栏的代码块来突出显示语法,搜索结果变得混乱。

这是身体减价:

ruby

```ruby
puts "Hello, world"
```

这是搜索结果的屏幕截图:

搜索结果截图

这是可以理解的,因为在受防护的代码块之后的匹配“ ruby​​”被span和class包裹起来以突出显示,但是markdown现在可以看到

```<span class='highlighted'>ruby</span> 

并按原样输出跨度。

并且在代码内也会发生类似的问题,其中代码内的匹配项也会被包装并随搜索结果中的跨度一起输出。

如何避免这种情况,并让搜索突出显示所输出markdown中的实际短语,最好不必保留markdown的html输出?

您应该先将其转换为HTML,然后再通过highlight进行传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM