From c8dccbabbbd73dcf3b25bddf5e8557d7551dd6c4 Mon Sep 17 00:00:00 2001 From: short <> Date: Wed, 1 Oct 2003 20:41:11 +0000 Subject: [PATCH] img --- Web.pm | 52 ++++++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/Web.pm b/Web.pm index 33e0310..202ecd9 100644 --- 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 "