begin process at 2012 05 27 18:04:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > [POO] HIGHLIGHT_FILE SUR DES FICHIERS EN C/C++

[POO] HIGHLIGHT_FILE SUR DES FICHIERS EN C/C++


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Niveau :Débutant Date de création :11/02/2005 Date de mise à jour :29/07/2005 12:22:56 Vu / téléchargé :3 455 / 97

Auteur : gergalp

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Affichage d'un code C/C++ comme Visual Studio

Il ya 3 tableaux a mettre en parametre:
$words - les mots à surligner
$preproc - les instructions du préprocesseur à surligner
$denied - les fonctions/types/instructions à interdire

Il y a aussi une vérification de la norme(optionnel) pour obliger à mettre des espaces entre les types et le caractere * au moment de la définition des pointeurs.

Source

  • <?php
  • if(phpversion() < 5)
  • {
  • include('parse_code.php4.php');
  • }
  • else
  • {
  • include('parse_code.php5.php');
  • }
  • /*
  • ** On créé une fonction qui utlisera la classe en mode automatique
  • */
  • function highlight_c_file($filename, $denied = array())
  • {
  • $preproc = array(
  • 'include', 'if', 'ifdef', 'ifndef', 'pragma',
  • 'include', 'define', 'endif', 'else', 'undef'
  • );
  • $words = array(
  • '__cdecl', '__int8', '__int16',
  • '__int32', '__int64', '__stdcall',
  • 'asm', 'auto', 'break',
  • 'case', 'catch', 'char',
  • 'class', 'comment', 'const',
  • 'continue', 'default', 'delete',
  • 'do', 'double', 'else',
  • 'enum', 'extern', 'float',
  • 'for', 'friend', 'goto',
  • 'if', 'inline', 'int',
  • 'lib', 'long', 'new',
  • 'null', 'operator', 'overload',
  • 'private', 'protected', 'public',
  • 'register', 'return', 'short',
  • 'signed', 'sizeof', 'static',
  • 'struct', 'switch', 'template',
  • 'this', 'throw', 'typedef',
  • 'typename', 'union', 'unsigned',
  • 'virtual', 'void', 'volatile',
  • 'while'
  • );
  • $parse = new parse_code($filename);
  • $parse->set_strict(true);
  • $parse->set_words($words, $preproc, $denied);
  • $parse->go();
  • }
  • ?>
  • <html>
  • <head>
  • <title>Affichage du Code Source</title>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  • <meta http-equiv="imagetoolbar" content="no">
  • <style type="text/css">
  • <!--
  • body {
  • margin : 0px 0px 0px 0px;
  • background-color: #9cacbe;
  • font-size: 9px;
  • font-family: "Verdana", Arial;
  • }
  • #block
  • {
  • width: 80ex;
  • font-size: 12px;
  • background-color: #FFF;
  • float: left;
  • height: auto;
  • border: 1px solid #000000;
  • margin: 2ex;
  • left: 5px;
  • top: 5px;
  • right: 5px;
  • bottom: 5px;
  • white-space: pre;
  • padding: 10px;
  • color: #333;
  • text-decoration: none;
  • }
  • -->
  • </style>
  • </head>
  • <body>
  • <pre id="block">
  • <?php
  • $filename = $_GET['file'];
  • highlight_c_file($filename);
  • ?>
  • </pre>
  • </body>
  • </html>
<?php

if(phpversion() < 5)
{
	include('parse_code.php4.php');
}
else
{
	include('parse_code.php5.php');
}

/*
** On créé une fonction qui utlisera la classe en mode automatique
*/
function highlight_c_file($filename, $denied = array()) 
{ 
    $preproc = array( 
        'include', 'if', 'ifdef', 'ifndef', 'pragma', 
        'include', 'define', 'endif', 'else', 'undef' 
    ); 
  
    $words = array( 
        '__cdecl', '__int8', '__int16', 
        '__int32', '__int64', '__stdcall', 
        'asm', 'auto', 'break', 
        'case', 'catch', 'char', 
        'class', 'comment', 'const', 
        'continue', 'default', 'delete', 
        'do', 'double', 'else', 
        'enum', 'extern', 'float', 
        'for', 'friend', 'goto', 
        'if', 'inline', 'int', 
        'lib', 'long', 'new', 
        'null', 'operator', 'overload', 
        'private', 'protected', 'public', 
        'register', 'return', 'short', 
        'signed', 'sizeof', 'static', 
        'struct', 'switch', 'template', 
        'this', 'throw', 'typedef', 
        'typename', 'union', 'unsigned', 
        'virtual', 'void', 'volatile', 
        'while' 
    ); 
  
    $parse = new parse_code($filename); 
    $parse->set_strict(true);
    $parse->set_words($words, $preproc, $denied); 
    $parse->go(); 
}

?>
<html>
<head>
<title>Affichage du Code Source</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="imagetoolbar" content="no">
<style type="text/css">
<!--
body {
	margin : 0px 0px 0px 0px;
	background-color: #9cacbe;
	font-size: 9px;
	font-family: "Verdana", Arial;
}

#block
{
	width: 80ex;
	font-size: 12px;
	background-color: #FFF;
	float: left;
	height: auto;
	border: 1px solid #000000;
	margin: 2ex;
	left: 5px;
	top: 5px;
	right: 5px;
	bottom: 5px;
	white-space: pre;
	padding: 10px;
	color: #333;
	text-decoration: none;
}
-->
</style>

</head>
<body>
<pre id="block">
<?php
$filename = $_GET['file'];

highlight_c_file($filename);
?>
</pre>
</body>
</html>

 Conclusion

il y a 2 versions de la classe: une pour PHP4 et l'autre pour PHP5
j'ai testé seulement sous PHP5, en principe les modifications que j'ai faites pour la version PHP4 devraient tout remettre en ordre pour cette version.

si vous ne savez pas quelle version de PHP vous avez ou que vous passez souvent de la version 4 à la version 5, regardez les premieres lignes de l'exemple, c'est une petite astuce pour ne pas avoir a remodifier les fichiers.

vous pouvez aussi rajouter vos propres mots clés(ou ceux que j'ai pu oublier), en rajoutant des éléments au tableau $words dans l'exemple

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

29 juillet 2005 12:22:56 :
- possibilité de désactiver la vérification de la norme. - ajout de la coloration des chaines constatntes(ca manquait un peu :) ) - ajout de l'exemple dans le zip(l'opération la plus difficile de la mise à jour.... :D )

 Sources du même auteur

CRYPATGE/DÉCRYPTAGE DE TEXTE
Source avec Zip CLASSE D'ANALYSE DES ID3 V1 CONTENUS DANS LES MP3
FICHIERS LOG, STATS, TRACES DU PASSAGE DES VISITEURS SUR UN ...
VÉRIFICATION DE LA PRÉSENCE D'UN SERVEUR

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

Commentaires et avis

Commentaire de gergalp le 01/03/2007 14:29:59

Un peu plus de 2 ans après, d'autres choses sont apparues, je ne maintiens pas ma source, mais je vous propose de suivre le lien ci-dessous, il s'agit d'une classe du projet PEAR, elle permet de colorer beaucoup d'autres langages, et certainement plus rapidement

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales