[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gbs3 fails with ://


Can confirm that. Was somewhat handy for grouping couple of assignments in a single line.

Instead of e. g.

x = 4
y = 2
z = 1000
greet = "hello"

you could write

x= 4: y = 2: z = 1000
greet = "hello"

Of course, there is no fun in using it with loops or conditional blocks, but within them is ok.

In languages like C and its derivatives you can use the [obligatory] ";" to achieve the same.

Regards
Rolf


Am 25.04.24 um 18:47 schrieb Tim Dickson:
A bit of history... don't know if it is the reason for : in gambas as I think it was also in vb6,  but.... a colon was a standard command/line separator in the days of BBC basic which was my first intro to coding in the 80's in that version of basic you could type shortcuts for the keywords, like P. instead of PRINT which let you squeeze more
code in the 253byte per line limit.
regards, Tim

On 25/04/2024 15:04, Bruce Steers wrote:


On Thu, 25 Apr 2024 at 14:20, Tim Dickson <dickson.tim@xxxxxxxxxxxxxx> wrote:

    it would seem so. the detection of : is not smart enough to see if
    it is quoted in a string
    echo 'dim a as string:a="coffee:tea":print a'|gbs3
    gives errors.
    you would need to do
    echo 'dim a as string:a="coffee"&chr$(58)&"tea":print a'|gbs3
    to get it to work.


does not seem right to me.
conventionally you would just use echo -e and \n for newline

echo -e 'dim a as string\na="coffee:tea"\nprint a'|gbs3 -

It's like the idea to use : for lf was by someone who was not aware of the -e arg of echo to process escapes.
I guess we just need to add to the wiki...
A colon : is translated to \n unless you use the - argument.
or replace each : with &chr$(58)&


but then your example Tim..
echo 'dim a as string:a="coffee:tea":print a'|gbs3

fails if you use - or not.
I think there are more problems than benefits to the conversion of : to lf
And i don't think it's needed as echo -e and '\n' would be the conventional way.

I think in my fork i will remove the conversion as i don't like it and I didn't even know you could use : for lf. and I'll be sure to use echo -e and the - argument in any gbs3 scripts for public use.

Respects
BruceS



    On 25/04/2024 11:30, Bruce Steers wrote:
    Did you add th code that convert : to lf ?

    That's terrible

    Why not just echo -e "line 1\nline 2" ?


    So a colon cannot be used in any pipe text to GBS unless you want
    line feeds?

    On Thu, 25 Apr 2024, 03:07 Brian G, <brian@xxxxxxxxxxxxxxxx> wrote:


        On 4/23/24 04:04, Bruce Steers wrote:


        On Tue, 23 Apr 2024 at 00:45, Brian G
        <brian@xxxxxxxxxxxxxxxx> wrote:


            On 4/22/24 16:28, Brian G wrote:


            On 4/21/24 21:05, Bruce Steers wrote:


            On Mon, 22 Apr 2024 at 04:58, Bruce Steers
            <bsteers4@xxxxxxxxx> wrote:

                This has bugged me a few times.
                using file:// or http:// the : turns into a
                linefeed when gbs3 is piped
                Is it me doing something wrong or is it a bug?

                echo 'Print "http//www.there"'| gbs3
                http//www.there

                echo 'Print "http://www.there";'| gbs3
                # Gambas Project File 3.0
                Title=Gambas Script
                Startup=MMain
                Vendor=Ordinary
                Version=0.0.1
                License=General Public License 2.0

                # Gambas module file : MMain:4:2: Non terminated
                string

                    1 :' Gambas module file
                    2 :
                    3 :Public Sub main()
                    4*:Print "http
                //www.there"
                        ^ Non terminated string
                    5 :End
                    6 :
                    7 :

                Respects
                BruceS

            Aah i discovered this...
            echo 'Print "file://www.there"'| gbs3 -

            works okay if i add the dash -

            I'll use the dash if i need it :)

            Respects


            try

            echo 'print "https"&chr(58)&"//www.endofworld"' | gbs3

            Yes it is a bug I guess!

-- ~~~~ Brian

            Yes the - causes it to read the stdin as if it were as file until eof
            and process it that way.
-- ~~~~ Brian

        I have a fix, not sure how valid it is...

        A slight change in the _call() method of ParseArgs.class
         Ie.
        The loop now goes from 0 To aArgs.Max not 1 To aArgs.Max to
        still function if there are no args
        if no args it checks Lof(File.In) to see if there's data and
        add the - arg if yes.

        Public Function _Call(c As Context, aArgs As String[]) As String
          Dim I As Integer
          Dim sApp As String
          Dim index As Variant
          If File.Name(aArgs[0]) = "gbw" & System.version Then
        c.$bWebPage = True
          For I = 0 To aArgs.Max
          If I = 0 Then
            If aArgs.Count = 1 And If Lof(File.In) Then ' if there
        are no args but there is data waiting in stdin
        aArgs.Add("-")
        Goto gStdIn
        Break
            Else
        Continue
            Endif
          Endif
        Respects
        BruceS



        echo "for i as integer = 0 to 3 : print i : next"| gbs3
        0
        1
        2
        3
        $ echo "for i as integer = 0 to 3 : print i : next"| gbs3 -
        # Gambas Project File 3.0
        Title=Gambas Script
        Startup=MMain
        Vendor=Ordinary
        Version=0.0.1
        License=General Public License 2.0

        # Gambas module file : MMain:4:28:'

            1 :' Gambas module file
            2 :
            3 :Public Sub main()
            4*:for i as integer = 0 to 3 : print i : next
                                          ^ Unexpected ':'
            5 :End
            6 :
            7 :

-- ~~~~ Brian





Follow-Ups:
Re: gbs3 fails with ://Bruce Steers <bsteers4@xxxxxxxxx>
References:
gbs3 fails with ://Bruce Steers <bsteers4@xxxxxxxxx>
Re: gbs3 fails with ://Bruce Steers <bsteers4@xxxxxxxxx>
Re: gbs3 fails with ://Brian G <brian@xxxxxxxxxxxxxxxx>
Re: gbs3 fails with ://Brian G <brian@xxxxxxxxxxxxxxxx>
Re: gbs3 fails with ://Bruce Steers <bsteers4@xxxxxxxxx>
Re: gbs3 fails with ://Brian G <brian@xxxxxxxxxxxxxxxx>
Re: gbs3 fails with ://Bruce Steers <bsteers4@xxxxxxxxx>
Re: gbs3 fails with ://Tim Dickson <dickson.tim@xxxxxxxxxxxxxx>
Re: gbs3 fails with ://Bruce Steers <bsteers4@xxxxxxxxx>
Re: gbs3 fails with ://Tim Dickson <dickson.tim@xxxxxxxxxxxxxx>