SVN: toys/rsget.pl/RSGet/Form.pm

sparky sparky at pld-linux.org
Thu Oct 22 23:48:35 CEST 2009


Author: sparky
Date: Thu Oct 22 23:48:35 2009
New Revision: 10828

Modified:
   toys/rsget.pl/RSGet/Form.pm
Log:
- added select method


Modified: toys/rsget.pl/RSGet/Form.pm
==============================================================================
--- toys/rsget.pl/RSGet/Form.pm	(original)
+++ toys/rsget.pl/RSGet/Form.pm	Thu Oct 22 23:48:35 2009
@@ -92,9 +92,18 @@
 			push @order, $name;
 			$values{ $name } = undef;
 		}
-		if ( $el eq "input" and lc $attr->{type} eq "hidden" ) {
-			my $v = $attr->{value};
-			$values{ $name } = defined $v ? $v : "";
+		if ( $el eq "input" ) {
+			my $type = lc $attr->{type};
+			if  ( $type eq "hidden" ) {
+				my $v = $attr->{value};
+				$values{ $name } = defined $v ? $v : "";
+			} elsif ( $type eq "submit" ) {
+				my $v = $attr->{value};
+				if ( defined $v ) {
+					my $vs = $values{ $name } ||= [];
+					push @$vs, $v;
+				}
+			}
 		}
 	}
 	$self->{order} = \@order;
@@ -142,6 +151,26 @@
 	$self->{values}->{$key} = $value;
 }
 
+sub select
+{
+	my $self = shift;
+	my $key = shift;
+	my $num = shift || 0;
+
+	unless ( exists $self->{values}->{$key} ) {
+		warn "'$key' does not exist\n" if verbose( 1 );
+		return undef;
+	}
+
+	my $v = $self->{values}->{$key};
+	if ( ref $v ) {
+		$v = $v->[ $num ];
+		$self->{values}->{$key} = $v;
+		return $v;
+	}
+	return undef;
+}
+
 sub get
 {
 	my $self = shift;
@@ -165,6 +194,9 @@
 	foreach my $k ( @{$self->{order}} ) {
 		my $v = $vs->{$k};
 		$v = "undef" unless defined $v;
+		if ( ref $v and ref $v eq "ARRAY" ) {
+			$v = "[ " . ( join "; ", @$v ) . " ]";
+		}
 		$p .= "  $k => $v\n";
 	}
 
@@ -178,7 +210,7 @@
 	my $vs = $self->{values};
 	my $post = join "&",
 		map { uri_escape( $_ ) . "=" . uri_escape( $vs->{ $_ } ) }
-		grep { defined $vs->{ $_ } }
+		grep { defined $vs->{ $_ } and not ref $vs->{ $_ } }
 		@{$self->{order}};
 
 	if ( $self->{post} ) {


More information about the pld-cvs-commit mailing list