Moduł CGI::Pretty
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaSpis treści
Co to jest
Moduł CGI::Pretty pozwala wyprodukować ładnie sformatowany kod HTML.
Po co to jest?
Moduł ten wywodzi się od modułu CGI. Jednak, gdy używamy modułu CGI, następujący kod:
print table( TR( td( "foo" ) ) );
wyprodukowałby: <TABLE><TR><TD>foo</TD></TR></TABLE>.
I teraz gdyby ta tabelka miała mieć wiele kolumn i wiele wierszy, wyprodukowany kod byłby dość trudny do czytania, gdyż nie ma ani powrotu karetki, ani wcięć. No i tutaj właśnie wkracza do akcji moduł CGI:Pretty, który jak sama nazwa wskazuje produkuje kod ładny i przyjazny do odczytu. Czyli dodaje własnie wcięcia i powrót karetki.
Przykład
Oto specjalnie stworzyłam ciut większą tabelkę, żeby zademonstrować różnicę w wynikach.
Tak wygląda kod, gdy korzystamy z modułu CGI
#!/usr/bin/perl
use CGI qw( :html3);
# Print a table with a single data element
print table(
TR( td( "foo" ), td( "boo" ), td( "zoo" ) ),
TR( td( "bar" ), td( "car" ), td( "star" ) ),
TR( td( "fiku" ), td( "miku" ), td( "bez liku" ) ),
TR( td( "lelum" ), td( "polelum" ), td( "serum" ) ),
TR( td( "jacie" ), td( "macie" ), td( "gacie" ) ),
TR( td( "hokus" ), td( "pokus" ), td( "krokus" ) ),
TR( td( "dach" ), td( "bach" ), td( "trach" ) ),
TR( td( "pretty" ), td( "witty" ), td( "kitty" ) ),
TR( td( "itd" ), td( "itp" ), td( "etc" ) )
);
I tak wygląda rezultat:
Teraz gdy zamienimy linijkę use CGI qw( :html3); na use CGI::Pretty qw( :html3 ); rezultat będzie taki:
No i co jest różnica prawda? :)
Tagi nieformatowane
Tagi <A> oraz <PRE> nie są formatowane, gdyż użytkownik by widział dodatkowe wcięcia w przeglądarce, powodując, że wygląd strony byłby inny niż spodziewany. Jeżeli natomiast chcemy dodać więcej tagów do listy tagów, które mają pozostać nietknięte, należy je dodać przy pomocy push do tablicy @AS_IS, np:
push @CGI::Pretty::AS_IS,qw(CODE XMP);
Dostosowywanie wcięć
Jeżeli chcemy mieć własny styl wcięć, można je zmienić przy użyciu zmiennej $INDENT. Przykładowo, takie przypisanie:
$CGI::Pretty::INDENT = "\t\t";
spowoduje, że wcięcie będzie równoważnością dwóch tabulatorów.
Podobnie jeśli chcemy mieć więcej miejsca pomiędzy liniami, można ustawić zmienną $LINEBREAK. Przykładowo, gdy ustawimy:
$CGI::Pretty::LINEBREAK = "\n\n";
spowoduje to ustawienie dwóch powrotów karetki pomiędzy liniami.
Jeśli jednak uznamy, że chcemy użyć typowego ustawienia wcięć CGI, wystarczy zrobić tak:
$CGI::Pretty::INDENT = $CGI::Pretty::LINEBREAK = "";
Dodatkowe informacje
A oto oryginalna dokumentacja: http://search.cpan.org/dist/CGI.pm/CGI/Pretty.pm, lub jeśli mamy zainstalowanego perldoca można wyświetlić dokumentację przy pomocy polecenia perldoc CGI::Pretty
Polecam też zapoznać się z modułem CGI: http://search.cpan.org/~lds/CGI.pm-3.29/CGI.pm
Autorka opracowania
P.P.
Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady