トップ «前の日記(2016/01/04 (月) ) 最新 次の日記(2016/01/06 (水) )» 編集 RSS feed

HsbtDiary


2016/01/05 (火) [長年日記]

pygments.rb を rouge に置き換えた

ruby なアプリケーションからコードを highlighting したい時に今までは pygments を spawn する pygments.rb というのを使っていたのだけど、 rouge という pure ruby で同じ html を生成する gem があるということを知ったので tDiary 用の highlighting を置き換えてみた

https://github.com/tdiary/tdiary-style-gfm/pull/13

code が fenced code block, lang が syntax highlighting の対象言語の場合は以下のような感じで html に変換できる。

formatter = Rouge::Formatters::HTML.new(css_class: 'highlight')
lexer = Rouge::Lexers.const_get(lang.capitalize.to_sym).new
formatter.format(lexer.lex(code))

css は pygments.rb のそれと同じなので特に変えることは無くそのまま。スタイル側で hook を呼べたら勝手に追加するようにするかもしれない。

Asaksua.rb 第339回

ちょっと遅れてぶらっと参加。淡々と Ruby や tDiary の pull request をマージしたり、リリースしたりしていた。最近、tDiary やるぞ!という気持ちが結構復活してきているので色々やろう。いらんコードバンバン消してまずはダイエットだなあ。