Namazu-win32-users-ja(旧)


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

Re: 一太郎 11 用 filter を作ってみたのですが



一太郎11を使ったfilterに執着している小嶋です。

olemsword.plを参考に、jt.plの若干の手直しをしてみましたので、ここに
載せます。変更はjt.plだけで、rubyの部分は変更ありません。

なお、2.0.7の環境でテストしております。

jt.pl
------------------------------------------------------------
#
# -*- Perl -*-
# $Id: jt.pl,v 1.1 2001/10/15 17:34:25 D.K.C $
# Euc convert with module_nkf
# module_nkf to $cont directly (not using temp_file)
#

package jt;
use strict;
use File::Copy;
use NKF;
require 'util.pl';
require 'gfilter.pl';

my $taroconvpath  = undef;

sub mediatype() {
    return qw(
     application/x-js-taro
    );
}

sub status() {
    $taroconvpath = util::checkcmd('jt_v1_1');
    return 'yes' if defined $taroconvpath;
    return 'no';
}

sub recursive() {
    return 0;
}

sub pre_codeconv() {
    return 0;
}

sub post_codeconv () {
    return 0;
}

sub add_magic ($) {
    my ($magic) = @_;

    # Ichitaro 8, 9, 10, 11
    $magic->addFileExts('\\.jt[dt]$', 'application/x-js-taro');
    return;
}

sub filter ($$$$$) {
    my ($orig_cfile, $cont, $weighted_str, $headings, $fields)
      = @_;
    my $cfile = defined $orig_cfile ? $$orig_cfile : '';
    $$cont = "";

    my $tmpfile = util::tmpnam('NMZ.sjis');


    system("$taroconvpath -f $cfile > $tmpfile");
    open (INPATH,"< $tmpfile") || die "Can't open file :$!\n";

    my $tline = <INPATH>;
    my $aline = <INPATH>;
    my $dline = <INPATH>;


    $fields->{'title'} = codeconv::shiftjis_to_eucjp($tline)
    if (defined $tline);

    $fields->{'author'} = codeconv::shiftjis_to_eucjp($aline)
    if (defined $aline);

    while (my $sentence = <INPATH> ){
          $$cont .=  nkf('-eSZ',$sentence);
        }

    close(INPATH);


    unlink($tmpfile);

    gfilter::line_adjust_filter($cont);
    gfilter::line_adjust_filter($weighted_str);
    gfilter::white_space_adjust_filter($cont);
    $fields->{'title'} = gfilter::filename_to_title($cfile, $weighted_str)
      unless $fields->{'title'};
    gfilter::show_filter_debug_info($cont, $weighted_str,
               $fields, $headings);
    return undef;
}



1;