MarkdownでTwitterIDを自動でリンクにするカスタマイズ

ブログの記事は主に Markdown 記法で書いています( ´ ▽ ` )ノ

 

Markdownのオリジナルそのものは、2012年現在非常に古い…

Daring Fireball: Markdown
Markdown 1.0.1 (18 KB) — 17 Dec 2004
オリジナルの最終更新は 2004-12-17

思えばこの頃、bloxsomとかでブログ(?)っぽいものを書いていたので、そのときに初めてこれを使ったのがMarkdown記法を知った切っ掛けでした。

 

ところが、流石に8年近く経てば色々と変わる物で…

ブログ記事などでTwitterIDを紹介するとき、いちいち手書きなどでリンクを貼るのも面倒くさいわけです。
そんくらい勝手にリンクしてくれないかなーと。

 

Twitter anywhereなど、自動リンクを貼ってくれるツールもあるわけですが、出来ればちょっと制御したいなと思うわけで、Markdown本体を改造することにw
# ええ、まぁ、単に弄りたかっただけです( ´ ▽ ` )ノ

手順としては、Movable Typeではplugin/Markdown配下に、MT用と思われるカスタマイズされたMarkdown.plがあるので、これをダウンロードして弄るだけです。

 

差分そのものをざっくりと( ´ ▽ ` )ノ

*** Markdown.pl.orig2011-04-18 01:17:18.000000000 +0900
--- Markdown.pl2012-05-01 01:11:12.000000000 +0900
***************
*** 385,390 ****
--- 385,391 ----
# tags like paragraphs, headers, and list items.
#
my $text = shift;
+ $text = _doTwitterLink($text);
$text = _DoCodeSpans($text);
***************
*** 440,445 ****
--- 441,466 ----
}
+ sub _doTwitterLink {
+ #
+ # Turn Markdown Twitter shortcuts into XHTML <a> tags.
+ #
+ my $text = shift;
+ 
+ # @twitterid to <a> tag
+ $text =~ s{
+ \B\@# twitter markup '@'
+ (\w{1,15})# twitter id = $1
+ }{
+ "<a href=\"http://twitter.com/" . $1 .
+ "\" target=\"_blank\" class=\"twitter-anywhere-user\">@"
+ . $1 . "</a>";
+ }xsge;
+ return $text;
+ }
+ 
+ 
+ 
sub _DoAnchors {
#
# Turn Markdown link shortcuts into XHTML <a> tags.

Markdown.plは根本的に文字列パターンの変換処理なので、パターンさえ思いつければ適当に作るのは非常に簡単です。

 

既存でリンクなどの処理をしている_RunSpanGamutの最初でTwitterLinkを生成する様に修正。

実は、最初はDoAnchorsなどの後で処理していたのですが、_辺りの処理などで問題があったりしたので、一番最初に処理をするように変更しました(^^;)

 

作成した関数doTwitterLinkは、勝手関数なのでプレフィクスをdoにしたくらいの気持ちで…

内容は、単純にTwitterID文字列からの差し替えです。

一応このサイトにもTwitter anywhereを導入してあるので、そこのサポート用のclass名を付けるようにしています( ´ ▽ ` )ノ

 

とりあえずこれで問題無く動作してるからいっかなー程度なのですが…

もしかしたら不具合があったら、そのうち外すかもしれません(^_^;)

不具合などを見つけた方が居たら、是非Twitter(@ksworks)などでご報告ください!