Bonjour,
Je suis actuellement en train de développer --en php/xhtml/css-- divers applications que j'intègre dans mon domaine, et l'un des outils les plus requis par ces applications est de toute évidence un programme permettant de mettre en forme le contenu : ainsi bien pour rédiger les billets et commentaires des blogs que les topics des forums etc...
Il m'a donc fallu élaborer une syntaxe qui puisse à la fois être très simple d'utilisation (pour que tout le monde sache l'employer), et très complète pour répondre à mes exigences.
J'ai ensuite créé une classe d'objet qui se charge de l'interprétation, avec comme particularité de permettre facilement la restriction des éléments à interpréter. Ainsi pour les commentaires d'un billets, seuls quelques éléments de mise en page seront autorisés, le reste n'étant pas interprété.
Bon, je pense que vous montrer une application directe de la syntaxe est la meilleur façon de la présenter. Vous trouverez donc à cette page un formulaire permettant de la tester, dont la valeur par défaut est un petit tutoriel qui passe en revu à peu près tous les points, du plus simple/basique au plus compliqué/élaboré.
Ne voyant pas comment qualifier cette syntaxe, à mi chemin entre le BBCode et les syntaxes de wikis, j'ai décidé de lui donner un nom ; N'étant pas spécialement inspiré, et comme je l'ai inventé pour mes applications web, je lui ai donné le nom de mon nom de domaine, c'est ainsi du o7aCode.
J'ai même envi de dire o7aCode 1.1, en effet, ça fait un moment que l'interpréteur est stable, et depuis je lui ai apporté quelques améliorations.
Finalement, pourquoi ce topic ? Pour partager le programme : c'est au sein d'une communauté de programmeurs et d'utilisateurs qu'il se portera le mieux ! J'ai cherché à l'écrire le plus proprement possible, mais je pense que certains passages demande à être éclaircis.
Le programme est consultable à cette adresse : http://o7acode.o7a.net/show_class.php
Voici la feuille de style associée :
.left {
float: left;
margin-right: 1em;
}
.right {
float: right;
margin-left: 1em;
}
.center {
float: center;
}
.hidden {
display: none;
}
.code {
border: 1px solid #444;
overflow: auto;
}
.code, .code code {
font-family: monospace;
background-color: white;
color: black;
font-size: 1.2em;
margin: 0;
padding: 0;
}
Si l'option blockcode_with_color est à 1, le programme requière GeSHi, un colorisateur syntaxique.include ('chemin/geshi.php');
Le colorisateur peut soit utiliser du css, soit intégrer directement les styles dans les balises, ce qui est beaucoup plus lourd à charger que du css. L'option blockcode_languages_with_css liste les langages avec lesquels vous souhaitez mettre du css. Pour que ces langages soient en couleur, il faut nécessairement que vous ayez mis les css associés, faite donc votre choix parmi cette liste :http://o7a.net/functions/fromoutside/geshi.css
Par défaut, l'option vaut array('xml','php','css'), voici donc le css associé :
Code : Tout sélectionner
/* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter) */
.xml .imp {font-weight: bold; color: red;}
.xml .coMULTI {color: #808080; font-style: italic;}
.xml .es0 {color: #000099; font-weight: bold;}
.xml .br0 {color: #66cc66;}
.xml .st0 {color: #ff0000;}
.xml .nu0 {color: #cc66cc;}
.xml .sc0 {color: #00bbdd;}
.xml .sc1 {color: #ddbb00;}
.xml .sc2 {color: #339933;}
.xml .sc3 {color: #009900;}
.xml .re0 {color: #000066;}
.xml .re1 {font-weight: bold; color: black;}
.xml .re2 {font-weight: bold; color: black;}
/* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter) */
.php .imp {font-weight: bold; color: red;}
.php .kw1 {color: #b1b100;}
.php .kw2 {color: #000000; font-weight: bold;}
.php .kw3 {color: #000066;}
.php .co1 {color: #808080; font-style: italic;}
.php .co2 {color: #808080; font-style: italic;}
.php .coMULTI {color: #808080; font-style: italic;}
.php .es0 {color: #000099; font-weight: bold;}
.php .br0 {color: #66cc66;}
.php .st0 {color: #ff0000;}
.php .nu0 {color: #cc66cc;}
.php .me1 {color: #006600;}
.php .me2 {color: #006600;}
.php .re0 {color: #0000ff;}
.php .re1 {color: #ff0000}
/* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter) */
.css .imp {font-weight: bold; color: red;}
.css .kw1 {color: #000000; font-weight: bold;}
.css .kw2 {color: #993333;}
.css .co1 {color: #a1a100;}
.css .coMULTI {color: #808080; font-style: italic;}
.css .es0 {color: #000099; font-weight: bold;}
.css .br0 {color: #66cc66;}
.css .st0 {color: #ff0000;}
.css .nu0 {color: #933;}
.css .re0 {color: #cc00cc;}
.css .re1 {color: #6666ff;}
.css .re2 {color: #3333ff;}
.css .re3 {color: #933;}
.css .re4 {color: #933;}
J'attend donc de votre part tout commentaire, suggestion ou demande d'éclaircissement.
Merci pour votre attention.