Changeset 433

Show
Ignore:
Timestamp:
09/20/07 12:28:35 (1 year ago)
Author:
ogawa
Message:

renaming several methods for clarifying their purpose.
aggregating multiple background jobs to a single job when bookmarking
multiple entries.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • HatenaBookmarker/trunk/HatenaBookmarker/HatenaBookmarker.pl

    r432 r433  
    1414use MT; 
    1515 
    16 our $VERSION = '0.01'; 
     16our $VERSION = '0.10'; 
    1717 
    1818my $plugin = __PACKAGE__->new({ 
     
    3333}); 
    3434MT->add_plugin($plugin); 
     35 
     36sub instance { $plugin } 
    3537 
    3638sub init_registry { 
     
    7375} 
    7476 
     77## 
     78## handlers 
     79## 
    7580sub post_save_entry { 
    7681    my $class = shift; 
     
    102107    my @entry_ids = $app->param('id') 
    103108        or return $app->error($plugin->translate('No [_1] was selected to bookmark.', $type)); 
    104     for my $entry_id (@entry_ids) { 
    105         my $entry = $class->load($entry_id) 
    106             or return $app->error($plugin->translate('Invalid entry_id')); 
    107         if ($entry->status == MT::Entry::RELEASE()) { 
    108             MT::Util::start_background_task( 
    109                 sub { bookmark_entry($app, $entry) } 
    110             ); 
    111         } 
    112     } 
     109    MT::Util::start_background_task( 
     110        sub { 
     111            for my $entry_id (@entry_ids) { 
     112                my $entry = $class->load($entry_id) 
     113                    or return $app->error($plugin->translate('Invalid entry_id')); 
     114                if ($entry->status == MT::Entry::RELEASE()) { 
     115                    bookmark_entry($app, $entry); 
     116                } 
     117            } 
     118        } 
     119    ); 
    113120    $app->call_return; 
    114121} 
    115122 
     123## 
     124## main 
     125## 
    116126use MT::Log; 
    117127use MT::I18N; 
     
    156166 
    157167    my $saved_title   = $bookmark->title; 
    158     my $saved_summary = extract_summary($bookmark); 
     168    my $saved_summary = get_bookmark_summary($bookmark); 
    159169    my $title         = format_bm_title($config->{hatena_bm_title}, $entry); 
    160     my $summary       = tags2summary($entry) || keywords2summary($entry->keywords) || ''
     170    my $summary       = get_entry_summary($entry)
    161171 
    162172    my $enc = $app->config->PublishCharset || 'utf-8'; 
     
    193203    } 
    194204} 
     205 
     206## 
     207## utilities 
     208## 
    195209 
    196210# format bookmark title 
     
    212226 
    213227# extract summary text from a hatena entry 
    214 sub extract_summary { 
     228sub get_bookmark_summary { 
    215229    my $entry = shift; 
    216230    my $summary = ''; 
     
    222236} 
    223237 
    224 # convert MT keywords to summary text 
    225 sub keywords2summary { 
    226     my $str = shift; 
    227     return '' unless $str; 
     238# extract summary text from an MT entry 
     239sub get_entry_summary { 
     240    my $entry = shift; 
     241    tags_to_text($entry) || keywords_to_text($entry) || ''; 
     242
     243 
     244# convert entry tags to a flattened text 
     245sub tags_to_text { 
     246    my $entry = shift; 
     247    return '' unless $entry->can('tags'); 
     248 
     249    my $text = ''; 
     250    for my $tag ($entry->tags) { 
     251        $text .= '[' . $tag . ']'; 
     252    } 
     253    $text; 
     254
     255 
     256# convert entry keywords to a flattened text 
     257sub keywords_to_text { 
     258    my $entry = shift; 
     259    my $str = $entry->keywords or return ''; 
    228260    $str =~ s/\#.*$//g; 
    229261    $str =~ s/(^\s+|\s+$)//g; 
    230262    return '' unless $str; 
    231263 
    232     my $summary = ''; 
     264    my $text = ''; 
    233265    if ($str =~ m/[;,|]/) { 
    234266        # separated by non-whitespaces 
     
    236268            my $tag = $1; 
    237269            $tag =~ s/(^[\["'\s;,|]+|[\]"'\s;,|]+$)//g; 
    238             $summary .= '[' . $tag . ']' if $tag; 
     270            $text .= '[' . $tag . ']' if $tag; 
    239271        } 
    240272    } else { 
     
    243275            my $tag = $1; 
    244276            $tag =~ s/(^[\["'\s]+|[\]"'\s]+$)//g; 
    245             $summary .= '[' . $tag . ']' if $tag; 
    246         } 
    247     } 
    248     $summary; 
    249 
    250  
    251 # convert MT tags to summary text 
    252 sub tags2summary { 
    253     my $entry = shift; 
    254     return '' unless $entry->can('tags'); 
    255  
    256     my $summary = ''; 
    257     for my $tag ($entry->tags) { 
    258         $summary .= '[' . $tag . ']'; 
    259     } 
    260     $summary; 
     277            $text .= '[' . $tag . ']' if $tag; 
     278        } 
     279    } 
     280    $text; 
    261281} 
    262282