L'o7aCode permet de donner forme au texte avec une syntaxe relativement simple. Par exemple, pour mettre du texte en forte emphase voici la syntaxe, pour l'emphase c'est ainsi. Vous pouvez aussi barrer le texte, insérer du texte ou citer du texte
. Pour citer un bloque de texte, c'est comme ça :
Voici un bloque de texte cité...
... qui peut prendre plusieurs lignes.
Pour faire un lien : intitulé du lien, ou plus brièvement (sans intitulé) : http://www.example.net/.
Pour insérer une image :

Les listes :
Je n'ai cependant pas prévu de syntaxe simple pour des éléments de mise en page "gadgets" tels que la colorisation du texte...
Vous avez pu remarquer que pour insérer des titres il faut mettre des symboles =. Le nombre de symboles = à droite et à gauche du titre renseigne sur le niveau du titre, pour un sous-titre :
Les listes numérotées :
Les listes à plusieurs niveaux :
Vous pouvez faire des abbr, indiquer les références d'une citation
, insérer des tirets d'incise –pour faire des incises–, des retours à la ligne sans changer de paragraphe :
ainsi que des barres horizontales :
Aujourd'hui, il n'est pas rare qu'un document ne soit pas rédigé en une traite ni par une seule personne, pour les wikis par exemple ; C'est là que les commentaires prennent tout leur intérêt.
Les commentaires en ligne :
En bloque :
L'insertion en-ligne : [b]du BBCode[/b], et voici de l'insertion en bloque, avec colorisateur syntaxique :
php :
function truncate($str, $lenght_max, $with_abbr=true) { if(strlen($str) > $lenght_max) { if($with_abbr) $returned = '<abbr title="'.$str.'">'; $returned.= substr($str, 0, ($lenght_max-3)).'...'; if($with_abbr) $returned.= '</abbr>'; } else $returned = $str; return $returned; }
html :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>o7a.net - Home page</title> <link rel="stylesheet" type="text/css" href="http://o7a.net/css/main.css" media="screen" /> </head> <body> ... </body> </html>
Si vous ne souhaitez aucun colorisateur, n'indiquez rien :
//STRONG EMPHASIS
if($this->getParam('active_strongEmphasis')) {
$content = preg_replace_callback('#\'\'\'(.*)\'\'\'#mU',array(&$this,'transformStrongEmphasis'),$content);
}
//EMPHASIS
if($this->getParam('active_emphasis')) {
$content = preg_replace_callback('#\'\'(.*)\'\'#mU',array(&$this,'transformEmphasis'),$content);
}
L'o7aCode permet d'insérer un bon nombre de balises html, mais leur paramétrage reste jusqu'ici fort restreint ... Comment renseigner l'attribut title des liens ? Comment donner une alignement aux images ?
Il est possible de renseigner tous les attributs de toutes les balises vues jusqu'ici : aussi bien les images, liens et titres, que les balises d'emphase, les listes ou même les paragraphes !
Vous pouvez –dans un premier temps– renseigner des attributs prédéfinis –dans un certain ordre–. Il faut les précéder chacun de deux deux-points. Par exemple, ce lien a l'attribut title de défini.
Il serait cependant fastidieux de prédéfinir tous les attributs, et l'ordre est ici imposer, ce qui restreint la syntaxe aux attributs les plus couramment utilisés. Pour renseigner un attribut choisi, la syntaxe est sensiblement différente : il faut cette fois ci précéder l'attribution de deux point-virgule, mettre l'intitulé de l'attribut, puis sa valeur (en séparant les deux d'un ou plusieurs caractères non-alphanumériques). Par exemple, l'attribut id de ce lien est défini.
Vous pouvez bien sûr mélanger les deux types d'attribution, le seul ordre à respecter est celui des attributs prédéfinis.

Emphase, forte emphase, code, etc ...
un lien, http://www.example.net ; abbr ...
Pour donner des attributs à un paragraphe, il suffit de les définir à la fin de celui-ci.
Pour les listes :
li avec un attribut,ul,] qui permettent de séparer les attributs du li et du ul.
Citation en bloque...
blabla...
h1 { border-bottom: 1px #c7d6df solid; text-align: right; margin: 0; margin-bottom: -1.5em; } a { text-decoration: none; color: #003c9c; } a:hover { text-decoration: underline; } ...
Il arrive que certains caractères soient interprétés sans que ce soit voulu. Pour désactiver l'interprétation d'un caractère, il suffit de le précéder d'un antislash ; Pour afficher un antislash, désactivez le avec un second antislash : \. Il est par exemple courant de précéder un mot en emphase d'une apostrophe, la solution : voici de l'emphase, et de la forte emphase. Si vous enlevez l'antislash, il n'y aura pas d'apostrophe, le passage emphase'', et de la
sera en forte emphase et il n'y aura pas de faible emphase.
Si avec tout ça vous ne parvenez pas à obtenir ce que vous voulez, il est toujours possible d'intégrer de l'html au sein du o7aCode (un bloque non-interprété), sans avoir à rédiger tous le document en html ! Pour cela, placez votre code html entre ##> et <##.
Ici de l'html...
Evidemment la syntaxe est très modulable et n'attend que d'être améliorée ; A titre d'exemple, j'ai créé une extension pour faire rapidement des liens vers des articles de wikipedia :
N'hésitez pas à proposer d'autres extensions !
<h3>L'o7aCode, aussi simple que du BBCode</h3> <p>L'o7aCode permet de donner forme au texte avec une syntaxe relativement simple. Par exemple, pour mettre du texte en forte emphase <strong>voici la syntaxe</strong>, pour l'emphase <em>c'est ainsi</em>. Vous pouvez aussi <del>barrer le texte</del>, <ins>insérer du texte</ins> ou <q>citer du texte</q>. Pour citer un bloque de texte, c'est comme ça :</p> <blockquote> <p>Voici un bloque de texte cité...</p> <p>... qui peut prendre plusieurs lignes.</p> </blockquote> <p>Pour faire un lien : <a href="http://www.example.net/">intitulé du lien</a>, ou plus brièvement (sans intitulé) : <a href="http://www.example.net/">http://www.example.net/</a>.</p> <p>Pour insérer une image :</p> <p><img src="http://galeries.o7a.net/bertrand/mini/photos1/photo11.jpg" /></p> <p>Les listes :</p> <ul> <li>1er élément,</li> <li>2em élément,</li> <li>3em élément ...</li> </ul> <p>Je n'ai cependant pas prévu de syntaxe simple pour des éléments de mise en page "gadgets" tels que la colorisation du texte...</p> <h3>L'o7aCode, aussi complet que de l'html</h3> <p>Vous avez pu remarquer que pour insérer des titres il faut mettre des symboles =. Le nombre de symboles = à droite et à gauche du titre renseigne sur le niveau du titre, pour un sous-titre :</p> <h4>les listes</h4> <p>Les listes numérotées :</p> <ol> <li>élément numéroté,</li> <li>élément numéroté,</li> <li>élément numéroté ...</li> </ol> <p>Les listes à plusieurs niveaux :</p> <ul> <li>un élément, une sous-liste : <ul> <li>un sous-élément,</li> <li>un autre sous-élément,</li> </ul> </li> <li>un autre élément,</li> <li>un 3em élément, une sous liste numérotée : <ol> <li>un sous-élément numéroté,</li> <li>un second, une sous-sous-liste : <ul> <li>un sous-sous-élément,</li> <li>un autre,</li> </ul> </li> </ol> </li> <li>et ainsi de suite ...</li> </ul> <h4>Quelques autres syntaxes</h4> <p>Vous pouvez faire des <abbr title="Abréviations">abbr</abbr>, indiquer <cite>les références</cite> d'une <q>citation</q>, insérer des tirets d'incise –pour faire des incises–, des retours à la ligne sans changer de paragraphe : <br /> ainsi que des barres horizontales :</p> <hr /> <p>Aujourd'hui, il n'est pas rare qu'un document ne soit pas rédigé en une traite ni par une seule personne, pour les wikis par exemple ; C'est là que les commentaires prennent tout leur intérêt.</p> <p>Les commentaires en ligne :</p> <p>En bloque :</p> <h4>L'insertion de codes</h4> <p>L'insertion en-ligne : <code>[b]du BBCode[/b]</code>, et voici de l'insertion en bloque, avec colorisateur syntaxique :</p> <p>php :</p> <pre class="code php"><span class="kw2">function</span> truncate<span class="br0">(</span><span class="re0">$str</span>, <span class="re0">$lenght_max</span>, <span class="re0">$with_abbr</span>=<span class="kw2">true</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span><span class="br0">(</span><a href="http://www.php.net/strlen"><span class="kw3">strlen</span></a><span class="br0">(</span><span class="re0">$str</span><span class="br0">)</span> > <span class="re0">$lenght_max</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span><span class="br0">(</span><span class="re0">$with_abbr</span><span class="br0">)</span> <span class="re0">$returned</span> = <span class="st0">'<abbr title="'</span>.<span class="re0">$str</span>.<span class="st0">'">'</span>; <span class="re0">$returned</span>.= <a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">(</span><span class="re0">$str</span>, <span class="nu0">0</span>, <span class="br0">(</span><span class="re0">$lenght_max</span><span class="nu0">-3</span><span class="br0">)</span><span class="br0">)</span>.<span class="st0">'...'</span>; <span class="kw1">if</span><span class="br0">(</span><span class="re0">$with_abbr</span><span class="br0">)</span> <span class="re0">$returned</span>.= <span class="st0">'</abbr>'</span>; <span class="br0">}</span> <span class="kw1">else</span> <span class="re0">$returned</span> = <span class="re0">$str</span>; <span class="kw1">return</span> <span class="re0">$returned</span>; <span class="br0">}</span></pre> <p>html :</p> <pre class="code xml"><span class="sc0"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"></span> <span class="sc3"><span class="re1"><html</span> <span class="re0">xmlns</span>=<span class="st0">"http://www.w3.org/1999/xhtml"</span> <span class="re0">xml:lang</span>=<span class="st0">"fr"</span><span class="re2">></span></span> <span class="sc3"><span class="re1"><head<span class="re2">></span></span></span> <span class="sc3"><span class="re1"><meta</span> <span class="re0">http-equiv</span>=<span class="st0">"Content-Type"</span> <span class="re0">content</span>=<span class="st0">"text/html; charset=ISO-8859-1"</span> <span class="re2">/></span></span> <span class="sc3"><span class="re1"><title<span class="re2">></span></span></span>o7a.net - Home page<span class="sc3"><span class="re1"></title<span class="re2">></span></span></span> <span class="sc3"><span class="re1"><link</span> <span class="re0">rel</span>=<span class="st0">"stylesheet"</span> <span class="re0">type</span>=<span class="st0">"text/css"</span> <span class="re0">href</span>=<span class="st0">"http://o7a.net/css/main.css"</span> <span class="re0">media</span>=<span class="st0">"screen"</span> <span class="re2">/></span></span> <span class="sc3"><span class="re1"></head<span class="re2">></span></span></span> <span class="sc3"><span class="re1"><body<span class="re2">></span></span></span> ... <span class="sc3"><span class="re1"></body<span class="re2">></span></span></span> <span class="sc3"><span class="re1"></html<span class="re2">></span></span></span></pre> <p>Si vous ne souhaitez aucun colorisateur, n'indiquez rien :</p> <pre class="code">//STRONG EMPHASIS if($this->getParam('active_strongEmphasis')) { $content = preg_replace_callback('#\'\'\'(.*)\'\'\'#mU',array(&$this,'transformStrongEmphasis'),$content); } //EMPHASIS if($this->getParam('active_emphasis')) { $content = preg_replace_callback('#\'\'(.*)\'\'#mU',array(&$this,'transformEmphasis'),$content); }</pre> <h4>les attributs</h4> <p>L'o7aCode permet d'insérer un bon nombre de balises html, mais leur paramétrage reste jusqu'ici fort restreint ... Comment renseigner l'attribut <code>title</code> des liens ? Comment donner une alignement aux images ?</p> <p>Il est possible de renseigner <em>tous les attributs</em> de <em>toutes les balises</em> vues jusqu'ici : aussi bien les images, liens et titres, que les balises d'emphase, les listes ou même les paragraphes !</p> <p>Vous pouvez –dans un premier temps– renseigner des attributs prédéfinis –dans un certain ordre–. Il faut les précéder chacun de deux deux-points. Par exemple, <a href="http://www.example.net" title="lien fictif pour l'exemple">ce lien</a> a l'attribut <code>title</code> de défini.</p> <p>Il serait cependant fastidieux de prédéfinir tous les attributs, et l'ordre est ici imposer, ce qui restreint la syntaxe aux attributs les plus couramment utilisés. Pour renseigner un attribut choisi, la syntaxe est sensiblement différente : il faut cette fois ci précéder l'attribution de deux point-virgule, mettre l'intitulé de l'attribut, puis sa valeur (en séparant les deux d'un ou plusieurs caractères non-alphanumériques). Par exemple, l'attribut <code>id</code> de <a href="http://www.example.net" id="lien1">ce lien</a> est défini.</p> <p>Vous pouvez bien sûr mélanger les deux types d'attribution, le seul ordre à respecter est celui des attributs prédéfinis.</p> <h5 id="id_for_thetitle"><em>Toutes</em> les balises</h5> <p><img src="http://galeries.o7a.net/bertrand/mini/photos2/photo5.jpg" alt="Gare espagnole" class="right" /></p> <p><em class="class_for_em">Emphase</em>, <strong onclick="nefaisrien()" class="class_for_strong">forte emphase</strong>, <code class="class_for_code">code</code>, etc ...</p> <p><a href="http://www.example.net" title="title" lang="en" id="id_for_thelink">un lien</a>, <a href="http://www.example.net" class="lien_url">http://www.example.net</a> ; <abbr title="abréviation" xml:lang="fr">abbr</abbr> ...</p> <p class="class_for_paragraph">Pour donner des attributs à un paragraphe, il suffit de les définir à la fin de celui-ci.</p> <div class="clearer"></div> <p>Pour les listes :</p> <ul class="a_class_for_ul"> <li class="class_for_li">voici un <abbr title="list item" xml:lang="en"><code>li</code></abbr> avec un attribut,</li> <li id="id_for_theli">et un autre avec lequel sont définis les attributs du <code>ul</code>,</li> <li>Ce sont les deux symboles crochets <code>]</code> qui permettent de séparer les attributs du <code>li</code> et du <code>ul</code>.</li> </ul> <hr class="class_for_hr" /> <blockquote cite="moi" lang="fr"> <p>Citation en bloque...</p> <p>blabla...</p> </blockquote> <pre class="code css">h1 <span class="br0">{</span> <span class="kw1">border-bottom</span>: <span class="re3">1px</span> <span class="re0">#c7d6df</span> <span class="kw2">solid</span>; <span class="kw1">text-align</span>: <span class="kw1">right</span>; <span class="kw1">margin</span>: <span class="nu0">0</span>; <span class="kw1">margin-bottom</span>: <span class="nu0">-1</span><span class="re1"><span class="re3">.5em</span></span>; <span class="br0">}</span> a <span class="br0">{</span> <span class="kw1">text-decoration</span>: <span class="kw2">none</span>; <span class="kw1">color</span>: <span class="re0">#003c9c</span>; <span class="br0">}</span> a<span class="re2">:hover</span> <span class="br0">{</span> <span class="kw1">text-decoration</span>: <span class="kw2">underline</span>; <span class="br0">}</span> ...</pre> <h3>Les Alternatives</h3> <h4>Désactivation ponctuelle</h4> <p>Il arrive que certains caractères soient interprétés sans que ce soit voulu. Pour désactiver l'interprétation d'un caractère, il suffit de le précéder d'un antislash ; Pour afficher un antislash, désactivez le avec un second antislash : \. Il est par exemple courant de précéder un mot en emphase d'une apostrophe, la solution : voici de l'<em>emphase</em>, et de la <strong>forte emphase</strong>. Si vous enlevez l'antislash, il n'y aura pas d'apostrophe, le passage <q>emphase'', et de la</q> sera en forte emphase et il n'y aura pas de faible emphase.</p> <h4>L'o7aCode et l'html</h4> <p>Si avec tout ça vous ne parvenez pas à obtenir ce que vous voulez, il est toujours possible d'intégrer de l'html au sein du o7aCode (un bloque non-interprété), sans avoir à rédiger tous le document en html ! Pour cela, placez votre code html entre ##> et <##.</p> <p>Ici de l'html...</p> <h3>Extensions</h3> <p>Evidemment la syntaxe est très modulable et n'attend que d'être améliorée ; A titre d'exemple, j'ai créé une extension pour faire rapidement des liens vers des articles de wikipedia :</p> <ul> <li><a href="http://fr.wikipedia.org/wiki/Hypertext_Markup_Language" title="Article de Wikipedia sur "Hypertext_Markup_Language"">Article concernant l'<abbr title="Hypertext Markup Language" xml:lang="en">html</abbr></a></li> <li><a href="http://fr.wikipedia.org/wiki/html" title="Article de Wikipedia sur "html"">Hypertext Markup Language</a></li> <li><a href="http://fr.wikipedia.org/wiki/html" title="Article de Wikipedia sur "html"">html</a></li> <li><a href="http://fr.wikipedia.org/wiki/html" title="Article de Wikipedia sur "html"">html</a></li> </ul> <p>N'hésitez pas à proposer d'autres extensions !</p>