Pod 2 html (module comparable à perlpod)

Contenu du snippet

Cette source permet de transformer du POD en xhtml, le pod étant le langage de documentation de perl... POD = Plain Old Documentation
http://www.perl-gratuit.com/traduction/docfr/perlpod.html (rédigé par Larry Wall, le créateur de perl)

Sur la capture, vous pouvez voir dans la console, perldoc de lancé (perldoc POSIX), et dans la fenêtre de mon navigateur (Konqueror), le fichier ci-dessous lancé sur le même fichier que perldoc.

Source / Exemple :


<?php
function podline2xhtml($str){
	//on enlève les caractères spéciaux
	$str=htmlentities($str);
	//quelques exressions régulières...
	$str=preg_replace('/I<([^&]*)>/', '<u>\\1</u>', $str);			//ce qui est souligné
	$str=preg_replace('/B<([^&]*)>/', '<b>\\1</b>', $str);			//ce qui est en gras
	$str=preg_replace('/C<([^&]*)>/', '<i>"\\1"</i>', $str);			//ce qui est cité
	$str=preg_replace('/L<([^&]*)>/', '<a href="doc://\\1">\\1</a>', $str);	//les liens
	$str=str_replace(
		array('E<lt>', 'E<gt>', 'E<sol>', 'E<verbar>'),
		array('<', '>', htmlentities('/'), htmlentities('|')),
		$str);
	return $str;
}
function pod2xhtml($str){
/*
transforme un texte pod en texte html.

ne gère pas les instructions tels que
=begin
=for
=end

  • /
//une ligne qui se termine par de la ponctuation provoque un retour à la ligne $ponctuation=array(',','.',':',';','!','?'); $strHTML=''; $a=explode(' ',$str); $pod=true; foreach ($a as $b=>$c){ if ($c{0}==='='){ $d=explode(' ', $c); $c=substr($c, strlen($d[0])+1); $d=substr($d[0],1); switch($d){ case 'cut': $pod=false; break; case 'pod': $pod=true; break; case 'head1': if ($pod) $strHTML.='<h1>'.htmlentities($c).'</h1>'; break; case 'head2': if ($pod) $strHTML.='<h2>'.htmlentities($c).'</h2>'; break; case 'over': if ($pod) $strHTML.='<ul>'; break; case 'item': if ($pod) $strHTML.='<li>'.htmlentities($c).'<br />'; break; case 'back': if ($pod) $strHTML.='</ul>'; break; } }else if ($c===''){ if ($pod) $strHTML.='<br />'; }else{ if ($pod){ $strHTML.=podline2xhtml($c); if (in_array($c{strlen($c)-1}, $ponctuation)){ $strHTML.='<br />'; } } } } return $strHTML; } echo pod2xhtml(file_get_contents('1.pod')); ?>

Conclusion :


Un peu de pod :

=head1 NAME

POSIX - Perl interface to IEEE Std 1003.1

=head1 SYNOPSIS

use POSIX;
use POSIX qw(setsid);
use POSIX qw(:errno_h :fcntl_h);

printf "EINTR is %d\n", EINTR;

$sess_id = POSIX::setsid();

$fd = POSIX::open($path, O_CREAT|O_EXCL|O_WRONLY, 0644);
# note: that's a filedescriptor, *NOT* a filehandle

=head1 DESCRIPTION

The POSIX module permits you to access all (or nearly all) the standard
POSIX 1003.1 identifiers. Many of these identifiers have been given Perl-ish
interfaces.

I<Everything is exported by default> with the exception of any POSIX
functions with the same name as a built-in Perl function, such as
C<abs>, C<alarm>, C<rmdir>, C<write>, etc.., which will be exported
only if you ask for them explicitly. This is an unfortunate backwards
compatibility feature. You can stop the exporting by saying C<use
POSIX ()> and then use the fully qualified names (ie. C<POSIX::SEEK_END>).

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.