Curl Language Examples

last modified: July 22, 2004

See CurlLanguage

From

The Curl Programming Environment
Dr. Dobb's Journal September 2001
http://www.ddj.com/documents/s=1485/ddj0109f/0109f.htm

|| File: start2.curl
|| Contents:
||     This applet allows to enter a value to a TextField
||     The prompt and result will be shown with funny, jumping letters
|| Author: Friedger Mueffke
|| Version: 1.2 

{curl 1.5 applet}

{import * from MUEFFKE.COMPONENTS.LETTERBOX,
   location="letterbox.curl"}

|| Create a document without margins and scrollbars
|| that it can neatly integrated in a HTML document
{document-style PlainDocument}


|| Define function that fetches a string from a web site
{define-proc {get-web-string}:String
   {let nr: int = {value
                        {let rand:LinearRandom={LinearRandom}}
                        {rand.next-in-range 0, 6}
                    },
       result: String ="Welcome"
   }

   {try
       let intext: TextInputStream =
           {read-open{url "txt.php3?nr=" & nr}}
       {set result={{intext.read-one-line}.to-String}}
        {intext.close}
    catch err: MissingFileException do
       {error "Cannot find that file. Sorry!"}
   }
   {return result}

}

|| Declare a global variable without instanziation
{let c:#LetterBox}

|| The output of this environement is its last line
{value
   {set
       || Define Canvas containing the letters
        c={LetterBox
                       "Enter your Name",
                       width=10cm,
                       height=5cm,
                       background="black"
                    }
   }
   {let
       || Define TextField to enter a value
       tf:TextField={TextField
                        {on ValueFinished do
                            {if (tf.value != null ) then
                                {do
                                    {c.set-string ({get-web-string} & " " & tf.value)}
                                    {c.move-string-to-center}
                                }
                            }
                        }
                    }
   }

   {c.add tf,
       x=1cm,
       y=1cm
   }

   c
}

|| This environment doesn't produce any output!
|| Resize the Letter Box to a size of 500 x 400 pixel
{do
   {set c.height=c.points-per-pixel*400}
   {set c.width=c.points-per-pixel*500}

}
|| File: start2.curl
|| Contents:
||     This applet allows to enter a value to a TextField
||     The prompt and result will be shown with funny, jumping letters
|| Author: Friedger Mueffke
|| Version: 1.2 

{curl 1.5 applet}

{import * from MUEFFKE.COMPONENTS.LETTERBOX,
   location="letterbox.curl"}

|| Create a document without margins and scrollbars
|| that it can neatly integrated in a HTML document
{document-style PlainDocument}


|| Define function that fetches a string from a web site
{define-proc {get-web-string}:String
   {let nr: int = {value
                        {let rand:LinearRandom={LinearRandom}}
                        {rand.next-in-range 0, 6}
                    },
       result: String ="Welcome"
   }

   {try
       let intext: TextInputStream =
           {read-open{url "txt.php3?nr=" & nr}}
       {set result={{intext.read-one-line}.to-String}}
        {intext.close}
    catch err: MissingFileException do
       {error "Cannot find that file. Sorry!"}
   }
   {return result}

}

|| Declare a global variable without instanziation
{let c:#LetterBox}

|| The output of this environement is its last line
{value
   {set
       || Define Canvas containing the letters
        c={LetterBox
                       "Enter your Name",
                       width=10cm,
                       height=5cm,
                       background="black"
                    }
   }
   {let
       || Define TextField to enter a value
       tf:TextField={TextField
                        {on ValueFinished do
                            {if (tf.value != null ) then
                                {do
                                    {c.set-string ({get-web-string} & " " & tf.value)}
                                    {c.move-string-to-center}
                                }
                            }
                        }
                    }
   }

   {c.add tf,
       x=1cm,
       y=1cm
   }

   c
}

|| This environment doesn't produce any output!
|| Resize the Letter Box to a size of 500 x 400 pixel
{do
   {set c.height=c.points-per-pixel*400}
   {set c.width=c.points-per-pixel*500}

}

Loading...