Changeset 20

Show
Ignore:
Timestamp:
04/06/05 20:23:49 (4 years ago)
Author:
ogawa
Message:

Add case_sensitive option

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • all-keywords/trunk/all-keywords.pl

    r1 r20  
    11# A plugin for adding keywords-handling tags 
    22# 
    3 # Release 0.10 (Mar 16, 2005) 
     3# Release 0.11 (Mar 20, 2005) 
    44# 
    55# This software is provided as-is. You may use it for commercial or  
     
    1515    require MT::Plugin; 
    1616    my $plugin = new MT::Plugin(); 
    17     $plugin->name("AllKeywords Plugin 0.10"); 
     17    $plugin->name("AllKeywords Plugin 0.11"); 
    1818    $plugin->description("Add MTAllKeywords tags for listing blog-wide keywords and entry keywords"); 
    1919    $plugin->doc_link("http://as-is.net/hacks/2005/03/allkeywords_plugin.html"); 
     
    4141    # delimiter option (default = space characters) 
    4242    my $delimiter = $args->{delimiter} || ''; 
     43    # case_sensitive option (0/1, default = 1) 
     44    my $case_sensitive = $args->{case_sensitive} || 1; 
    4345 
    4446    my $blog_id = $ctx->stash('blog_id'); 
     
    4951    while (my $e = $iter->()) { 
    5052        next unless $e->keywords; 
     53        my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 
    5154        my @keywords = $delimiter ? 
    52             split($delimiter, lc $e->keywords) : split(/\s+/, lc $e->keywords); 
     55            split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 
    5356        foreach my $keyword (@keywords) { 
    5457            if (exists($all_keywords{$keyword})) { 
     
    8588    foreach (@list) { 
    8689        last if $lastn && $i >= $lastn; 
    87         $ctx->stash('all_keyword', ucfirst $_); 
     90        $ctx->stash('all_keyword', $case_sensitive ? $_ : ucfirst $_); 
    8891        $ctx->stash('all_keyword_count', $all_keywords{$_}); 
    8992        defined(my $out = $builder->build($ctx, $tokens)) 
     
    103106    # delimiter option (default = space characters) 
    104107    my $delimiter = $args->{delimiter} || ''; 
    105  
     108    # case_sensitive option (0/1, default = 1) 
     109    my $case_sensitive = $args->{case_sensitive} || 1; 
     110 
     111    my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 
    106112    my @keywords = $delimiter ? 
    107         split($delimiter, lc $e->keywords) : split(/\s+/, lc $e->keywords); 
     113        split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 
    108114    my $res = ''; 
    109115    my $builder = $ctx->stash('builder'); 
     
    112118    $ctx->stash('all_keywords_total', $total); 
    113119    $ctx->stash('all_keywords_total_sum', $total); 
    114     for my $keyword (@keywords) { 
    115         $ctx->stash('all_keyword', ucfirst $keyword); 
     120    foreach (@keywords) { 
     121        $ctx->stash('all_keyword', $case_sensitive ? $_ : ucfirst $_); 
    116122        $ctx->stash('all_keyword_count', 1); 
    117123        defined(my $out = $builder->build($ctx, $tokens)) 
     
    145151    # delimiter option (default = space characters) 
    146152    my $delimiter = $args->{delimiter} || ''; 
     153    # case_sensitive option (0/1, default = 0) 
     154    my $case_sensitive = $args->{case_sensitive} || 0; 
    147155    # sort_by option (title/status/created_on/modified_on/author_id/excerpt, default = created_on) 
    148156    my $sort_by = $args->{sort_by} || 'created_on'; 
     
    159167                                      direction => $sort_order }); 
    160168    my @entries; 
     169    $keywords = lc $keywords unless $case_sensitive; 
    161170    my @patterns = $delimiter ? 
    162         split($delimiter, lc $keywords) : split(/\s+/, lc $keywords); 
     171        split($delimiter, $keywords) : split(/\s+/, $keywords); 
    163172    my $i = 0; 
    164173    while (my $e = $iter->()) { 
    165174        last if $lastn && $i >= $lastn; 
    166175        next unless $e->keywords; 
    167         my @e_keywords = $delimiter ? 
    168             split($delimiter, lc $e->keywords) : split(/\s+/, lc $e->keywords); 
     176        my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 
     177        my @keywords = $delimiter ? 
     178            split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 
    169179        my $check = 1; 
    170180        foreach my $pattern (@patterns) { 
    171             unless (scalar grep { $_ eq $pattern } @e_keywords) { 
     181            unless (scalar grep { $_ eq $pattern } @keywords) { 
    172182                $check = 0; 
    173183                last; 
     
    213223    # delimiter option (default = space characters) 
    214224    my $delimiter = $args->{delimiter} || ''; 
     225    # case_sensitive option (0/1, default = 0) 
     226    my $case_sensitive = $args->{case_sensitive} || 0; 
    215227    # lastn option (default = 0, no cutoff) 
    216228    my $lastn = $args->{lastn} || 0; 
    217229 
     230    my $entry_keywords = $case_sensitive ? $entry->keywords : lc $entry->keywords; 
    218231    my @patterns = $delimiter ? 
    219         split($delimiter, lc $entry->keywords) : split(/\s+/, lc $entry->keywords); 
     232        split($delimiter, $entry_keywords) : split(/\s+/, $entry_keywords); 
    220233 
    221234    my $blog_id = $ctx->stash('blog_id'); 
     
    230243        next unless $e->keywords; 
    231244        next if $e->id == $entry->id; 
    232         my @e_keywords = $delimiter ? 
    233             split($delimiter, lc $e->keywords) : split(/\s+/, lc $e->keywords); 
     245        my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 
     246        my @keywords = $delimiter ? 
     247            split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 
    234248        my $count = 0; 
    235249        foreach my $pattern (@patterns) { 
    236             $count++ if (scalar grep { $_ eq $pattern } @e_keywords); 
     250            $count++ if (scalar grep { $_ eq $pattern } @keywords); 
    237251        } 
    238252        if ($count) {