IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Créer un nouveau pygments pour colorer des listings


Sujet :

Python

  1. #1
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut Créer un nouveau pygments pour colorer des listings
    Bonsoir,
    j'aimerais faire un outil bien plus simple à utiliser que ce fait pygments (je n'arrive pas à entrer dans la logique de son API).

    J'aimerais savoir ce que vous pourriez attendre d'une bibliothèque pour colorer les listings.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    A la manière des lexer que l'on crée pour Scintilla, peut-être, et que tu connais, je pense.

    J'ai eu à en faire un pour les fichiers .desktop, j'ai trouvé cela particulièrement aisé et l'on peut y implémenter très facilement la possibilité pour l'utilisateur de choisir ses couleurs lui-même.

    Et ces lexer font plus que de la coloration syntaxique. Tant qu'à analyser le texte, autant faire un peu plus.

  3. #3
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour VinsS et merci pour ta réponse.

    Le mode de fonctionnement sera double. Pour le moment, je bosse sur un type de fichier qu'un non-programmeur pourra remplir de façon la plus intuitive possible. Voici un exemple suivi du rendu attendu.

    LEXER (pour les programmeurs Python, afin de gagner un peu de temps, il y aura un équivalent sous forme de dictionnaire mais je n'ai pas encore réfléchi à cela car ce n'est pas ma priorité du moment).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    lexer::
        comment::
            //...
     
            /*
            ...
            */
     
        string::
            escape::
                \
     
            keyword::
                \n \t
     
            quote::
                "..."
     
        keyword::
            type::
                int char
     
            function::
                #include{{space}}<{{letter --> letter number {.} --> letter number}}>
                printf return
                for if
     
            symbol::
                { } ( ) [ ]
                , ;
                = == < >
                * + ++
     
        block::
            {...}
            (...)
            [...]
    La coloration sera presque comme ci dessous à deux eceptions près :
    1. stdio.h et stdlib.h ne seront pas colorés.
    2. int et char auront une autre couleur que if et compagnie.

    CODE COLORÉ PAR LE FORUM
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    /* Un exemple de code de type C
     *
     * En espérant que cela sera instructif.
     */
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
        // Une boucle for
        int compteur;
     
        for(compteur = 0 ; compteur < 10 ; compteur++){
            if(compteur == 1){
            	printf("Une étape dans la boucle for avec \"compteur\" différent de un.\n");
        	}
        }
     
        return 0;
        // Fin de la fonction
    }


    Il y aura bien entendu une version abrégée de
    #include{{space}}<{{letter --> letter number {.} --> letter number}}>
    qui sera
    #include{{sp}}<{{a-Z --> a-Z 0-9 {.} --> a-Z 0-9}}>
    La partie block du LEXER permettra de définir des blocs repliables : ce sera pour une sortie HTML.

    A la place de regex, il y aura quelques constantes utiles comme ::space:: pour indiquer des espaces possibles, ou ... qui indique n'importe quel caractère.

    Côté utilisation, il suffira de donner le LEXER et puis c'est tout. Le code analysé pourra ensuite être coloré.

    Pour finir, je ferais en sorte que la classe qui s'occupe de colorer soit facilement surclassable : par exemple, les printers pour produire du texte HTML ou LaTeX seront simples à modifier même par quelqu'un qui connait peu Python (j'ai déjà fait quelques choses de ce type pour un outil permettant de mettre en forme des formules mathématiques).

Discussions similaires

  1. [PROC TEMPLATE] Créer un nouveau style pour la ligne des totaux
    Par enicnath dans le forum ODS et reporting
    Réponses: 6
    Dernier message: 28/07/2010, 16h26
  2. Réponses: 1
    Dernier message: 29/04/2008, 12h05
  3. condition pour colorer des cellules
    Par emillio dans le forum Excel
    Réponses: 18
    Dernier message: 15/03/2008, 07h34
  4. [phpBB] Créer un nouveau cookie
    Par cybertj dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 16/09/2006, 01h23
  5. Réponses: 10
    Dernier message: 02/11/2005, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo