File Coverage

blib/lib/MozRepl/Util.pm
Criterion Covered Total %
statement 18 43 41.8
branch 0 8 0.0
condition 0 6 0.0
subroutine 6 10 60.0
pod 4 4 100.0
total 28 71 39.4


line stmt bran cond sub pod time code
1             package MozRepl::Util;
2              
3 12     12   67 use strict;
  12         24  
  12         451  
4 12     12   64 use warnings;
  12         22  
  12         383  
5              
6 12     12   24085 use Data::JavaScript::Anon;
  12         250071  
  12         196  
7 12     12   781 use File::Spec;
  12         31  
  12         318  
8 12     12   298 use UNIVERSAL::require;
  12         27  
  12         95  
9 12     12   15456 use URI;
  12         77355  
  12         169  
10              
11             =head1 NAME
12              
13             MozRepl::Util - MozRepl utilities.
14              
15             =head1 VERSION
16              
17             version 0.01
18              
19             =cut
20              
21             our $VERSION = '0.01';
22              
23             =head1 SYNOPSIS
24              
25             =head1 METHODS
26              
27             =head2 canonical_plugin_name($plugin)
28              
29             To canonical plugin name
30              
31             =cut
32              
33             sub canonical_plugin_name {
34 0     0 1   my ($class, $plugin) = @_;
35              
36 0           my ($abs, $canonical_plugin) = ($plugin =~ /^(\+)([^\+]+)/);
37              
38 0 0 0       if (!$abs && !$canonical_plugin) {
39 0           $canonical_plugin = "MozRepl::Plugin::" . $plugin;
40             }
41              
42 0           return $canonical_plugin;
43             }
44              
45             =head2 plugin_to_method($plugin, $search)
46              
47             To method name from plugin's class name.
48              
49             =over 4
50              
51             =item $plugin
52              
53             Plugin's class name.
54              
55             =item $search
56              
57             L's search argument.
58              
59             =back
60              
61             =cut
62              
63             sub plugin_to_method {
64 0     0 1   my ($class, $plugin, $search) = @_;
65              
66 0 0 0       if ($plugin->can("method_name") && $plugin->method_name) {
67 0           return $plugin->method_name;
68             }
69              
70 0           my $suffix = (grep { $plugin =~ /^$_/x } @{$search})[0];
  0            
  0            
71              
72 0           my $plugin_name = $plugin;
73 0           $plugin_name =~ s/^${suffix}:://;
74              
75 0           my $method = join("_", map { lc($_) } split(/::/, $plugin_name));
  0            
76              
77 0 0         unless ($suffix eq 'MozRepl::Plugin') {
78 0           $method = join("_", map { lc($_) } split(/::/, $suffix)) . "_$method";
  0            
79             }
80              
81 0           return $method;
82             }
83              
84             =head2 javascript_value($value)
85              
86             To JavaScript value from string.
87             See L.
88              
89             =cut
90              
91             sub javascript_value {
92 0     0 1   my ($class, $value) = @_;
93              
94 0           return Data::JavaScript::Anon->anon_dump($value);
95             }
96              
97             =head2 javascript_uri($uri)
98              
99             To uri string for JavaScript.
100              
101             =cut
102              
103             sub javascript_uri {
104 0     0 1   my ($class, $uri) = @_;
105              
106 0 0         unless ($uri =~ m|^[a-zA-Z][a-zA-Z0-9.+\-]*:|) {
107 0           return URI::file->new(File::Spce->rel2abs($uri))->as_string;
108             }
109             else {
110 0           return URI->new($uri)->as_string;
111             }
112             }
113              
114             =head1 SEE ALSO
115              
116             =over 4
117              
118             =item L
119              
120             =item L, L
121              
122             =back
123              
124             =head1 AUTHOR
125              
126             Toru Yamaguchi, C<< >>
127              
128             =head1 BUGS
129              
130             Please report any bugs or feature requests to
131             C, or through the web interface at
132             L. I will be notified, and then you'll automatically be
133             notified of progress on your bug as I make changes.
134              
135             =head1 COPYRIGHT & LICENSE
136              
137             Copyright 2007 Toru Yamaguchi, All Rights Reserved.
138              
139             This program is free software; you can redistribute it and/or modify it
140             under the same terms as Perl itself.
141              
142             =cut
143              
144             1; # End of MozRepl::Util