X-Git-Url: http://git.shiar.net/perl/html-form-simple.git/blobdiff_plain/48891d33a852d6db31113e4e7c10e1cda5771ce3..08784cd0bf249108184d0fa6860623e81c4ab5ac:/lib/HTML/Form/Simple.pm
diff --git a/lib/HTML/Form/Simple.pm b/lib/HTML/Form/Simple.pm
index 911b864..58e8753 100644
--- a/lib/HTML/Form/Simple.pm
+++ b/lib/HTML/Form/Simple.pm
@@ -9,7 +9,8 @@ our $VERSION = '1.00';
sub new {
- bless {}, $_[0];
+ my ($class, $default) = @_;
+ bless {default => $default}, $class;
}
sub _attr {
@@ -83,6 +84,8 @@ sub hidden {
$attr->{name } = $name if defined $name;
$attr->{value} = $value if defined $value;
+ $attr->{value} = $self->{default}->{$name}
+ if not defined $attr->{value} and defined $name and defined $self->{default};
$attr->{type} = 'hidden' unless defined $attr->{type};
return $self->tag(input => $attr);
@@ -94,6 +97,8 @@ sub text {
$attr->{name } = $name if defined $name;
$attr->{value} = $value if defined $value;
+ $attr->{value} = $self->{default}->{$name}
+ if not defined $attr->{value} and defined $name and defined $self->{default};
$attr->{id} = $attr->{name} unless defined $attr->{id};
$attr->{type} = 'text' unless defined $attr->{type} or defined $attr->{rows};
$value = delete $attr->{value} if defined $attr->{rows};
@@ -109,13 +114,15 @@ sub select {
my $self = shift;
my ($name, $rows, $default, $attr) = $self->_attr(3, @_);
- $default = $attr->{value} unless defined $default;
- delete $attr->{value}; # never a parent attribute
-
$attr->{name} = $name;
$attr->{id} = $attr->{name} unless defined $attr->{id};
$attr->{type} = 'select' unless defined $attr->{type};
+ $default = $attr->{value} unless defined $default;
+ delete $attr->{value}; # never a parent attribute
+ $default = $self->{default}->{$name}
+ if not defined $default and defined $name and defined $self->{default};
+
my @options = map { ref $_ ? $_ : {value => $_} } @$rows;
my @return;
@@ -164,7 +171,7 @@ sub select {
sub radio {
my $self = shift;
- my ($name, $label, $rows, $attr) = $self->_attr(3, @_);
+ my ($name, $rows, $label, $attr) = $self->_attr(3, @_);
if (not defined $rows) {
if (defined $label) {
@@ -212,6 +219,8 @@ sub check {
1;
+__END__
+
=head1 NAME
HTML::Form::Simple - Generate HTML form elements
@@ -228,7 +237,7 @@ HTML::Form::Simple - Generate HTML form elements
msg => 'Textarea default', {rows => 4, style => 'background:red'}
) ],
[ Gender => join ' or ', $input->radio(
- sex => ['m', 'f']
+ sex => [qw(m f)], [qw(Male Female)]
) ],
[ Colour => scalar $input->select(
favcolour => [qw(Blue Green Red)], 'Green'
@@ -239,6 +248,75 @@ HTML::Form::Simple - Generate HTML form elements
);
say $input->stop; #
+=head1 DESCRIPTION
+
+=over
+
+=item C
+
+ $input->hidden(name => 'value');
+
+=item C
+
+ $input->text(name => 'default');
+
+=item C