ちゃーっとはてなキーワードみたいなの作る

| | コメント(0)

とりあえず僕がやりたいのは、はてなキーワードみたいに、
登録されてる単語にリンクを貼るみたいなやつ。

どうも Darts というライブラリを使うとそれっぽいことができるらしい。

てことで、まずは Darts をインストール。
MacPorts で簡単簡単

% sudo port install Darts

mkdarts も勝手にインストールされる。


darts をどう使うかはこちらの通りにやったら口半開きのままできる。
Dartsを試してみた - ダウンロードたけし(寅年)の日記


まず、改行区切りのキーワードリストを作る。

keywrods.txt


うんこ
ちんこ
インコ

で、sort するんだけど、この時 export LANG="" しておかないと、
マルチバイト文字がちゃんと処理されなくて、mkdarts 時にエラーになるらしい。
sort したものを mkdarts する。
何も考えずに port install したので、

/opt/local/lib/darts/mkdarts

に mkdarts がインストールされてた。気にしない。
気にしないけど LANG のこととか一々めんどうなので、まとめてシェルスクリプトにした。

#!/bin/zsh
export LANG=""
sort keywords.txt > keywords.sort
/opt/local/lib/darts/mkdarts keywords.sort keywords.da

これでキーワードリストがいつでも作れるようになった。

次に、dankogai 氏作の Text::Darts をインストール
CPAN 使えばこれも簡単簡単。

% sudo cpan
cpan>  install Text::Darts

ここまでできたら同じく dankogai 氏の
404 Blog Not Found:perl - Text::Darts 0.02 Released!

サンプルスクリプトをコピペして、さっき作ったキーワードリストを読み込ませるようにちょっと変更。

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Text::Darts;

my $str = 'うんこれは簡単だ!楽ちんこの上ない。';
my $td = Text::Darts->open("keywords.da");
print my $newstr = $td->gsub($str, sub{
qq(<a href="http://dictionary.com/browse/$_[0]">$_[0])
});

# 出力結果 '<a href="http://dictionary.com/browse/うんこ">うんこ</a>れは簡単だ!楽<a href="http://dictionary.com/browse/ちんこ">ちんこ</a>の上ない。'


できた!
perl 楽しい!
別に perl 書いてないけど!

コメントする

あわせて読みたい