File Coverage

blib/lib/Kwiki/OpenSearch.pm
Criterion Covered Total %
statement 4 6 66.6
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 6 8 75.0


line stmt bran cond sub pod time code
1             package Kwiki::OpenSearch;
2              
3 1     1   26736 use strict;
  1         3  
  1         37  
4 1     1   436 use Kwiki::Plugin '-Base';
  0            
  0            
5             use Kwiki::Installer '-base';
6              
7             our $VERSION = '0.02';
8              
9             const class_id => 'opensearch';
10             const class_title => 'A9 OpenSearch';
11             const css_file => 'opensearch.css';
12              
13             field error => '';
14              
15             sub register {
16             my $registry = shift;
17             $registry->add( wafl => "opensearch" => 'Kwiki::OpenSearch::Wafl' );
18             }
19              
20             sub do_search {
21             my $url = shift;
22             my $query = shift;
23              
24             my($opensearch, $feed);
25             eval {
26             require WWW::OpenSearch;
27             $opensearch = WWW::OpenSearch->new($url);
28             $feed = $opensearch->search($query);
29             };
30             $self->error($@) if $@;
31             return $opensearch, $feed;
32             }
33              
34             package Kwiki::OpenSearch::Wafl;
35             use Spoon::Formatter ();
36             use base 'Spoon::Formatter::WaflPhrase';
37              
38             sub html {
39             my $args = $self->arguments;
40             my $key = $self->method;
41             my($url, $query) = split /\s+/, $args, 2;
42             my($engine, $feed) = $self->hub->opensearch->do_search($url, $query);
43              
44             my $error = $self->hub->opensearch->error || '';
45             $self->hub->template->process(
46             'opensearch.html',
47             engine => $engine,
48             feed => $feed,
49             query => $query,
50             error => $error,
51             );
52             }
53              
54             package Kwiki::OpenSearch;
55              
56             1;
57             __DATA__