Community
    • Login

    how to use macro to make my code

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    25 Posts 6 Posters 6.6k Views
    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
      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
        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
          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
            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
              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
              • First post
                Last post
              The Community of users of the Notepad++ text editor.
              Powered by NodeBB | Contributors