typo_textfilter_code.rb
来自「用ruby on rails写的一个博客程序,还不错..ruby on rail」· RB 代码 · 共 63 行
RB
63 行
require 'syntax/convertors/html'class Typo class Textfilter class Code < TextFilterPlugin::MacroPre plugin_display_name "Code" plugin_description "Apply syntax highlighting to a code block" def self.help_text %{You can use `<typo:code>` to include syntax-highlighted code blocks. Example: <typo:code lang="ruby"> class Foo def bar "abcde" end end </typo:code>This uses the Ruby [Syntax](http://syntax.rubyforge.org/) module. Options:* **lang**. Sets the programming language. Currently supported languages are`ruby`, `yaml`, and `xml`. Other languages will format correctly but will nothave syntax highlighting.* **linenumber**. Turns on line numbering. Use `linenumber="true"` to enable.* **title**. Adds a title block to the top of the code block.* **class**. Adds a new CSS class to the wrapper around the code block.} end def self.macrofilter(blog,content,attrib,params,text="") lang = attrib['lang'] || 'default' title = attrib['title'] cssclass = attrib['class'] linenumber = attrib['linenumber'] text = text.to_s.gsub(/\r/,'').gsub(/\A\n/,'').chomp convertor = Syntax::Convertors::HTML.for_syntax lang text = convertor.convert(text) text.gsub!(/<pre>/,"<pre><code class=\"typocode_#{lang} #{cssclass}\"><notextile>") text.gsub!(/<\/pre>/,"</notextile></code></pre>") if(linenumber) lines = text.split(/\n/).size linenumbers = (1..lines).to_a.collect{|line| line.to_s}.join("\n") text = "<table class=\"typocode_linenumber\"><tr><td class=\"lineno\">\n<pre>\n#{linenumbers}\n</pre>\n</td><td width=\"100%\">#{text}</td></tr></table>" end if(title) titlecode="<div class=\"codetitle\">#{title}</div>" else titlecode='' end "<div class=\"typocode\">#{titlecode}#{text}</div>" end end endend
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?