[interchange-cvs] interchange - heins modified lib/Vend/Interpolate.pm

interchange-core@interchange.redhat.com interchange-core@interchange.redhat.com
Wed Feb 6 17:35:01 2002


User:      heins
Date:      2002-02-06 22:34:09 GMT
Modified:  lib/Vend Interpolate.pm
Log:
	* Simplify form escaping to not use escape_mv, was not working.

	* Should make much more efficient as well, we use this a lot.

Revision  Changes    Path
2.57      +18 -4     interchange/lib/Vend/Interpolate.pm


rev 2.57, prev_rev 2.56
Index: Interpolate.pm
===================================================================
RCS file: /anon_cvs/repository/interchange/lib/Vend/Interpolate.pm,v
retrieving revision 2.56
retrieving revision 2.57
diff -u -r2.56 -r2.57
--- Interpolate.pm	5 Feb 2002 01:33:11 -0000	2.56
+++ Interpolate.pm	6 Feb 2002 22:34:09 -0000	2.57
@@ -1,6 +1,6 @@
 # Vend::Interpolate - Interpret Interchange tags
 # 
-# $Id: Interpolate.pm,v 2.56 2002/02/05 01:33:11 mheins Exp $
+# $Id: Interpolate.pm,v 2.57 2002/02/06 22:34:09 mheins Exp $
 #
 # Copyright (C) 1996-2001 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -27,7 +27,7 @@
 require Exporter;
 @ISA = qw(Exporter);
 
-$VERSION = substr(q$Revision: 2.56 $, 10);
+$VERSION = substr(q$Revision: 2.57 $, 10);
 
 @EXPORT = qw (
 
@@ -2857,6 +2857,21 @@
 	return join '/', 'scan', escape_mv('/', $scan);
 }
 
+sub escape_form {
+	my $val = shift;
+
+	$val =~ s/^\s+//mg;
+	$val =~ s/\s+$//mg;
+	my @args = split /\n+/, $val;
+
+	for(@args) {
+		s!\0!-_NULL_-!g;
+		s!(\w=)(.*)!$1 . esc($2)!eg
+			or (undef $_, next);
+	}
+	return join $Global::UrlJoiner, grep length($_), @args;
+}
+
 sub escape_mv {
 	my ($joiner, $scan, $not_scan, $esc) = @_;
 
@@ -2919,8 +2934,7 @@
 	$arg = '' if ! $arg;
 	$arg = "mv_arg=$arg\n" if $arg && $arg !~ /\n/; 
 	$extra .= $arg . $opt->{form};
-	$extra = escape_mv($Global::UrlJoiner, $extra, 1);
-	return $href . '?' . $extra;
+	return $href . '?' . escape_form($extra);
 }
 
 PAGELINK: {