D is for Distributed.

imaco記法

_ imaco内リンク

「imaco:名前」とするとサイト内のリンクを生成します。a要素を書いてもよいのですが、練習を兼ねてauto_linkを書いてみました。

 imaco:name

_ どんな風に改造したの?

こんな感じ。(imaco_id.rb)

require 'text/hatena/auto_link'
require 'text/hatena/auto_link/scheme'

class ImacoID < Text::Hatena::AutoLink::Scheme
  @@pattern = /\[?(imaco:(\w+)(?::(detail|image))?)\]?/i

  def patterns
    [@@pattern]
  end
  
  def parse(text, opt = {})
    return if @@pattern !~ text
    content, name, type = $1, $2, $3 || ''
    sprintf('<a href="%s"%s>%s</a>',
            name, @a_target_string, name)
  end
end

Text::Hatena::AutoLink::SCHEMES['imaco'] = 'ImacoID'

auto_link.rbのAutoLink#initでrequireしてからget_classするようになっていますが、クラスの取得に失敗したらrequireするのはどうでしょうか?

それから、スーパーpre記法(シンタックスハイライト)が使えるようになると、とてもうれしいです。