Community
    • Login

    how to use macro to make my code

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    25 Posts 6 Posters 10.4k Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • PeterJonesP Offline
      PeterJones @Alan Kilborn
      last edited by

      @alan-kilborn said in how to use macro to make my code:

      as IMO the OP hasn’t made it very clear

      Since the OP deleted their question and it had to be resurrected, I am pretty sure either the OP got the answer they needed, or they left in a huff because they couldn’t figure out how to make us understand what they wanted. Either way, I doubt the OP is going to come back and clarify, and I doubt there’s much point in our spending any more time on it (unless the OP does come back and clarify).

      Neil SchipperN 1 Reply Last reply Reply Quote 0
      • Neil SchipperN Offline
        Neil Schipper @PeterJones
        last edited by

        @peterjones said in how to use macro to make my code:

        OP deleted their question and it had to be resurrected

        @igor-lerinc A rather anti-social thing to do.

        @peterjones said in how to use macro to make my code:

        I doubt there’s much point in our spending any more time on it

        I realized this morning an enhancement to the spreadsheet approach I suggested earlier I’d like to briefly describe.

        Without too much difficulty a column could be added consisting of formulas to calculate the line number in the target file to be assembled.

        Assuming 6 lines per case (1 for “case” stmnt, 4 vars, and 1 for static “break” stmnt),

        the first bank, the “case” numbers, would have target line numbers 1,7,13… (1+(92-1)*6)

        the second bank, the “country” fields would have target line numbers 2,8,14… (2+(92-1)*6)

        etc.

        Now the lines could be sorted, either in the spreadsheet or after xfer to text editor.

        To make it amenable to upkeep and modification, one should define things like NUM_COUNTRIES (92) and LINES_PER_CASE (6 in my example), and use those in the formulas.

        As before, there are many variations on implementation details, such as, doing C-ification early, in spreadsheet:
        CONCAT spaces/tabs + "case " + case num " “:”
        CONCAT spaces/tabs + “country=” + country text + “;”
        etc
        or late, in Npp using fancy regex in a F&R.

        1 Reply Last reply Reply Quote 0
        • Igor LerincI Offline
          Igor Lerinc
          last edited by

          this was the answer i was looking for:

          https://stackoverflow.com/a/70632134/17848947

          i just didn’t wanted to continue building on more misunderstandings trying to explain further and waste anyone’s time…

          1 Reply Last reply Reply Quote 0
          • guy038G Offline
            guy038
            last edited by guy038

            Hello, @igor-lerinc, @peterjones, @alan-kilborn, @neil-schipper, @paul-wormer and All;

            I found out a nice solution with a minimum of actions to proceed ! This further method is rather difficult to express but is finally easy to execute :-))

            I will expose my method with a short list of 6 countries ( Andorre, United Arab Emirates, Afganistan, Albania, Armenia and Angola ) which, of course, can be extend to your 230 items and even more !

            Basically, you have three informative zones and two pseudo-zones case n; and R.drawable.flag_ + the current country code, located on the next line

            Let’s place each of these 5 zones in a different file, from file A.txt to file E.txt. Presently, the files B, C and E will contain 6 informative lines and files A and D are still empty !


            • In the B.txt file :

              • Move to the very beginning of file

              • Create a zero-length rectangular selection onto the 6 lines

              • Open the Column Editor ( Alt + C )

              • Choose the Number to Insert radio button

              • Initial number 2

              • Increase by 5

              • Repeat 1

              • Tick the Leading zeros option

              • Click on the OK button

            => You should get the numbering : 02, 07, 12, 17, 22, 27

            • In the C.txt file :

              • Move to the very beginning of file

              • Create a zero-length rectangular selection onto the 6 lines

              • Open the Column Editor ( Alt + C )

              • Choose the Number to Insert radio button

              • Initial number 3

              • Increase by 5

              • Repeat 1

              • Tick the Leading zeros option

              • Click on the OK button

            => You should get the numbering : 03, 08, 13, 18, 23, 28

            • In the E.txt file :

              • Move to the very beginning of file

              • Create a zero-length rectangular selection onto the 6 lines

              • Open the Column Editor ( Alt + C )

              • Choose the Number to Insert radio button

              • Initial number 5

              • Increase by 5

              • Repeat 1

              • Tick the Leading zeros option

              • Click on the OK button

            => You should get the numbering : 05, 10, 15, 20, 25, 30

            • In the D.txt empty file :

              • Hit 6 times on the Enter key

              • Insert a semicolon character on each line

              • Move to the very beginning of file

              • Create a zero-length rectangular selection onto these 6 lines

              • Open the Column Editor ( Alt + C )

              • Choose the Number to Insert radio button

              • Initial number 4

              • Increase by 5

              • Repeat 1

              • Tick the Leading zeros option

              • Click on the OK button

            => You should get the numbering : 04, 09, 14, 19, 24, 29, followed with a semicolon

            • Finally, in the A.txt empty file :

              • Hit 6 times on the Enter key

              • Move to the very beginning of file

              • Create a zero-length rectangular selection onto these 6 lines

              • Open the Column Editor ( Alt + C )

              • Choose the Number to Insert radio button

              • Initial number 1

              • Increase by 5

              • Repeat 1

              • Tick the Leading zeros option

              • Click on the OK button

            => You should get the numbering : 01, 06, 11, 16, 21, 26

            • Secondly :

              • Move the caret at end of the first line

              • Create, again, a zero-lengh rectangular selection onto these 6 lines

              • Open the Column Editor ( Alt + C )

              • Choose the Number to Insert radio button

              • Initial number 1

              • Increase by 1, this time

              • Repeat 1

              • Untick the Leading zeros option, this time

              • Click on the OK button

            You should get the final numbering : 011, 062, 113, 164, 215, 266


            Then, let’s merge the files, from A.txt to E.txt, in any order, in a new tab, renamed as Resul.txt, which possible blank lines in between. You obtain this text :

            011
            062
            113
            164
            215
            266
            
            
            02"ad"
            07"ae"
            12"af"
            17"al"
            22"am"
            27"an"
            
            03"+376"
            08"+971"
            13"+93"
            18"+355"
            23"+374"
            28"+244"
            
            
            04;
            09;
            14;
            19;
            24;
            29;
            
            05"Andorra"
            10"United Arab Emirates (UAE)"
            15"Afghanistan"
            20"Albania"
            25"Armenia"
            30"Angola"
            
            • Perform a classical sort with the Edit > Line Operations > Sort Lines Lexicographically Ascending option. After deleting the first possible blank lines, you’re left with these Result.txt contents :
            011
            02"ad"
            03"+376"
            04;
            05"Andorra"
            062
            07"ae"
            08"+971"
            09;
            10"United Arab Emirates (UAE)"
            113
            12"af"
            13"+93"
            14;
            15"Afghanistan"
            164
            17"al"
            18"+355"
            19;
            20"Albania"
            215
            22"am"
            23"+374"
            24;
            25"Armenia"
            266
            27"an"
            28"+244"
            29;
            30"Angola"
            
            • Move to the very beginning of file

            • For the last time, do a zero-length rectangular selection onto the 30 lines

            • Delete the first two digits, hitting twice the Delete key

            The Resul.txt file becomes :

            1
            "ad"
            "+376"
            ;
            "Andorra"
            2
            "ae"
            "+971"
            ;
            "United Arab Emirates (UAE)"
            3
            "af"
            "+93"
            ;
            "Afghanistan"
            4
            "al"
            "+355"
            ;
            "Albania"
            5
            "am"
            "+374"
            ;
            "Armenia"
            6
            "an"
            "+244"
            ;
            "Angola"
            

            Almost finished ! Open the Replace dialog and performs this regex S/R :

            SEARCH (?-s)^(\d+)\R(.+)\R(.+)\R(.+)\R"(.+)"(\R)

            REPLACE \tcase \1:\6\t\tcountry=\2\6\t\tcountry_code_number=\3\6\t\tcountry_flag=R\.drawable\.flag_\5;\6\t\tcountry_word="\5"\6\t\tbreak;\6

            Magically, the text is changed into :

            	case 1:
            		country="ad"
            		country_code_number="+376"
            		country_flag=R.drawable.flag_Andorra;
            		country_word="Andorra"
            		break;
            	case 2:
            		country="ae"
            		country_code_number="+971"
            		country_flag=R.drawable.flag_United Arab Emirates (UAE);
            		country_word="United Arab Emirates (UAE)"
            		break;
            	case 3:
            		country="af"
            		country_code_number="+93"
            		country_flag=R.drawable.flag_Afghanistan;
            		country_word="Afghanistan"
            		break;
            	case 4:
            		country="al"
            		country_code_number="+355"
            		country_flag=R.drawable.flag_Albania;
            		country_word="Albania"
            		break;
            	case 5:
            		country="am"
            		country_code_number="+374"
            		country_flag=R.drawable.flag_Armenia;
            		country_word="Armenia"
            		break;
            	case 6:
            		country="an"
            		country_code_number="+244"
            		country_flag=R.drawable.flag_Angola;
            		country_word="Angola"
            		break;
            

            To end, run this second regex S/R :

            SEARCH (?s)(?!\r|\n).+

            REPLACE switch (5) {\r\n$0\tdefault:\r\n\tconsole.log\(\x96Nothing here\x96\);\r\n\t}\r\n

            And here is, Igor, your expected result :

            switch 5 {
            	case 1:
            		country="ad"
            		country_code_number="+376"
            		country_flag=R.drawable.flag_Andorra;
            		country_word="Andorra"
            		break;
            	case 2:
            		country="ae"
            		country_code_number="+971"
            		country_flag=R.drawable.flag_United Arab Emirates (UAE);
            		country_word="United Arab Emirates (UAE)"
            		break;
            	case 3:
            		country="af"
            		country_code_number="+93"
            		country_flag=R.drawable.flag_Afghanistan;
            		country_word="Afghanistan"
            		break;
            	case 4:
            		country="al"
            		country_code_number="+355"
            		country_flag=R.drawable.flag_Albania;
            		country_word="Albania"
            		break;
            	case 5:
            		country="am"
            		country_code_number="+374"
            		country_flag=R.drawable.flag_Armenia;
            		country_word="Armenia"
            		break;
            	case 6:
            		country="an"
            		country_code_number="+244"
            		country_flag=R.drawable.flag_Angola;
            		country_word="Angola"
            		break;
            	default:
            	console.log(`Nothing here`);
            	}
            

            Best Regards

            guy038

            P.S. :

            • Your Two-letters country, in the B.txt file, represents the ISO 3166-1 alpha-2 standard for each country

            • Your Country_code_number, in the C.txt file, represents the E_164 codes standard for each country

            Refer to this main link :

            https://en.wikipedia.org/wiki/Country_code

            Paul WormerP 1 Reply Last reply Reply Quote 2
            • Paul WormerP Offline
              Paul Wormer @guy038
              last edited by Paul Wormer

              @guy038
              Congratulations with your ingenious solution. Although it seems to me that an editor - any editor - is not quite the right tool for this job. It is as if you are explaining how to build a wooden chicken coop with as only tool the heel of a shoe.

              shoeheel.png

              1 Reply Last reply Reply Quote 1

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              • First post
                Last post
              The Community of users of the Notepad++ text editor.
              Powered by NodeBB | Contributors