开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
百度超级链Xuper关于金额相关问题(2)
百度超级链Xuper关于金额相关问题(2)
23 0
《机器人自动化:建模、仿真与控制》一一2.4习题
本节书摘来自华章出版社《大数据分析原理与实践》一 书中的第2章,第2.4节,作者:[法]吕克·若兰(Luc Jaulin) ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1919 0
Ajax实现跨域访问的三种方法
一、什么是跨域 我们先回顾一下域名地址的组成: http:// www . google : 8080 / script/jquery.js       http:// (协议号)                www  (子域名)              google (主域名)                8080 (端口号) script/jquery.js (请求的地址) * 当协议、子域名、主域名、端口号中任意一各不相同时,都算不同的“域”。
900 0
+关注
20376
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载