Sintassi¶
Gli script di pTabs seguono le regole sintattiche del linguaggio Ruby [1].
I comandi sono case sensitive, quindi vanno scritti con i corretti caratteri maiuscoli e minuscoli. [2]
La virgola separa gli argomenti di un metodo o funzione.
Le stringhe di testo sono definite racchiudendo il testo tra virgolette singole o doppie.
All’interno di una stringa delimitata da doppie virgolette, #{nome_variabile} inserisce il contenuto della variabile nel testo (string interpolation).
1
title "Tab. 25.#{index}."
All’interno di una stringa \n manda a capo il testo seguente.
Un’istruzione può essere mandata a capo purchè sia chiaro dal contesto che l’istruzione non è terminata. In genere viene mandata a capo dopo una virgola. Una stringa di testo non può essere semplicemente interrotta e mandata a capo, bisogna dividere la stringa e concatenarla con il carattere +.
1 2 3
ord :d20, "Tab. 20. Dia un giudizio complessivo del prodotto testato. "+ "Utilizzi un voto da 1 a 10 per esprimere il suo giudizio."
Due numeri uniti da due punti .. rappresentano un range, una sequenza numerica: 1..10.
I caratteri preceduti da due punti : sono chiamati simboli (:q1). Ciascun simbolo viene istanziato una volta sola indipendentemente dal numero di chiamate. In pTabs si usiamo soprattutto per i nomi di parametri e per i nomi di variabili. Se però il nome della variabile contiene un punto, bisogna usare una stringa.
1 2
md s(:d7_,2..12) md s('d7.',2..12)
Le parentesi tonde racchiudono gli argomenti di un metodo o funzione. Se il contesto non è ambiguo o se non si concatena direttamente un metodo sulla stessa funzione, si possono tralasciare.
1 2 3 4 5
vars s :d6_,10 vars s(:d7_,4), s(:d7_,7..11) report.save :r report.save(:r).print
Le parentesi quadre racchiudono gli array (vettori). In pTabs quando un array costituisce l’unico argomento di una funzione, si possono tralasciare.
1 2 3 4 5
ord [d5, :r5], "Titolo tabella" # gli argomenti di ord sono due, l'array delle variabili e il titolo, # senza parentesi diventerebbero tre argomenti distinti ord :d5 do w nil, -10, -5, 5, 10 # la sequenza di valori è un array, ma essendo l'unico argomento end # la funzione w li interpreta correttamente anche senza parentesi
L’operatore => viene usato per associare la chiave di un hash (array associativo) al suo valore. In pTabs vengono utilizzati per specificare delle opzioni oppure per associare dei valori alle variabili:
1 2 3
show_missing :out => "report_na" select :d1 => [1,2], :sesso => 1
Una sintassi alternativa più semplice, ma che può essere utilizzata solo quando la chiave dell’hash è un simbolo, consiste nell’utilizzare il carattere di duepunti dopo il simbolo, seguito dal valore:
1 2 3
show_missing out:"report_na" select d1: [1,2], sesso: 1
A un metodo o funzione, oltre agli argomenti può essere passato un blocco. Un blocco è una porzione di codice (una funzione anonima, una closure) che viene eseguito nel contesto definito dall’oggetto a cui viene passato il blocco. In pTabs tutto il report è definito come blocco e anche le tabelle utilizzano un blocco quando occorre specificare maggiori parametri oltre alle variabili e al titolo. Un blocco utilizza la sintassi do ... end. [3] Lo stesso blocco può avere degli argomenti: do |args| ... end.
1 2 3 4 5 6 7 8 9 10 11 12
# i metodi sort e first agiscono sulla tabella che si sta definendo md s(:d7_, 10) do sort :d first 3 end # rep cicla su ciascuna variabile della sequenza e nel contempo rende disponibile a ogni ciclo # il nome e l'indice della variabile # (var e index sono nomi arbitrari, potremmo per esempio chiamarli v e i) s(:q25_,1..10).rep do |var, index| ord var, title "25.#{index}. Giudizio riguardo:\n$var_label()" end
Note
[1] | Lo script è effettivamente codice Ruby che viene interpretato da ruby.exe. |
[2] | Comunque, al momento, tutti i comandi sono in minuscolo. |
[3] | I blocchi in Ruby possono utilizzare anche la sintassi { |args| ... }. Per convenzione questa sintassi è utilizzata quando il blocco è di una sola riga. |