+sub row {
+ my $self = shift;
+ my ($name, $contents, $attr) = $self->_attr(2, @_);
+
+ $contents = defined $contents && ref $contents ne 'HASH'
+ ? $self->quote($contents) : $self->text($name, $contents);
+ my $label = defined $attr->{label}
+ ? $self->quote(delete $attr->{label})
+ : defined $name ? $self->quote($name) : '';
+
+ return $self->tag(label => {for => $name, %$attr})
+ . $label
+ . '</label>'
+ . (defined $, ? $, : ' ')
+ . $contents
+ ;
+}
+