+ $vars->{make_search_url} = sub { return &Packages::CGI::make_search_url(@_) };
+ $vars->{make_url} = sub { return &Packages::CGI::make_url(@_) };
+ $vars->{g} = sub { my ($f, @a) = @_; return sprintf($f, @a); };
+ if ($vars->{cat}) {
+ $vars->{g} = sub { return Packages::I18N::Locale::g($vars->{cat}, @_) };
+ }
+ $vars->{extract_host} = sub { my $uri_str = $_[0];
+ my $uri = URI->new($uri_str);
+ if ($uri->can('host')) {
+ my $host = $uri->host;
+ $host .= ':'.$uri->port if $uri->port != $uri->default_port;
+ return $host;
+ }
+ return $uri_str;
+ };
+ # needed to work around the limitations of the the FILTER syntax
+ $vars->{html_encode} = sub { return HTML::Entities::encode_entities(@_,'<>&"') };
+ $vars->{uri_escape} = sub { return URI::Escape::uri_escape(@_) };
+ $vars->{quotemeta} = sub { return quotemeta($_[0]) };
+ $vars->{string2id} = sub { return &Packages::CGI::string2id(@_) };