プラグイン開発記 - コードハイライトの改造

redmine プラグインの次回作の構想として、 数式を MathML で表示するプラグインを考えている。

Wiki の拡張なので、 Wiki マクロでやろうと思ってたら、 Wiki マクロのなか {{macro(ここ)}} は複数行ではかけないらしい。
そこで、ソースコードの埋め込みみたいに
<pre><code class="mathjs">
数式
</code></pre>

という感じにできないかなぁって考えてた。

そしたら近いプラグインを発見。
http://www.redmine.org/plugins/redmine_js_syntax_highlighter
コードハイライティングを JavaScript の SyntaxHighlighter に変えるプラグインらしい。

で、ダウンロードしてソース眺めてみると Redmine::SyntaxHighlighting::highlighter= でハイライト用のモジュールを入れ替えればいいらしい。
redmine_js_syntax_highlighter はごっそり入れ替えているけど、やりたいのは class のタイプを追加するもの。でも、 class が mathjs だったら、 MathML を出して、それ以外なら元のを呼び出すというのなら出来そう。

ちなみに数式解析には Racc を使おうかなって思ってたけど、最近ブログと JavaScript に興味がでてきたので、ブログでも使えるように JavaScript で作ろうかと思ってる。そういう意味でも redmine_js_syntax_highlighter は参考になる。

まぁ、その前に 用語集プラグインのバグなおさないといけないけど。

あと Redmine::SyntaxHighlighting の方のソースも見てて気づいた点が 2 つ。
  module SyntaxHighlighting    
class << self
def highlighter=(name)
#:

初めてみた書き方。モジュールのメソッド定義っぽいとは思ったけど、よく分からなかったので調べてみた。
http://www.mapee.jp/ruby/class_self_end.html
特異メソッドとして、モジュールのメソッドを定義しているらしい。
個人的には下のような書き方でいいと思うけど、一応覚えておく
  module SyntaxHighlighting    
def self.highlighter=(name)
#:


もう一つは init.rb や lib 内で view でよく使う h メソッドの使い方。 h は使いたいけど使おうとすると呼び出しエラーとなるので、面倒だなと思ってたら、以下のように使えばいいみたい。
ERB::Util.h(text)

関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
40位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
4位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

03月 | 2017年04月 | 05月
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。