Super Palio


Wstęp

Język Super Palio jest językiem alternatywnym dla klasycznego języka jPALIO. Jego funkcjonalność jest identyczna z kodem jPALIO, ale sposób kodowania zupełnie inny. O ile kod jPALIO można przyrównać np. do kodu PHP gdzie w treści strony HTML są wstawki z instrukcjami, o tyle Super Palio bardziej przypomina klasyczny język programowania, taki jak C, składający się z bloków i instrukcji.

Język Super Palio w porównaniu z kodem klasycznym jPALIO:

Kod Super Palio jest umieszczany jako blok w obiektach typu jPALIO Classic. Taki blok jest rozpoczynany znakami ${ i kończony znakiem }.

Porównanie języka jPALIO i Super Palio

Przykładowe konstrukcje w obu językach
Konstrukcja Kod jPALIO Kod Super Palio
wypisanie tekstu na ekran Ala ma kota "Ala ma kota";
inicjalizacja zmiennej lokalnej $=(@name, "Some value")
$=("@name", Some value)
$=(@name, Some value)
$=("@name", "Some value")
@name = "Some value";
konkatenacja ciągów znaków $+(["Ala ma ", $@catName, " i ", $@dogName]) "Ala ma " + @catName + " i " + @dogName;
operacje arytmetyczne $+($*($@i, 2), 1) @i * 2 + 1;
operacje logiczne $>($@i, 3) @i > 3;
instrukcja if $if($and($>($@i, 3), $<=($@j, 2)), { ... })
if(@i > 3 && @j <= 2, { "..."; });
trzyargumentowy warunek $?($>($@i, 3), "more", "less") @i > 3 ? "more" : "less";
instrukcja for $for(@row, $@data, { ... }) for("@row", @data, { "..."; });

Przykłady

Przykład 1: Lista użytkowników systemu z ilością sesji, oraz średnia ilość sesji na użytkownika.

Treść strony HTML generowana jest za pomocą klasycznego kodu jPALIO, natomiast inicjalizacja zmiennych i wszelkie obliczenia ujęte są we wstawkach Super Palio w celu skrócenia zapisu i poprawienia czytelności kodu.

 

${
@data = sql.read("select LOGIN,(select count(1) from P_SESSIONS where P_USER_ID=P_USERS.ID) from P_USERS order by LOGIN");
@i = (Object[])null;
@sum = 0;
}
<table border="1">
<tr><th>Login</th><th>Sesje</th></tr>
$for("@i", $@data, {
${ @sum = @sum + (Long)@i[1]; }
<tr><td>$@i[0]</td><td>$@i[1]</td></tr>
})
</table>
<p>Average sessions per user: ${ mth.round(@sum / util.length(@data)); }</p>

Przykład 2: To samo co poprzednio, ale w całości w kodzie Super Palio.

${
  @data = sql.read("select LOGIN,(select count(1) from P_SESSIONS where P_USER_ID=P_USERS.ID) from P_USERS order by LOGIN");
  @i = (Object[])null;
  @sum = 0;

  "<table border=\"1\">";
    "<tr><th>Login</th><th>Sesje</th></tr>";
    for("@i", @data, {
      @sum = @sum + (Long)@i[1];
      "<tr><td>"; @i[0]; "</td><td>"; @i[1]; "</td></tr>";
    });
  "</table>";
  "<p>Average sessions per user: "; mth.round(@sum / util.length(@data)); "</p>";
}