Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: filename検索他修正



寺西です。

Tadamasa Teranishi wrote:
> 
> うまく動きます。こっちの方がすっきりするので、これに変えちゃい
> ましょう。
> # 後は、全角記号を半角記号に変換する処理だな。

全角記号を半角記号に変換する処理を NKF から変換テーブルをいただき、
組み込んでみました。(スペースの処理も統合)

sub eucjp_zen2han_ascii ($) {
    my ($str) = @_;
        $str =~
s/([\xa1-\xfe][\xa1-\xfe]|\x8e[\xa1-\xdf]|\x8f[\xa1-\xfe][\xa1-\xfe])/
        my $tmp = $1;
        if ($tmp =~ m!\xa3([\xb0-\xb9\xc1-\xda\xe1-\xfa])!) {
            $tmp = $1 & "\x7F";
        } elsif ($tmp =~ m!\xa1([\xa0-\xfe])!) {
            my $kigou = (
                # X0208 kigou conversion table
                # 0xa1a0 - 0xa1fe
                "\x00","\x20","\x00","\x00","\x2C","\x2E","\x00","\x3A",
                "\x3B","\x3F","\x21","\x00","\x00","\x27","\x60","\x00",
                "\x5E","\x00","\x5F","\x00","\x00","\x00","\x00","\x00",
                "\x00","\x00","\x00","\x00","\x00","\x2D","\x00","\x2F",
                "\x5C","\x00","\x00","\x7C","\x00","\x00","\x60","\x27",
                "\x22","\x22","\x28","\x29","\x00","\x00","\x5B","\x5D",
                "\x7B","\x7D","\x3C","\x3E","\x00","\x00","\x00","\x00",
                "\x00","\x00","\x00","\x00","\x2B","\x2D","\x00","\x00",
                "\x00","\x3D","\x00","\x3C","\x3E","\x00","\x00","\x00",
                "\x00","\x00","\x00","\x00","\x00","\x00","\x00","\x00",
                "\x24","\x00","\x00","\x25","\x23","\x26","\x2A","\x40",
                "\x00","\x00","\x00","\x00","\x00","\x00","\x00","\x00"
            )[unpack("C", $1 & "\x5F")];
            $tmp = $kigou unless ($kigou eq "\x00");
        }
        $tmp;
        /gse;
    $str;
}

テーブルをループ内で定義しているので、パフォーマンスが悪いかもしれま
せん。
# perl が得意な方に最適化してもらいたい。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E