img
authorshort <>
Wed, 1 Oct 2003 20:41:11 +0000 (20:41 +0000)
committershort <>
Wed, 1 Oct 2003 20:41:11 +0000 (20:41 +0000)
Web.pm

diff --git a/Web.pm b/Web.pm
index 33e0310..202ecd9 100644 (file)
--- a/Web.pm
+++ b/Web.pm
@@ -360,34 +360,38 @@ my @img_variants=(
                );
 my $img_variants_re='[.](?:'.join('|',map(($_->{"id"}),@img_variants)).')$';
 
+sub img_src ($)
+{
+my($file_base)=@_;
+
+       return $file_base if !url_is_local($file_base)
+                       # Known image extension?
+                       || $file_base=~m#$img_variants_re#o;
+
+       my @nego_variants;
+       for my $var (@img_variants) {
+               my $file=$file_base.".".$var->{"id"};
+               # TODO: Somehow quickly check dependencies?
+               system 'make >&2 -s --no-print-directory'
+                                               .' -C '."'".File::Basename::dirname($file)."' '".File::Basename::basename($file)."'";
+#                              if !-f $file;
+               push @nego_variants,negotiate_variant(
+                               %$var,
+                               "size"=>(stat $file)[7],
+                               );
+               }
+       # Do not: ,$W->{"r"});
+       # but should we provide somehow either 'HTTP::Headers' or 'HTTP::Request' ?
+       my $ext=HTTP::Negotiate::choose(\@nego_variants);
+       $ext||=$img_variants[0]->{"id"};        # &HTTP::Negotiate::choose failed?
+       return $file_base.".".$ext;
+}
+
 sub img ($$;$)
 {
 my($file_base,$alt,$attrs)=@_;
 
-       my $file;
-       if (url_is_local($file_base)
-                       # No known image extension?
-                       && $file_base!~m#$img_variants_re#o) {
-               my @nego_variants;
-               for my $var (@img_variants) {
-                       $file=$file_base.".".$var->{"id"};
-                       # TODO: Somehow quickly check dependencies?
-                       system 'make >&2 -s --no-print-directory'
-                                                       .' -C '."'".File::Basename::dirname($file)."' '".File::Basename::basename($file)."'";
-#                                      if !-f $file;
-                       push @nego_variants,negotiate_variant(
-                                       %$var,
-                                       "size"=>(stat $file)[7],
-                                       );
-                       }
-               # Do not: ,$W->{"r"});
-               # but should we provide somehow either 'HTTP::Headers' or 'HTTP::Request' ?
-               my $ext=HTTP::Negotiate::choose(\@nego_variants);
-               $ext||=$img_variants[0]->{"id"};        # &HTTP::Negotiate::choose failed?
-               $file=$file_base.".".$ext;
-               }
-       else
-               { $file=$file_base; }
+       my $file=img_src $file_base;
        my($width,$height)=Image::Size::imgsize($file);
        $alt=CGI::escapeHTML($alt);
        return "<img src=\"$file\" alt=\"$alt\" title=\"$alt\" ".img_size($width,$height)