[英]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.