15-08-2009 18:48:39
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Bein c'est cool, ça nous aura pris a peu près une semaine. et maintenant on peut se reposer ![]()
N'hésitez pas à critiquer si quelque chose vous déplait, ou si il manque une fonctionnalité.
Voici les éléments colorés:
Les mots réservés du c++. les commentaires. Les directives de préprocesseur. Les opérateurs. Les chiffres. Les textes entre guillemets simples. Les textes entre guillemets doubles.
- Le texte.
Récapitulatif du code:
/include/parser.php
ligne 2require PUN_ROOT.'include/coloration_syntaxique.php';
ligne 120// Look for regular code and quote tags $c_start = strpos($text, '[Code=cpp.]'); //mod $c_end = strpos($text, '[/Code.]'); //mod $c_start = strpos($text, '[code.]'); $c_end = strpos($text, '[/code.]');
ligne 300function do_bbcode($text) { $text=preg_replace_callback("#\\[Code=cpp\\](.+)\\[/Code\\]#isU","cpp",$text); //mod
/include/coloration_syntaxique.php<?php if (!defined('PUN'))exit; function pregoperateurs(){ return array( '#(\\!)#is', '#(\\|)#is', '#(\\%)#is', '#(\\&)#is', '#(\\')#is', '#(\\()#is', '#(\\))#is', '#(\\+)#is', '#(\\,)#is', '#(\\-)#is', '#(\\.)#is', '#(\\/)#is', '#(\\;)#is', '#(\\=)#is', '#(\\@)#is', '#(\\[)#is', '#(\\])#is', '#(\\{)#is', '#(\\})#is', '#(\\^)#is', '#(\\:)#is', '#(\\~)#is', '#(\\")#is', '#(\\<)#is', '#(\\>)#is' , '#(\\<)#is', '#(\\>)#is', '#(\\*)#is', '#(\\?)#is', '#(0)#is', '#(1)#is', '#(2)#is', '#(3)#is', '#(4)#is', '#(5)#is', '#(6)#is', '#(7)#is', '#(8)#is', '#(9)#is', '#(\\")#is', '#( )#is');} function pregcryptogrammes(){ return array( '#(§¤¤¤¤¤§)#is','#(§¤¤¤¤£§)#is','#(§¤¤¤££§)#is','#(§¤¤£¤¤§)#is','#(§¤¤£¤£§)#is','#(§¤¤££¤§)#is','#(§¤¤£££§)#is','#(§¤£¤¤¤§)#is','#(§¤£¤¤£§)#is','#(§¤£¤£¤§)#is','#(§¤£¤££§)#is','#(§¤££¤¤§)#is','#(§¤££¤£§)#is','#(§¤£££¤§)#is','#(§¤££££§)#is','#(§£¤¤¤¤§)#is','#(§£¤¤¤£§)#is','#(§£¤¤£¤§)#is','#(§£¤¤££§)#is','#(§£¤£¤¤§)#is','#(§£¤£¤£§)#is','#(§£¤££¤§)#is','#(§£¤£££§)#is','#(§££¤¤£§)#is','#(§££¤£¤§)#is','#(§££¤££§)#is','#(§£££¤¤§)#is','#(§£££¤£§)#is','#(§££££¤§)#is','#(§£££££§)#is','#(§£££§)#is','#(§¤¤§)#is','#(§££¤§)#is','#(§£¤£§)#is','#(§£¤¤§)#is','#(§¤££§)#is','#(§¤£¤§)#is','#(§¤¤£§)#is','#(§¤¤¤§)#is','#(§¤£¤§)#is', '#(§)#is');} function operateurs(){ return array( '!', '|', '%', '&', '\\'', '(', ')', '+', ',', '-', '.', '/', ';', '=', '@', '[', ']', '{', '}', '^', ':', '~', '"', '<', '>' , '<', '>', '*', '?', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '"', ' ' );} function cryptogrammes(){ return array( '§¤¤¤¤¤§', '§¤¤¤¤£§', '§¤¤¤££§', '§¤¤£¤¤§', '§¤¤£¤£§', '§¤¤££¤§', '§¤¤£££§', '§¤£¤¤¤§', '§¤£¤¤£§', '§¤£¤£¤§', '§¤£¤££§', '§¤££¤¤§', '§¤££¤£§', '§¤£££¤§', '§¤££££§', '§£¤¤¤¤§', '§£¤¤¤£§', '§£¤¤£¤§', '§£¤¤££§', '§£¤£¤¤§', '§£¤£¤£§', '§£¤££¤§', '§£¤£££§', '§££¤¤£§', '§££¤£¤§' , '§££¤££§', '§£££¤¤§', '§£££¤£§', '§££££¤§', '§£££££§', '§£££§', '§¤¤§', '§££¤§', '§£¤£§', '§£¤¤§', '§¤££§', '§¤£¤§', '§¤¤£§', '§¤¤¤§', '§¤£¤§', '§' );} function hide($matches){ return preg_replace(pregoperateurs(),cryptogrammes(),$matches[0]);} function hide2($matches){ return $matches[1].preg_replace(pregoperateurs(),cryptogrammes(),$matches[2]).$matches[3];} function hide3($matches){ return '§£¤§'.preg_replace(pregoperateurs(),cryptogrammes(),$matches[2]).'§£¤§';} function dev($matches){ return preg_replace(pregcryptogrammes(),operateurs(),$matches[0]);} function cpp($matches){ $matches[1]=preg_replace_callback('#(//|// )(.+)(\ )#isU',"hide",$matches[1]); //cacher commentaires // $matches[1]=preg_replace_callback('#(/\\*|/\\* )(.*)(\\*/)#isU',"hide",$matches[1]); //cacher commentaires /* $matches[1]=preg_replace_callback('#(\ *)(.+)(\\\\\\ *\ )#',"hide",$matches[1]); //cacher directives \\ $matches[1]=preg_replace_callback('#(\\\\\\ *\ )(.+)(; *\ |} *\ |\\) *\ )#',"hide",$matches[1]); //cacher directives $matches[1]=preg_replace_callback('#(\\#include|\\#ifndef|\\#define|\\#if|\\#else|\\#elif)(.*)(\ )#isU','hide',$matches[1]); //cacher directives inline $matches[1]=preg_replace_callback('#(?<!div class=)(\\")(.*)(\\")#isU',"hide3", $matches[1]); //cacher guillemets doubles $matches[1]=preg_replace_callback('#(?<!div class=)(\\')(.*)(\\')#isU',"hide2", $matches[1]); //cacher guillemets simples $matches[1]=preg_replace('#(?<!")(?<!<)(?<!>)(?<!&)(;|\\,|\\(|\\)|\\{|\\}|\\[|\\]|\\+|\\-|\\=|^|\\:|\\<|\\>|\\&|\\*|/|!|%|@|\\.|\\^|\\~|\\?)#isU','<span class="operateurs">$1</span>', $matches[1]); //colorer operateurs $matches[1]=preg_replace('#([^a-zA-Z0-9§£¤_\\#])(for|while|if|else|switch|case|break|default|return|printf|struct|class|public|private|new|delete|asm|auto|catch|const|continue|do|enum|extern|explicit|exit|friend|goto|inline|protected|register|signed|sizeof|static|this|try|typedef|using|virtual|volatile|printf)([^a-zA-Z0-9§£¤=_])#isU','$1<span class="mots_cles">$2</span>$3', $matches[1]); $matches[1]=preg_replace('#([^a-zA-Z0-9§£¤_])(namespace|true|false|void|int|char|double|float|unsigned|signed|bool|long)([^a-zA-Z0-9_])#isU','$1<span class="mots_cles">$2</span>$3', $matches[1]); //colorer mots cles $matches[1]=preg_replace('#( |\\(|\\=|\\*|\\.|,|\\+\\-\\/|<|>|\\[)([0-9]++)(?![a-eg-zA-EG-Z])#isU','$1<span class="chiffres">$2</span>', $matches[1]); //colorer chiffres $matches[1]=preg_replace('#(?<!div class=)(\\')(.*)(\\')#isU','<span class="guillemetsimple">$1$2$3</span>', $matches[1]); //colorer guillemets simples $matches[1]=preg_replace('#(§£¤§)(.*)(§£¤§)#isU','"$2"', $matches[1]); $matches[1]=preg_replace('#(?<!div class=)(\\")(.*)(\\")#isU','<span class="guillemetdouble">$1$2$3</span>', $matches[1]); //colorer guillemets doubles $matches[1]=preg_replace(pregcryptogrammes(),operateurs(), $matches[1]); //dévoiler tout le monde $matches[1]=preg_replace('#(\\#include|\\#ifndef|\\#define|\\#if|\\#else|\\#elif)(.*)(\ )#isU','<span class="directives">$1$2$3</span>',$matches[1]); //colorer directives inline $matches[1]=preg_replace('#(\\#endif)#isU','<span class="directives">$1</span>',$matches[1]); //colorer directives inline $matches[1]=preg_replace('#(\\\\\\)( *\ )(.+)(;|}|\\))( *\ )#isU','$1$2<span class="directives">$3$4</span>$5', $matches[1]); //colorer directives $matches[1]=preg_replace('#(/\\*|/\\* )(.*)(\\*/)#isU','<span class="commentaires">$1$2$3</span>', $matches[1]); //colorer commentaires /* $matches[1]=preg_replace('#(?<!http:)(//)(?!http://)(.*)(\ )#isU','<span class="commentaires">$1$2</span>$3', $matches[1]); //colorer commentaires // return '<div class="codebox" ><div class="incqbox"><h4>Code c++ :</h4><div class="texte" style="font-family:monospace; FONT-SIZE: 1.1em">'.$matches[1].'</div></div></div>';} //encadrer le code ?>
/style/imports/Mercury_cs.css
[quote].mots_cles{color:3288cb;}
.commentaires{color 898989;}
.directives{color:44a444;}
.operateurs{color:e16644;}
.guillemetsimple{color:898989;}
.guillemetdouble{color:898989;}
.chiffres{color:ccaa77;}
.texte{color:}
[/quote]
Test de coloration:
Code c++ :
#define TEST() printf("Coloration Syntaxique");
//exemple
int main(int argc, char *argv[])
{
TEST()
return 0;
}
Hors ligne
15-08-2009 19:45:46
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 92.130.139.144
- Courriel
En tous les cas merci pour tous ces codes. ![]()
Force et sagesse...
Hors ligne
15-08-2009 20:43:23
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 90.5.171.13
- Courriel Site web
perso je metrait les syntaxe des mot clée et operateur de la même couleur que les texte du skin ( Mercury -> orange | cpp -> mot clée -> orange ) ![]()
ça bug avec les processeur :
Code c++ :
#if defined WIN32 || defined WIN64 || defined _WIN32_ || defined _WIN64_
#define WINDOWS
#endif
et pour une question de simplicité ne serais t-il pas plus judicieux d'écrire "code=cpp" au lien de "Code=cpp" pour les modification des poste ses plus simple il aurais alors la même balise de fermeture (si sa pose pas de problème)
Hors ligne
16-08-2009 10:07:15
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Merci tmike.
Merci également Magun, effectivement j'ai oublié cette eventualité, d'ailleurs j'ai du en oublier d'autre, car je ne connais pas toutes les façon d'écrire en c++.
Concernant les balises tu as entierement raison, il serait plus pratique d'écrire en minuscule. Mais le probleme c'est que, la balise [/code.] est déja utilisé par punbb, et je n'ai pas trouvé de solution pour évité les conflits engendrés.
Pour ce qui est de la couleur orange, malheuresement c'est la seule couleur qu'on ne peut pas choisir puisqu'elle est réservé pour les liens.
Voilà une nouvelle maj pour corriger pas moins de 5 bugs ![]()
Les codes de Magun mon grandement aidé à désceler de nombreux bugs et à découvrir de nouvelles mises en formes. ![]()
Hors ligne
16-08-2009 15:18:09
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.56.64.158
- Courriel
Update effectuée.
Force et sagesse...
Hors ligne
16-08-2009 15:42:35
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.56.64.158
- Courriel
Update effectuée ![]()
Force et sagesse...
Hors ligne
17-08-2009 16:47:09
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 81.51.159.49
- Courriel
Mise à jour effectuée.
Pour ce qui est du premier post, tu ne pourras pas car tu n'en es pas l'auteur. Par contre effectivement, tu modifie juste le dernier en date,
avec un message notifiant que tu as effectué une mise à jour.
Force et sagesse...
Hors ligne
17-08-2009 21:18:55
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.218.247.190
- Courriel
nico Ecris:
Ok, ça te dérange pas si j'efface tous les codes bugés ? à la place je met "code obsolète" ou alors je supprime carrement les post. ?
Que préfères-tu ?
Non pas de soucis, je ne suis pas sur que tu puisse supprimer un de tes post, mais la première option est bonne. Sinon, je supprimerais plus tard
les post marqué 'obselète'.
Force et sagesse...
Hors ligne
18-08-2009 17:08:42
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.56.148.139
- Courriel
![]()
Force et sagesse...
Hors ligne
20-08-2009 07:10:31
- Metallizer
- Membres

- Date d'inscription:
- Messages: 100
- IP: 80.14.49.68
- Courriel Site web
Moi aussi j'ai une critique ![]()
Ça devrait utiliser une font à largeur fixe non ? un petit "monospace" dans font-family ? ![]()
Hors ligne
20-08-2009 11:12:37
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut Metallizer , merci pour ta critique.
Ça devrait utiliser une font à largeur fixe non ?
Je ne me suis jamais posé la question, et je n'ai pas conscience des désagréments engendrés , peux-tu nous dire quel est l'inconveneant du style de police actuel ?
Et donc quels sont les avantages des polices monospace ? merci.
Hors ligne
26-08-2009 08:41:47
- Metallizer
- Membres

- Date d'inscription:
- Messages: 100
- IP: 80.14.49.68
- Courriel Site web
Pour expliquer, voici un petit exemple. J'ai créé une petite classe Exemple où j'ai souhaité aligner les méthodes pour qu'on distingue bien le type de retour et le nom de chaque méthode. J'ai copié mon code directement sans le modifier.
Avec une police à largeur variable :
Code c++ :
class Exemple {
public:
Exemple();
~Exemple();
void setName(const core::stringc& newName);
core::stringc getName();
};Avec une police à largeur fixe :
class Exemple {
public:
Exemple();
~Exemple();
void setName(const core::stringc& newName);
core::stringc getName();
};D'ailleurs, la balise code de base de votre forum exploite une police "monospace"...
Hors ligne
26-08-2009 10:46:34
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Effectivement c'est beaucoup plus agréable en Monospace, j'ai mis a jour le code et je te remerci pour ta remarque. ![]()
Si tu as 5 min tmyke
il faudrait mettre a jour coloration_syntaxique.php. Merci
Hors ligne
28-08-2009 09:05:43
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.204.49.141
- Courriel
Voilà qui est fait.
Force et sagesse...
Hors ligne
28-08-2009 09:24:26
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
il reste un bug avec les preprocesseur :
Code c++ :
#if defined SDL_SUPPORT
#elif defined IRRLICHT_SUPPORT
#endif
pourquoi ne pas colorier tout les lignes contenants ou commençant par '#' ?
Hors ligne
28-08-2009 14:51:41
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Merci Magun, je connaissait pas elif
Magun Ecris:
pourquoi ne pas colorier tout les lignes contenants ou commençant par '#' ?
Exellente remarque, en fait cela vient juste de moi, j'essai de colorer en fonction des éléments connus lorsque j'en ai la possibilité.
Cela permet de desceller plus aisément les fautes de frappes dans les posts. mais le problème, comme tu peut le constater, est qu'il peut y avoir des oublis.
Bon désolé tmyke, encore une maj à éffectuer
Hors ligne
28-08-2009 18:44:46
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
ok je voie un peut ton systeme maintenant ![]()
il rest encore ça :
Code c++ :
#define function(x, y)(( ((x*y)^y-x)/100*x\\
cos((x+y)/2)+tan(y))\\
+y*(y*x)-x)
si la ligne presedant a \\ et si il y a \\ apres le define c'est la suite de celui-ci
mais sur se coup la ses peut-etre plus embêtant ^-^
Hors ligne
28-08-2009 19:17:20
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Oui, les directives sur plusieurs lignes, c'est le truc qui m'a le plus fait galérer, et visiblement c'est pas encore ça ![]()
je vais voir ça. Merci encore
edit:Correction effectué.
Hors ligne



