Newbie questions about Pliant

Newbie questions about Pliant

On Pliant Web programming

Message posted by maybe Marcus on 2002/07/25 16:53:09
Why the following .page code does not compile?

method p show
  arg_rw HtmlPage p
  implicit p
    [titi]

show  
Message posted by maybe Marcus on 2002/07/25 18:00:17
This one does not compile either. It complains about the 'note' instruction.

method page show set index
  arg_rw HtmlPage page
  arg Array:Int set
  arg Int index

  if index=0
    [done]
  else
    text string:(set index)
    note ">"
      show set index-1

method page test
  arg_rw HtmlPage page

  var Array:Int x
  for (var Int i) 0 5
    x+=i
  show x 4

test
Message posted by maybe Marcus on 2002/07/25 18:17:50
Regarding my first question, I got it. In a .page file one does not need to 
say 'implicit'. Moreover, the HtmlPage variable must be named 'page', otherwise
it won't compile. Therefore, the following works:

method page show
   arg_rw HtmlPage page
   [titi]

show

But this one does not:

method p show
   arg_rw HtmlPage p
   [titi]

show
Message posted by maybe Hubert Tonneau on 2002/07/25 20:12:21
The longer explaination is that when you write a .page with

[titi]

Pliant translate in in facts to something like:

function foo page
  arg_rw HtmlPage page
  implicit page
    [titi]

Now, assuming your previous .page :

method p show
  arg_rw HtmlPage p
  implicit p
    [titi]

show 

the end result is:

function foo page
  arg_rw HtmlPage page
  implicit page

  method p show
    arg_rw HtmlPage p
    implicit p
      [titi]

  show 

so Pliant complains about the fact it does not no if the missing symbol are
'p' or 'page' because both would provide working code.

Now about your problem with:

    note ">"
      show set index-1

you should write a red box in the .page documentation specifying that with
the current not perfect Pliant implementation, when you get an error at
'note' or 'button', you have to translate it:

    page note ">"
      show set index-1

so that Pliant will stop complaining about the 'note' or 'button' instruction
and will rather display what's wrong within.


Message posted by maybe pom on 2002/07/26 05:30:12
> Pliant complains about the fact it does not no if the missing symbol are
'p' or 'page' because both would provide working code.

Pliant may understand as both p or page, but page could not provide working code
(this actually is an implementation problem: using an argument of an "outer"
function in a "inner" function has presently no meaning at all).
Message posted by maybe Marcus on 2002/07/26 13:20:53
>    page note ">"
>       show set index-1
>
> so that Pliant will stop complaining about the 'note' or 'button' instruction
> and will rather display what's wrong within.

The error message now says that the problem is the 'set' parameter:

"Cannot convert 'set' to a string that could be passed back when the button is pressed.
  compile /temp/t.page 10 11"

I could not understand what is the source of the error.



Message posted by maybe Hubert Tonneau on 2002/07/26 13:35:19
Your code would require to 'pass' the 'set' variable from the main page to
the virtual one under the 'button', so the variable must be converted to
a string so that it can be provided to the browser which will bring it back
to the sever when pressing the button (remind that HTTP is session less).

Since Pliant as no 'from string' and 'to string' methods for Array:Int data
type, it says it can't do that. Either use a simpler data type than Array:Int
or write the methods for Array:Int
Message posted by maybe Marcus on 2002/07/26 15:15:46
Many thanks, Hubert.

I will add a little blurb to the .page format documentation 
elaborating a bit on this parameter passing detail.