Changeset 394
- Timestamp:
- 04/22/07 14:50:36 (1 year ago)
- Files:
-
- SVN-TracWiki/lib/SVN/TracWiki.pm (modified) (4 diffs)
- SVN-TracWiki/lib/SVN/TracWiki/Plugin.pm (modified) (1 diff)
- SVN-TracWiki/lib/SVN/TracWiki/Plugin/Extract (added)
- SVN-TracWiki/lib/SVN/TracWiki/Plugin/Extract.pm (added)
- SVN-TracWiki/lib/SVN/TracWiki/Plugin/Extract/PowerPoint.pm (added)
- SVN-TracWiki/lib/SVN/TracWiki/Plugin/Filter (deleted)
- SVN-TracWiki/lib/SVN/TracWiki/Plugin/Filter.pm (deleted)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
SVN-TracWiki/lib/SVN/TracWiki.pm
r391 r394 10 10 use RPC::XML; 11 11 use RPC::XML::Client; 12 use File::Extract; 13 use UNIVERSAL::can; 12 14 13 15 $RPC::XML::ENCODING = 'UTF-8'; … … 41 43 my $self = shift; 42 44 43 my @plugins = $self->load_plugins; 45 my $e = File::Extract->new; 46 $e->magic->add_file_ext('xls', 'application/excel'); 47 $self->{extractor} = $e; 48 49 $self->load_plugins; 44 50 45 51 my @files = $self->get_files; 46 52 47 my $mimetypes = MIME::Types->new; 53 48 54 my $temp_dir = $self->{config}->{svn}->{temp_dir}; 49 55 for my $file ( @files ) { 50 56 my $path = file( File::Spec->catfile( $temp_dir, $file ) ); 51 my $type = $mimetypes->mimeTypeOf($path); 52 for my $plugin ( @plugins ) { 53 next unless $plugin->check_mime_type($type); 54 my $text = $plugin->filter($path); 55 $text = "source:$file\n\n{{{\n" . $text . "\n}}}"; 56 $self->publish_to_wiki($file, $text); 57 } 57 my $r = $self->{extractor}->extract($path->stringify); 58 59 next unless $r; 60 my $text = $r->text; 61 62 Encode::_utf8_off($text) if Encode::is_utf8($text); 63 64 next if $r->mime_type eq 'text/plain' or $r->mime_type eq 'text/html'; 65 66 $text = "source:$file\n\n{{{\n" . $text . "\n}}}"; 67 $self->publish_to_wiki($file, $text); 58 68 } 59 69 … … 66 76 my @plugins; 67 77 for ( $self->plugins ) { 78 next unless $_ =~ /SVN::TracWiki::Plugin::Extract::/; 68 79 my $plugin = $_->new; 69 $plugin->register; 70 push @plugins, $plugin; 71 } 72 73 return @plugins; 80 81 my $e = $self->{extractor}; 82 my $ext = $plugin->ext; 83 $e->magic->add_file_ext($ext, $plugin->mime_type) if $ext; 84 $e->register_processor($_); 85 } 74 86 } 75 87 … … 125 137 126 138 if ( ref $res eq 'RPC::XML::fault' ) { 127 die $res-> faultString;139 die $res->string; 128 140 } 129 141 elsif ( !ref $res ) { SVN-TracWiki/lib/SVN/TracWiki/Plugin.pm
r391 r394 1 1 package SVN::TracWiki::Plugin; 2 3 use base qw( Class::Accessor::Fast );4 2 5 3
