Changeset 22

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

code cleanup

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • all-keywords/trunk/all-keywords.pl

    r20 r22  
    11# A plugin for adding keywords-handling tags 
    22# 
    3 # Release 0.11 (Mar 20, 2005) 
     3# Release 0.12 (Mar 23, 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.11"); 
     17    $plugin->name("AllKeywords Plugin 0.12"); 
    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"); 
     
    3030MT::Template::Context->add_container_tag('MostRelatedEntries' => \&most_related_entries); 
    3131 
     32sub split_keywords { 
     33    my ($string, $delimiter, $case_sensitive) = @_; 
     34    return unless $string; 
     35    my @keywords; 
     36    $string =~ s/^\s+//; 
     37    $string =~ s/\s+$//; 
     38    $string = lc $string unless $case_sensitive; 
     39    return $delimiter ? 
     40        map { s/^\s+//; s/\s+$//; $_ } split($delimiter, $string) : 
     41        split(/\s+/, $string); 
     42} 
     43 
    3244sub all_keywords { 
    3345    my ($ctx, $args, $cond) = @_; 
     
    5163    while (my $e = $iter->()) { 
    5264        next unless $e->keywords; 
    53         my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 
    54         my @keywords = $delimiter ? 
    55             split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 
     65        my @keywords = split_keywords($e->keywords, $delimiter, $case_sensitive); 
    5666        foreach my $keyword (@keywords) { 
    5767            if (exists($all_keywords{$keyword})) { 
     
    109119    my $case_sensitive = $args->{case_sensitive} || 1; 
    110120 
    111     my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 
    112     my @keywords = $delimiter ? 
    113         split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 
     121    my @keywords = split_keywords($e->keywords, $delimiter, $case_sensitive); 
    114122    my $res = ''; 
    115123    my $builder = $ctx->stash('builder'); 
     
    167175                                      direction => $sort_order }); 
    168176    my @entries; 
    169     $keywords = lc $keywords unless $case_sensitive; 
    170     my @patterns = $delimiter ? 
    171         split($delimiter, $keywords) : split(/\s+/, $keywords); 
     177    my @patterns = split_keywords($keywords, $delimiter, $case_sensitive); 
    172178    my $i = 0; 
    173179    while (my $e = $iter->()) { 
    174180        last if $lastn && $i >= $lastn; 
    175181        next unless $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); 
     182        my @keywords = split_keywords($e->keywords, $delimiter, $case_sensitive); 
    179183        my $check = 1; 
    180184        foreach my $pattern (@patterns) { 
     
    228232    my $lastn = $args->{lastn} || 0; 
    229233 
    230     my $entry_keywords = $case_sensitive ? $entry->keywords : lc $entry->keywords; 
    231     my @patterns = $delimiter ? 
    232         split($delimiter, $entry_keywords) : split(/\s+/, $entry_keywords); 
     234    my @patterns = split_keywords($entry->keywords, $delimiter, $case_sensitive); 
    233235 
    234236    my $blog_id = $ctx->stash('blog_id'); 
     
    243245        next unless $e->keywords; 
    244246        next if $e->id == $entry->id; 
    245         my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 
    246         my @keywords = $delimiter ? 
    247             split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 
     247        my @keywords = split_keywords($e->keywords, $delimiter, $case_sensitive); 
    248248        my $count = 0; 
    249249        foreach my $pattern (@patterns) {