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

Autres EDI Discussion :

Sublime Text 2, snippet et regex


Sujet :

Autres EDI

  1. #1
    Invité
    Invité(e)
    Par défaut Sublime Text 2, snippet et regex
    Bonjour,

    Je cherche à améliorer mes "snippet" sous ST2 mais mes compétences en regex sont quelque peu limitées.

    J'aimerais transformer la variable $TM_FILEPATH ainsi:

    /C/wamp/www/qooxdoo-2.1.1-sdk/projets/widgets_utiles/comboboxSearch/test_1/source/class/test_1/Test.js
    en
    test_1.Test
    via
    ${TM_FILEPATH/regex/format_string/options}
    Ne prendre que ce qu'il y a après "class/" (ici: test_1/Test.js) et remplacer les "/" par "." en supprimant le ".js"

    Auriez-vous des indications à me proposer?

    Merci

    jlmag

  2. #2
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Impossible d'extraire des sous-chaînes avant ?

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    machaine = strcpy(str, 5, 42);
    Et "machaine" contiendra les 42 caractères, depuis le 5e, de la chaîne "str" ?
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci de ta réponse,

    Je ne sais si dans les snippets, il est possible de réaliser ta manip, d'autant que "machaine" n'a pas de valeur fixe.

    Mais voilà un début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${TM_FILEPATH/^.*class\/([-a-zA-Z0-9\/_.]*).js$/$1/g}
    qui me renvoie
    Maintenant, il faut que je m'attaque au "/".

    jlmag

  4. #4
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Modifie ta regexp de façon que tu ais $1 et $2 (jouer avec les parenthèses si je me souviens bien... premier pack de parenthèses = $1, 2e pack de parenthèses = $2).

    $1 == test_1
    $2 == Test

    Et ainsi tu pourras sortir :
    $1.$2

    Bon ok... c'est facile à dire plutôt qu'à faire...

    A mon avis tu peux récupérer le dernier bloc avec un $ à la fin (comme le ^ au début).
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est un peu ce que j'essaie de faire :-(

    Mon chemin peut avoir un nombre de répertoire indifférent après le répertoire "class"
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...class/rep1/rep2/.../repn/Fichier.js
    J'essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${TM_FILEPATH/^.*class\/([-a-zA-Z0-9_]*)([\/]?).js$/$1$2:.:/g}
    Mais sans le résultat escompté.
    Peut-être une troisième parenthèse englobant le tout?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${TM_FILEPATH/^.*class\/(([-a-zA-Z0-9_]*)([\/]?)).js$/$1$2:.:/g}
    Là, je me sens un peu perdu ...

    Je regarde cela ce soir.

    A+
    Dernière modification par Invité ; 01/07/2013 à 21h50.

  6. #6
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Ceci renvoie quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${TM_FILEPATH/^.*class\/([-a-zA-Z0-9_]*)\/([-a-zA-Z0-9\/_.]*).js$/$1.$2/g}
    Je ne suis pas sûr, hein, mais si tu peux écrire le résultat, ça m'intéresse !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  7. #7
    Invité
    Invité(e)
    Par défaut
    Le début est bon! Mais j'ai augmenté la difficulté (plus de répertoires)

    Chemin du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /C/wamp/www/qooxdoo-2.1.1-sdk/projets/widgets_utiles/comboboxSearch/test_1/source/class/test_1/rep_x/rep-y/repZ/TestNewClass.js
    Avec ta regex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test_1.rep_x/rep-y/repZ/TestNewClass
    Ce que cela devrait renvoyer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test_1.rep_x.rep-y.repZ.TestNewClass
    Je poursuis mes recherche.
    Merci de ton aide..

    Ma recherche:
    un début de chaine "^.*class\/" exclu, suivi d'un ensemble de caractères "[-a-zA-Z0-9_]*" suivi par "[\/]?". "/" sera remplacé par "." si il existe. La chaine se finissant par ".js" exclu.
    Bref, le genre de truc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^.*class\/([-a-zA-Z0-9_]*)([\/]?)\.js$/$1$2:.:/g
    jlmag
    Dernière modification par Invité ; 01/07/2013 à 21h54.

  8. #8
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Je ne pense pas que la regex puisse gérer un nombre "indéterminé" de répertoires au milieu.
    Le format regex t'oblige à écrire en dur le numéro de la parenthèse.
    Donc ton format doit être connu à l'avance si tu veux extraire "plusieurs" bouts.

    Sinon : tu dois coder avant pour extraire à la main "chaque nom", entre des parenthèses, depuis class.

    Sinon : je suis mauvais en regex et je ne sais pas gérer un nombre indéterminé de mots
    Je sais juste qu'en shell on a "au moins" sed/awk/cut/tr en plus pour aider, et possibilité de "sed" plusieurs fois de suite.
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Salut, effectivement c'est mort avec un simple snippet.

    A priori tu n'es pas le premier à te poser la question, et d'autre l'ont fait en passant par des plugins :
    http://sublimetext.userecho.com/topi...nced-snippets/

Discussions similaires

  1. Sublime Text 2 et Mercurial
    Par webmoz dans le forum Outils
    Réponses: 2
    Dernier message: 27/03/2012, 09h55
  2. Comment mettre à jour Sublime text 2
    Par razily dans le forum Outils
    Réponses: 1
    Dernier message: 25/01/2012, 09h55
  3. Réponses: 0
    Dernier message: 26/11/2011, 01h55
  4. Réponses: 1
    Dernier message: 02/01/2011, 21h21
  5. Réponses: 0
    Dernier message: 28/12/2010, 09h27

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