TextMate-Syntax-Highlighting的问题

简介:
我能实现这个插件的功能,譬如blog资源,有title和content字段,对content字段渲染
<p>
  <b>Content:</b>
  <%=code(@blog.content, :theme => "blackboard", :lang => "ruby", :line_numbers => true)%>
</p>
这样会将content里的内容都当做ruby代码来渲染,但是如果是content字段有很多代码和文字内容,该怎么处理。。请教中。
 
----=======
解答:
 
content中代码块是在<code lang="language"></code>标签中的。所以对content进行扫描,将代码块进行渲染,然后返回整体显示结果。具体过程就是:
1.在application_helper.rb中
def syntax_highlight_and_markdown(text, options = {}) 
             text_pieces = text.split(/(<c0de>|<c0de lang="[A-Za-z0-9_-]+">|<c0de lang='[A-Za-z0-9_-]+'>|<\/c0de>)/) 
             in_pre = false 
             language = nil 
             text_pieces.collect do |piece| 
                 if piece =~ /^<c0de( lang=(["'])?(.*)\2)?>$/ 
                     language = $3 
                     in_pre = true 
                     nil 
                 elsif piece == "</c0de>" 
                     in_pre = false 
                     language = nil 
                     nil 
                 elsif in_pre 
                     code(piece.strip, :lang => language,:theme => "blackboard", :line_numbers => true) 
                 else 
                     markdown(piece, options) 
                 end 
             end 
         end 
            
         def markdown(text, options = {}) 
             if options[:strip] 
                 BlueCloth.new(strip_tags(text.strip)).to_html 
             else 
                 BlueCloth.new(text.strip).to_html 
             end 
         end
然后在视图中:
 
<%=    syntax_css("blackboard")%> 

... 


<%= syntax_highlight_and_markdown @post.content %>
 




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/122144,如需转载请自行联系原作者

目录
相关文章
|
Linux 开发工具 Python
CentOS7安装python3超详细教程
CentOS7安装python3超详细教程
961 0
|
机器学习/深度学习 监控 算法
基于YOLOv8深度学习的100种蝴蝶智能识别系统【python源码+Pyqt5界面+数据集+训练代码】目标识别、深度学习实战
基于YOLOv8深度学习的100种蝴蝶智能识别系统【python源码+Pyqt5界面+数据集+训练代码】目标识别、深度学习实战
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的校园活动管理平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的校园活动管理平台的详细设计和实现(源码+lw+部署文档+讲解等)
184 0
|
负载均衡 JavaScript 前端开发
Elasticsearch.js 发布 —— 在Node.js和浏览器中调用Elasticsearch
继PHP、Ruby、Python和Perl之后,Elasticsearch最近发布了Elasticsearch.js,Elasticsearch的JavaScript客户端库。可以在Node.js和浏览器中使用。
352 0
Elasticsearch.js 发布 —— 在Node.js和浏览器中调用Elasticsearch
|
IDE Java 开发工具
|
区块链 C#
C# 窗体修改应用程序图标
C# 窗体修改应用程序图标
481 0
C# 窗体修改应用程序图标
|
机器学习/深度学习 机器人 计算机视觉
计算机视觉教程2-8:你知道图像背景虚化效果的原理吗?(附代码)
计算机视觉教程2-8:你知道图像背景虚化效果的原理吗?(附代码)
546 0
计算机视觉教程2-8:你知道图像背景虚化效果的原理吗?(附代码)
|
Java
java将图片转base64格式
java将图片转base64格式
189 0
|
弹性计算 安全 JavaScript
ECS安装OpenSUSE操作系统版本15.3
ECS安装OpenSUSE操作系统版本15.3
445 0
ECS安装OpenSUSE操作系统版本15.3
|
XML Shell 开发工具
iOS - CocoaPods原理
本文已同步至掘金iOS - CocoaPods原理
iOS - CocoaPods原理