管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || アンテナ || PUT || more≫ ≫omit
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage ||[edit]
category: GuestPage/yakty

GuestPage/yakty/ExtractLine - :BeginnerGuidance:: 検索結果を行で切り出す。

LastModified : Sun Oct 3 18:40:11 2004
[管理]

BeginnerGuidanceBeginnerGuidance 検索結果を行で切り出す。

[extract line]

[TOP↑] [管理]

元のWalWikiの処理になるべく手を加えない方法で実装しているので、処理効率は多分悪いです。

match_text()内の変更

[TOP↑] [管理]
    #$text = join('', @lines);          # yakty del [extract line]
    $text = join("\n", @lines);         # yakty add [extract line]
    # 検索
    my $match_text  = ($case_sense) ? $text  : lc($text);
    my @match_links = ($case_sense) ? @links : map { $_ = lc($_); } @links;
    my %match;
    # 検索結果テキストの切出し
    # yakty del [extract line] start
#    my @mid_texts = map { &euc_mid_str($text, $_->{'left'}, $_->{'right'}) } @mid;
#    my $result = join('...', @mid_texts);
#    $result = '...'.$result if ($mid[0]->{'left'}      > 0);
#    $result = $result.'...' if ($mid[$#mid]->{'right'} < length($text));
    # yakty del [extract line] end
    # yakty add [extract line] start
    my @match_lines = map { &extract_line($text, $_->{'left'}, $_->{'right'}) } @mid;
    my %tmp;
    my @uniq_lines = grep(!$tmp{$_}++, @match_lines);
    my $result = join("\n", @uniq_lines);
    return (1, $result);
    # yakty add [extract line] end
}
# Walrus add [search by part] start

extract_line()追加

[TOP↑] [管理]

# yakty add [extract line] start
sub extract_line {
    my ($text, $pos_left, $pos_right) = @_;
    # 行を切り出す
    my $pos;
    if($pos_left > 0){
        $pos = rindex($text, "\n", $pos_left);
        $pos_left = ($pos >= 0) ? $pos+1 : 0;
    }
    if($pos_right < length($text)){
        $pos = index($text, "\n", $pos_right);
        $pos_right = ($pos >= 0) ? $pos : length($text);
    }
    return &euc_mid_str($text, $pos_left, $pos_right);
}
# yakty add [extract line] end
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage || [edit]
select css: default | sakura | mono | greenheck | snow | NN4.x用(多分) || LinuZau!! | VikiWiki!? || others |

管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || PUT