Beat: Schöne quelltexte

Beitrag lesen

Welche Vorteile hat ein Programmierer überhaupt davon?

Kaum einen, üblicherweise.

Denn häufig ist die Konstruktion von HTML/XHTML/HTML5/XHTML5 so geartet, dass HTML gar niccht mehr im Code augenscheinlich ist.

Hier eine sub aus einem Perl Modul, das zugleich Webform-Server ist.

sub __webform {  
	caller eq __PACKAGE__ or die "pivate method call";  
	my $self = shift;  
	my $new = shift || 0;  
	my $ht = '<form' . attr(action=>'', method=>'post').'>'.NL;  
	my $gid = 0;  
	$new and $user = sha1_hex( time() . $self->{config}{formid} );  
	print STDERR ' 2:', $user;  
	foreach my $g ( sort keys %{ $self->{layout} } ){  
		$ht .= '<fieldset id="sfm' . ++$gid . '">' . NL  
			.	'  <legend>' . htmlchars( $self->{layout}{$g}{title} ) . '</legend>' . NL  
			. 	'  <ul>' . NL;  
		my $fid = 0;  
		foreach my $f ( @{ $self->{layout}{$g}{fields} } ){  
			$ht .= '    <li id="sfm' . $gid . ++$fid . '">';  
			if( $self->{fields}{$f}{type} =~ /text|textarea|select/ ){  
				$ht .= '<label'. attr('for', $f) . '>'  
					. htmlchars( $self->{fields}{$f}{title} )  
					. ( $self->{fields}{$f}{required}  
						? '<sup>*</sup>' : '')  
					. '</label>';  
			}  
			if( $self->{fields}{$f}{type} eq "text" ){  
				$ht .= '<input'  
					. attr( type=>'text', id=>$f, name=>$f, value=>$self->{fields}{$f}{value} );  
				$isht5 and $self->{fields}{$f}{required}  
					and $ht .= attr( required=>undef );  
				$ht	.= $EM;  
			}  
			elsif( $self->{fields}{$f}{type} eq "textarea" ){  
				$ht .= '<textarea' . attr( id=> $f, name=>$f, cols=>40, rows=>10);  
				$isht5 and $self->{fields}{$f}{required}  
					and $ht .= attr( required=>undef );  
				$ht .= '>' . htmlchars( $self->{fields}{$f}{value} ) . '</textarea>';  
			}  
			elsif( $self->{fields}{$f}{type} eq "select" ){  
				$ht .= '<select' . attr( id=> $f, name=>$f );  
				$isht5 and $self->{fields}{$f}{required}  
					and $ht .= attr( required=>undef );  
				$ht .= '>'.NL;  
				foreach my $o ( keys %{ $self->{fields}{$f}{value} } ){  
					$ht .= '      <option' . attr( value=>$o );  
					$o eq $self->{fields}{$f}{selected} and  
						$ht .= attr( selected=>undef );  
					$ht .= '>'. htmlchars( $self->{fields}{$f}{value}{$o} )  
						. '</option>'.NL;  
				}  
				$ht .= '    </select>';  
			}  
			elsif( $self->{fields}{$f}{type} eq "check" ){  
				$self->{fields}{$f}{title}  
					and $ht .= '<p class=label>'.htmlchars($self->{fields}{$f}{ title} ).'</p>';  
				$ht .= NL.'      <ul class=sfmcheck>';  
				foreach my $o ( keys %{ $self->{fields}{$f}{value} } ){  
					$ht .= '<li><label>'  
						. '<input' . attr( type=>'checkbox', name=>$f, value=>$o );  
					exists $self->{fields}{$f}{checked}{$o} and  
						$ht .= attr( checked=>undef );  
					$ht .= '>'. htmlchars( $self->{fields}{$f}{value}{$o} )  
						. '</label></li>';  
				}  
				$ht .= '</ul>'.NL.'    ';  
			}  
			elsif( $self->{fields}{$f}{type} eq "submit" ){  
				$ht .= '<label class="hidden" for="'.$f.'">'.t('submitlabel').'</label><input'  
					. attr( type=>'submit', id=>$f, value=>$self->{fields}{$f}{title} )  
					. $EM . NL;  
				$ht .= '    <input'  
					. attr( type=>'hidden', name=>'formuser', value=> $user	)  
					. $EM;  
			}  
			$ht .= '</li>'.NL;  
		}  
		$ht .= '  </ul>'. NL . '</fieldset>' . NL;  
	}  
	$ht .= '</form>'.NL;  
	if( $new ){  
		open(F, ">>", "sfm.log") or die( t("err sfm.log"). " $!" );  
		print F 'user=',time(),'-',$user, NL;  
		close(F);  
	}  
	return $ht;  
}  

Für das Formular wird der Versuch gemacht ihm eine lesbare Formatierung zu geben. Aber Verschwenderischer Whitespace ist nicht einmal angesagt, da damit gewisse CSS Formatierungsmöglichkeiten gestört werden.

HTML Templates sind hier fruchtlos.

mfg Beat

--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische