coderay

By | 05月06日
Advertisement

事情很簡單,就是每次我貼程式碼都覺得有很大的困擾,因為不只排版很麻煩,highlight 的問題更是折騰。我之前曾經改寫過一個用 ruby 寫成的 nopaste, 他是呼叫外部 highlight 的程式,查了一下,是這個:http://www.andre-simon.de/. 關於那個 nopaste 我就不多提了,寫得很爛,沒什麼營養。(這也是我想改寫的原因)

後來你也知道,我三分鐘熱度很嚴重,所以只改到一半就沒繼續做下去了。

過了一段時間,我看到了 Lighty RoR 上的〈Syntax Highlight 套件〉,讓我重新想起這件事,希望以後能有個好 highlight 方式。於是我灌了 syntax gem, coderay gem, 還有 highlight gem. 結果那次到底發生了什麼事,其實我也忘了。只記得好像是稍微試過之後就放到一邊去了吧。

今天我又想起這件事,所以又重新找起套件來了。看來看去,syntax 和 highlight 好像都不怎麼好用。最後我終於又試到了 coderay. 這次發現 coderay 相當好用,應該不用繼續找下去了。

gem install coderay
coderay -ruby -span < input.rb > output.rb.txt
這樣可以產生適合直接貼到支援 HTML/CSS 文章中的 HTML+CSS code.
coderay -ruby -page < input.rb > output.rb.html
這樣會直接產生一個完整的 XHTML 1.0 的頁面,相當方便。
coderay -ruby -html < input.rb > output.rb.html
如此產生出來的 CSS 會是用 class 的形式,適合原本就有 CSS 檔的地方。

(補充:另外除了 page 以外,span 和 html 視情況需要在前後加上 pre tag, 也許這部份可以再稍微 hack 一下使之不用加 pre tag, 省得事情變得更麻煩。)

沒錯,最大的好處就是直接用 command line 就好了,不用寫 ruby 程式。其他所支援的語法,在 lib/coderay/scanners 中可以找到,就我現在手上的 0.7.4.215 版中有:

c, delphi, html, nitro_xhtml, plaintext, rhtml, ruby, xml

擴充容易,自己去寫 you_want.rb 丟到 scanners 中就可以使用了。至於輸出格式,在 lib/coderay/encoders 中可以找到,同版本中有:

count, div, html, null, page, span, statistic, text, tokens, xml, yaml

別問我是什麼意思,沒試過我也不知道。不過 statistic 是產生報表,這不小心試過 XD 還有這也和上面一樣,擴充容易,自己寫 encoders 就可以用自己要的輸出格式。至於在 ruby 程式中呼叫 coderay, 這當然沒問題了,用法自己找,我懶得試了。唯一可惜的是 license 是 GPL 吧,我不確定我可不可以把他拉到 ludy 而不用讓 ludy 用 GPL 釋出。不過沒差,這程式內容還滿多的,我應該沒時間好好去改他。乖乖地用
就好了。

除此之外,還找到 rhighlight, 是上面提到的那個 highlight 程式的 binding. 我想這也應該滿值得一試的,但既然先發現 coderay 堪用了,也懶得繼續試,就先 note 起來就好。除此之外,還有 sourcecode2html, 不過這個看來還在開發中。

2007.05.06 godfat 真常

Similar Posts:

  • 使用coderay和railscasts样式进行代码高亮

    CodeRay是一个语法高亮的Ruby库,效率很不错. CodeRay目前支持的语法包括: Ruby C Delphi HTML RHTML (Rails) Nitro-XHTML YAML SQL Python Perl PHP Java railscasts的播主Ryan Bates自定义了一些css,让ruby.rhtml等代码看起来非常cool! 1,安装coderay gem gem install coderay 2,在application.rb中 require 'coderay

  • 修改Ruby类路径

    1. 复制 需要引用的所有文件 到 任意一 类加载路径 cmd下运行 xcopy /E/Q/Y "c:\ruby\lib\ruby\gems\1.8\gems\coderay-0.7.4.215\lib" "c:\ruby\lib\ruby\1.8" ruby -e "require 'coderay'" 2. 修改全局变量$: #!/usr/bin/ruby 1.86 $: << 'c:\ruby\lib\ruby\gems\1.8

  • cents 5.8下安装redmine-2.4.5

    原来工程师搭建的Redmine,由于机器坏掉,需要转移. Redmine 是一个开源的.基于Web的项目管理和缺陷跟踪工具.它用日历和甘特图辅助项目及进度可视化显示.同时它又支持多项目管理.Redmine是一个自由开放 源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持. 安装环境CentOS 5.8 64位. 安装最新稳定版本Redmine-2.4.5[由于不知道原来的版本所以选择版本高一些]. 安装: 1:Redmine建立在Ruby on Rails的框架之上

  • 这篇文章中的插件好多都相当给力

    社区的力量真是伟大,rails作web确实给力!!! 关于rails 常用的插件 7 个回答 Dean 分享于 27 天 前, 164 次浏览 Share| 本人初学rails 想大家介绍一些在rails中常用的插件.本人现在的rails版本是2.2.2 希望各位牛人赐教,题出gem更好呵呵!! plugin 对这个问题不清楚,添加回复 回答 (7个) 0 支持 # 1 楼 mengzhoufan 回复于 27 天 前 有很多,看你做什么类型的项目吧. 有一些通用的插件可以了解下,比如授权验证,

  • xp下安装redmine 2.4.3

    第一步,软件下载 1. 下载railsinstaller 下载地址:http://files.rubyforge.vm.bytemark.co.uk/railsinstaller/railsinstaller-2.2.1.exe railsinstaller大大简化了rails的安装.除了windows下面的外,还有iMac下面的安装包. 对应的官网:http://railsinstaller.org/en 该版本包括下面内容: Ruby 1.9.3 Rails 3.2 Bundler Git

  • centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记

    系统:centos 6.5 x64 redmine 版本:3.1.0 ruby 版本: 2.2.3 rails 版本 : 4.2 过程 1.安装RVM 安装公钥 [root@localhost ~]# curl -sSL https://rvm.io/mpapis.asc | gpg --import gpg: 已创建目录'/root/.gnupg' gpg: 新的配置文件'/root/.gnupg/gpg.conf'已建立 gpg: 警告:在'/root/.gnupg/gpg.conf'里的选

  • Redmine 中文用户使用手册

                                               Redmine 中文用户手册                                   此文章是 基于Redmine 0.9 版本编写的 目前比较流行的管理工具大概都有:BugFree,Bugzilla,Redmine,Jira,TestLink,禅道等 BugFree和Bugzilla是管理缺陷工具: Redmine和Jira是项目管理工具: TestLink是用户测试任务和分配: 禅道是最新的项目

  • Build RESTful APIs with Spring MVC: Swagger

    #Visualizes REST APIs with Swagger Swagger is widely used for visualizing APIs, and with Swagger UI it provides online sandbox for frontend developers. ## Visualizes REST APIs [SpringFox project](http://springfox.github.io/springfox/) provides Swagge

  • centos 安装 redmine 2.6.0.stable

    必须用root安装 1.安装RVM,RVM用于安装ruby 检查版本: [root@jifeng03 ~]# rvm -v -bash: rvm: command not found [root@jifeng03 ~]# yum install rvm [root@jifeng03 ~]# yum install rvm Loaded plugins: fastestmirror, refresh-packagekit, security Determining fastest mirrors

  • 安装Redmine DMSF Plugin

    D:\soft\redmine-2.4.2-0\apps\redmine\htdocs\plugins>rake redmine:plugins:migrate  RAILS_ENV=production (in D:/soft/redmine-2.4.2-0/apps/redmine/htdocs) Could not find mini_portile-0.5.1 in any of the sources Run `bundle install` to inst

Tags: