| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | # -*- cperl -*- | 
| 2 |  |  |  |  |  |  | # copyright (C) 2005 Topia . all rights reserved. | 
| 3 |  |  |  |  |  |  | # This is free software; you can redistribute it and/or modify it | 
| 4 |  |  |  |  |  |  | #   under the same terms as Perl itself. | 
| 5 |  |  |  |  |  |  | # $Id: ListDiary.pm 109 2005-02-05 10:40:18Z topia $ | 
| 6 |  |  |  |  |  |  | # $URL: file:///usr/minetools/svnroot/mixi/trunk/WWW-Mixi-OO/lib/WWW/Mixi/OO/ListDiary.pm $ | 
| 7 |  |  |  |  |  |  | package WWW::Mixi::OO::ListDiary; | 
| 8 | 1 |  |  | 1 |  | 3813 | use strict; | 
|  | 1 |  |  |  |  | 7 |  | 
|  | 1 |  |  |  |  | 47 |  | 
| 9 | 1 |  |  | 1 |  | 8 | use warnings; | 
|  | 1 |  |  |  |  | 4 |  | 
|  | 1 |  |  |  |  | 28 |  | 
| 10 | 1 |  |  | 1 |  | 5 | use File::Basename; | 
|  | 1 |  |  |  |  | 1 |  | 
|  | 1 |  |  |  |  | 87 |  | 
| 11 | 1 |  |  | 1 |  | 5 | use base qw(WWW::Mixi::OO::TableHistoryListPage); | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 95 |  | 
| 12 | 1 |  |  | 1 |  | 5 | use base qw(WWW::Mixi::OO::Util::EntryParserMixin); | 
|  | 1 |  |  |  |  | 1 |  | 
|  | 1 |  |  |  |  | 616 |  | 
| 13 |  |  |  |  |  |  |  | 
| 14 |  |  |  |  |  |  | sub uri { | 
| 15 | 0 |  |  | 0 | 1 |  | my $this = shift; | 
| 16 | 0 |  |  |  |  |  | my $options = $this->_init_uri(@_); | 
| 17 |  |  |  |  |  |  |  | 
| 18 | 0 |  |  |  |  |  | $this->copy_hash_val($options, $options->{_params}, qw(year month)); | 
| 19 | 0 |  |  |  |  |  | $this->SUPER::uri($options); | 
| 20 |  |  |  |  |  |  | } | 
| 21 |  |  |  |  |  |  |  | 
| 22 |  |  |  |  |  |  | sub parse_uri { | 
| 23 | 0 |  |  | 0 | 1 |  | my ($this, $data, %options) = @_; | 
| 24 |  |  |  |  |  |  |  | 
| 25 | 0 |  |  |  |  |  | $this->copy_hash_val($data->{params}, \%options, qw(year month)); | 
| 26 | 0 |  |  |  |  |  | $this->SUPER::parse_uri($data, %options); | 
| 27 |  |  |  |  |  |  | } | 
| 28 |  |  |  |  |  |  |  | 
| 29 |  |  |  |  |  |  | sub _parse_table { | 
| 30 | 0 |  |  | 0 |  |  | my $this = shift; | 
| 31 | 0 | 0 |  |  |  |  | return $this->SUPER::_parse_table(@_) if @_ == 1; # overridable | 
| 32 |  |  |  |  |  |  |  | 
| 33 | 0 |  |  |  |  |  | my $attr_regex = $this->regex_parts->{html_attr}; | 
| 34 | 0 |  |  |  |  |  | my $attrval_regex = $this->regex_parts->{html_attrval}; | 
| 35 | 0 |  |  |  |  |  | my $maybe_attrs_regex = $this->regex_parts->{html_maybe_attrs}; | 
| 36 | 0 |  |  |  |  |  | $this->SUPER::_parse_table( | 
| 37 |  |  |  |  |  |  | qr| \s*\s*|  |  
| 38 |  |  |  |  |  |  | ![]()  |  
| 39 |  |  |  |  |  |  | ((?>.*?(?>.*? |  )\s*|  |  
| 42 |  |  |  |  |  |  | ![]() |oisx); |  
| 43 |  |  |  |  |  |  | } |  
| 44 |  |  |  |  |  |  |  |  
| 45 |  |  |  |  |  |  | sub _split_tables { |  
| 46 | 0 |  |  | 0 |  |  | my ($this, $part) = @_; |  
| 47 |  |  |  |  |  |  |  |  
| 48 | 0 |  |  |  |  |  | my $maybe_attrs_regex = $this->regex_parts->{html_maybe_attrs}; |  
| 49 | 0 |  |  |  |  |  | my @tables = $this->extract_balanced_html_parts( |  
| 50 |  |  |  |  |  |  | element => 'table', |  
| 51 |  |  |  |  |  |  | text => $part); |  
| 52 | 0 |  |  |  |  |  | $this->cache->{tables} = \@tables; |  
| 53 | 0 |  |  |  |  |  | $this->cache->{indecies}->{title} = 0; |  
| 54 | 0 | 0 |  |  |  |  | if (@tables > 2) { |  
| 55 |  |  |  |  |  |  | # remove no-need footer |  
| 56 | 0 |  |  |  |  |  | $this->cache->{indecies}->{navi} = 1; |  
| 57 | 0 |  |  |  |  |  | $this->cache->{indecies}->{body} = 2; |  
| 58 |  |  |  |  |  |  | } else { |  
| 59 | 0 |  |  |  |  |  | $this->cache->{indecies}->{body} = 1; |  
| 60 |  |  |  |  |  |  | } |  
| 61 |  |  |  |  |  |  | } |  
| 62 |  |  |  |  |  |  |  |  
| 63 |  |  |  |  |  |  | sub _parse_body { |  
| 64 | 0 |  |  | 0 |  |  | my $this = shift; |  
| 65 | 0 |  |  |  |  |  | my $part = $this->parse_table_item('body'); |  
| 66 | 0 | 0 |  |  |  |  | return () unless defined $part; |  
| 67 | 0 |  |  |  |  |  | my $maybe_attrs_regex = $this->regex_parts->{html_maybe_attrs}; |  
| 68 | 0 |  |  |  |  |  | my $attrval_regex = $this->regex_parts->{html_attrval}; |  
| 69 | 0 |  |  |  |  |  | my @parts = $this->extract_balanced_html_parts( |  
| 70 |  |  |  |  |  |  | element => 'tr', |  
| 71 |  |  |  |  |  |  | text => $part); |  
| 72 | 0 |  |  |  |  |  | my $sep = qr,\|,io; |  
| 73 | 0 |  |  |  |  |  | my ($title, $body, $control, $temp, $data); |  
| 74 | 0 |  |  |  |  |  | my @ret; |  
| 75 | 0 |  |  |  |  |  | while (@parts >= 3) { |  
| 76 | 0 |  |  |  |  |  | ($title, $body, $control) = splice(@parts, 0, 3); |  
| 77 |  |  |  |  |  |  |  |  
| 78 |  |  |  |  |  |  | next unless |  
| 79 | 0 | 0 |  |  |  |  | $control =~ m| |  \s* 
 
| 80 |  |  |  |  |  |  |  | (.*?)\s* |  
| 81 |  |  |  |  |  |  | $sep\s*(.*?) |  
|siox;| 82 |  |  |  |  |  |  | (?>.*?) |  
| 83 | 0 |  |  |  |  |  | $temp = $this->html_anchor_to_uri($1); |  
| 84 | 0 |  |  |  |  |  | $data = { |  
| 85 |  |  |  |  |  |  | link => $temp, |  
| 86 |  |  |  |  |  |  | $this->analyze_uri($temp), |  
| 87 |  |  |  |  |  |  | }; |  
| 88 | 0 | 0 |  |  |  |  | if ($2 =~ /^.*\((\d+)\)\s*$/so) { |  
| 89 | 0 |  |  |  |  |  | $data->{count} = $1; |  
| 90 |  |  |  |  |  |  | } |  
| 91 |  |  |  |  |  |  |  |  
| 92 |  |  |  |  |  |  | next unless |  
| 93 | 0 | 0 |  |  |  |  | $title =~ m| |  \s* 
 
| 94 |  |  |  |  |  |  |  | (.*?)(?>.*?)\s* |  
| 95 |  |  |  |  |  |  |  | (?>(.*?))\s* |  
|siox;| 96 |  |  |  |  |  |  |  |  
| 97 | 0 |  |  |  |  |  | $data->{subject} = $this->rewrite($2); |  
| 98 | 0 |  |  |  |  |  | $temp = $1; |  
| 99 | 0 |  |  |  |  |  | $temp =~ s| | |g;
 |  
| 100 | 0 |  |  |  |  |  | $data->{time} = $data->{date} = |  
| 101 |  |  |  |  |  |  | $this->convert_time($this->rewrite($temp)); |  
| 102 |  |  |  |  |  |  |  |  
| 103 |  |  |  |  |  |  | next unless |  
| 104 | 0 | 0 |  |  |  |  | $body =~ m| |  \s*| \s* |  
|siox;| 105 |  |  |  |  |  |  | \s*\s*\s*\s* 
 
| 106 |  |  |  |  |  |  |  | \s*(?>(.*?)\s* )\s*\s*
 |  
\s*| 107 |  |  |  |  |  |  |  |  |  
| 108 | 0 |  |  |  |  |  | $temp = $this->parse_entry($1); |  
| 109 | 0 |  |  |  |  |  | $this->copy_hash_val($temp, $data,[qw(body summary)], 'images'); |  
| 110 |  |  |  |  |  |  | #$data->{summary} = $1; |  
| 111 |  |  |  |  |  |  |  |  
| 112 | 0 |  |  |  |  |  | push @ret, $data; |  
| 113 |  |  |  |  |  |  | } |  
| 114 | 0 |  |  |  |  |  | return \@ret; |  
| 115 |  |  |  |  |  |  | } |  
| 116 |  |  |  |  |  |  |  |  
| 117 |  |  |  |  |  |  | 1; |  |