14 Replies Latest reply on Feb 15, 2017 12:57 PM by Liphou

    [JS] Cut in 2 an [object Text]

    Liphou Level 1

      Hello

      I try to cut in two an object text to make two separate object?

       

      The object contains "36-25", I try to extract the numbers in two text object for modified separately


      I have dumal with the manipulations

      Thank you

       

      /************************

       

      Bonjour

       

      je cherche à couper en deux un object text pour en faire deux object séparé ?

      l'objet contient "36-25", je cherche à extraire les chiffres dans deux object texte pour les modifié séparément

       

      j'ai dumal avec les manipulations

       

      Merci

        • 1. Re: [JS] Cut in 2 an [object Text]
          Obi-wan Kenobi Adobe Community Professional

          Salut,

           

          Tu veux quoi au final ? un bloc texte avec "25", un autre avec "36" ?

           

          (^/)

          • 2. Re: [JS] Cut in 2 an [object Text]
            Liphou Level 1

            Bonjour Obi-wan,

             

            Le "25-36" est le résultat d'un ".findGrep()" qui me donne une [object Text], mais je dois mettre une référence croisé sur le 25 et 36.

             

            var  xRefForm = app.activeDocument.crossReferenceFormats.item("N Para"); // Format de la referenvce 
            var source = app.activeDocument.crossReferenceSources.add ([object Text], xRefForm);
            

             

            mais je dois faire un traitement sans perdre la sélection dans mon texte  (si je ne me trompe pas)

             

            J'ai testé la chose suivante, qui me donne bien un [object Text] mais comme les chiffres peux être \d-\d, \d-\d\d ou même \d\d-\d\d\d, ce n'est pas le bonne solution.

             

            var startCh = test02.characters[0];
            var endCh = test02.characters[1];
            var test3 = test02.characters.itemByRange(0,1);
            

             

            Merci

            • 3. Re: [JS] Cut in 2 an [object Text]
              Obi-wan Kenobi Adobe Community Professional

              Plus clair ! …

              Tu sembles donc vouloir trouver "25" et "36" séparément ?

               

              (^/)

              • 4. Re: [JS] Cut in 2 an [object Text]
                Liphou Level 1

                Oui ...

                J'utilise le grep suivant

                 

                var leRecherchePara = '\\b(infra|supra)\\b,\\snos?~S?\\K(\\d+)\\s?(et|-|,)?[~S|\\s]?(\\d+|s\\.)?';
                

                 

                qui peux me donner

                \d+

                \d+-\d+

                \d+ et s.

                 

                pour le chiffre seul pas trop de problème à mon avis, pour le "25 et s." là, non plus je ne devrais pas avoir trop de problème.

                 

                mais je ne parviens pas à décomposé l'objet en deux objet.

                Si non, je pence à mettre un style de caractère sur les chiffre et puis retiré tous ce qui n'est pas un numéro

                 

                app.findGrepPreferences = NothingEnum.nothing;
                            app.changeGrepPreferences = NothingEnum.nothing;
                            with (app.findGrepPreferences){
                                findWhat = "[^0-9]";
                                  //appliedCharacterStyle = 'TDM Folio'; // Pour test 'Rouge'
                                  appliedCharacterStyle = 'xxxx';//
                            } // fin 
                            with (app.changeGrepPreferences){
                                appliedCharacterStyle = '[No character style]';
                            } // fin 
                           app.activeDocument.changeGrep();;
                

                 

                Mais c'est pas très pro ! non?

                 

                Merci

                ;-)

                • 5. Re: [JS] Cut in 2 an [object Text]
                  Obi-wan Kenobi Adobe Community Professional

                  Peux-tu me donner quelques lignes de texte d'exemple ?

                   

                  Commentaire: D'après ton code Grep, tu recherches par ex. :

                  "blablabla, infra, nos 25-26." ou "blablabla, infra, nos 25, 26 et 27."

                  Si tu veux attraper "25", puis "26" (puis – 2e ex. – "27"), tu pourrais avoir besoin de "\G"!

                   

                  (^/)

                  • 6. Re: [JS] Cut in 2 an [object Text]
                    Liphou Level 1

                    Voici "Cf. infra, nos 5-6."

                     

                    Capture d’écran 2017-02-15 à 15.15.04.png

                    • 7. Re: [JS] Cut in 2 an [object Text]
                      Liphou Level 1

                      Je travail beaucoup par étape (et beaucoup de test) voici le code de cette étape :

                       

                      #target "indesign-12.064"
                      /***********************************
                          // variable globale
                      *************************************/ 
                      
                      var leRecherchePara = '\\b(infra|supra)\\b,\\snos?~S?\\K(\\d+)\\s?(et|-|,)?[~S|\\s]?(\\d+|s\\.)?';
                      
                         
                      // fais dans le CC2017 dois être compatible avec le CC2017
                      main()
                      
                      function main() {
                      
                      // problème quand du deux chiffre  avec style de caractaire ???
                      // problème dans certin cas les chiffres ne change pas????
                          if (app.documents.length > 0){ // IF 01
                                  laRecheche (app.activeDocument);
                              } else {
                                  alert("Ouvrir un document et selectioné votre text.");
                          } // fin du IF 01
                      }//
                      // Fin du main
                      function laRecheche(leDocSource) {
                             
                               
                            app.findGrepPreferences = NothingEnum.nothing;
                            app.changeGrepPreferences = NothingEnum.nothing;
                           
                              with (app.findGrepPreferences){
                                      findWhat = leRecherchePara; // la commande de la recheche
                              } // fin
                              var lesSupraInfra = leDocSource.findGrep();
                             
                              for (var i = 0 ; i < lesSupraInfra.length; i++ ) {
                                           
                                  maTransformation2(lesSupraInfra[i]);
                             
                              }
                            app.findGrepPreferences = NothingEnum.nothing;
                            app.changeGrepPreferences = NothingEnum.nothing;
                        }//
                      
                      function maTransformation2(laRecheche) {
                      
                          var rech2 = /[^\d]/g;
                          //var trouve = laRecheche.replace(rech, '6');
                          //-> laRecheche.characters[0].contents = '6' // travaille toujour sur la recherche  la mdification saplique dans Id
                          //$.writeln(laRecheche.contents);
                          // var trouvé = laRecheche.contents.match(rech2);
                          //$.writeln(trouvé);
                          if (laRecheche.contents.match(rech2) != null) {
                            var rech = /(\d+)/g;
                            var test02 = laRecheche;
                            // test02.insertionPoints.item(0).contents = '9'
                        // var test3 = test02.characters.itemByRange(startCh,endCh);
                              try {
                                      var startCh = test02.characters.item(0);
                                      var endCh = test02.characters.item(3);
                                      var test3 = test02.characters.itemByRange(startCh,endCh);
                                      $.writeln( test3.contents);
                                }
                            catch(e) {
                                $.writeln( 'Null : '  + e);
                                }
                          }
                      }//
                      //
                      function maTransformation(laRecheche) {
                          var rech = /(\d+)/g;
                          var rech2 = /[^\d]/g;
                          //var trouve = laRecheche.replace(rech, '6');
                          //-> laRecheche.characters[0].contents = '6' // travaille toujour sur la recherche  la mdification saplique dans Id
                          $.writeln(laRecheche.contents);
                          // var trouvé = laRecheche.contents.match(rech2);
                          //$.writeln(trouvé);
                         
                          if (laRecheche.contents.match(rech2) != null) {
                              var test01 = laRecheche.toSource ();
                              var test02 = laRecheche;
                            // test02.insertionPoints.item(0).contents = '9'
                             
                              var startCh = test02.characters[0];
                              var endCh = test02.characters[1];
                              $.writeln( endCh.contents);
                        // var test3 = test02.characters.itemByRange(startCh,endCh);
                              var test3 = test02.characters.itemByRange(0,1);
                              $.writeln( test3.contents);
                              }
                          }//
                      
                      • 8. Re: [JS] Cut in 2 an [object Text]
                        Obi-wan Kenobi Adobe Community Professional

                        J'ai réécrit ton code Grep! Le mien trouve tous les chiffres dans ton contexte de footnotes.

                         

                        À valider (écrit rapidement) :

                         

                        (Cf.~S(infra|supra), nos?~S|\G)(-?|, | et )\K\d+

                         

                        Mais il ne trouvera pas le "2" et 2017" dans :

                         

                        Cf. infra, nos 25, 36 et 38. 2 articles en 2017.

                         

                        (^/) 

                        • 9. Re: [JS] Cut in 2 an [object Text]
                          Liphou Level 1

                          Merci je teste, qu'elle est la signification de "\G" en français

                          j'ai lu "\G (start of match attempt)" -> "\ G (début de la tentative de match)" ???

                          • 10. Re: [JS] Cut in 2 an [object Text]
                            Obi-wan Kenobi Adobe Community Professional

                            Pour être clair : Personne n'utilise "\G" parce que personne n'y comprend rien ! 

                             

                            Pour essayer de simplifier, le code recherche un nombre "\d+" dans un certain contexte "…\K".

                            Ce contexte originel est d'abord : "(Cf.~S(infra|supra), nos?~S)\K"

                            S'il en trouve un, il recherche le suivant grâce à "\G" mais là il introduit ces 2 nouveaux arguments que : "(Cf.~S(infra|supra), nos?~S)" n'a pas besoin d'exister (il le peut !) et le 2e catch sera, juste après le premier, complêté par : "(-?|, | et )" et ainsi de suite … Tant qu'il trouve cet environnement, il "catches" ! mais toujours avec cette arrière-pensée que le contexte originel peut réapparaître ! …

                             

                            [ Bref, tout à fait limpide ! N'est-ce pas !?… Je suis un très mauvais prof. ! Désolé ! ]

                             

                            (^/)

                            1 person found this helpful
                            • 11. Re: [JS] Cut in 2 an [object Text]
                              Liphou Level 1

                              Merci pour cette explication ... à méditer et a pratiquer !!!

                               

                              Je vous tiens au courant de l’avancement du script .

                               

                              Merci

                              • 12. Re: [JS] Cut in 2 an [object Text]
                                Liphou Level 1

                                Après quelque test de réglage ... Oups!  la ligne du grep trouve le tous première chiffre  4 qui est le tous premier caractère ...

                                Capture d’écran 2017-02-15 à 20.41.27.png

                                • 13. Re: [JS] Cut in 2 an [object Text]
                                  Obi-wan Kenobi Adobe Community Professional

                                  Est-ce à dire que tu ne cibles pas seulement les footnotes ?

                                  Est-ce à dire que tu n'utilises pas ici de num auto?

                                   

                                  Tu peux toujours exclure ce genre de situation en "exigeant" un caractère après :

                                   

                                  (Cf.~S(infra|supra), nos?~S|\G)(-?|, | et )\K\d+(?=.)

                                   

                                  Cela t'évitera ce cas de figure et la problématique des "tableaux à chiffres".

                                   

                                  Ne voyant pas ton fichier, ce n'est pas évident d'inventorier toutes les exclusions! 

                                   

                                  (^/)

                                  • 14. Re: [JS] Cut in 2 an [object Text]
                                    Liphou Level 1

                                    Oui, je cherche sur tous le document, ce numéro n'est pas automatique, c'est dure de voir tous les cas.

                                    'J'ai placer un 5 dans la mise en page comme tu peux voir sur l'image, il ne le trouve pas la, ça me semble logique.

                                     

                                    Dans le grep on  a place "nos?" pour le \K, c'est le \G qui le fais passer ? Et pour quoi le 4 et pas le 5?

                                     

                                    Sans ficher c'est compliqué, on n'est jamais asse prédit, je suis tous les jours dans le job.

                                     

                                    un très grand merci pour toutes ces infos.