L’oggetto ptabs

L’oggetto ptabs è l’oggetto base del programma pTabs. Permette la definizione dei report e la gestione di altri file. E’ anche possibile usare l’abbreviazione pt).

ptabs.new

Inizializza e definisce il contenuto di un report. Un report è un blocco di codice passato al metodo ptabs.new(), un helper che istanzia un nuovo oggetto PTables::Report. Assegnando l’oggetto Report a una variabile è poi possibile invocare i metodi per la generazione dei vari formati di output. In uno script possono essere definiti più report.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 # crea gli output nella stessa cartella in cui risiede lo script.
 # i nomi degli output vengono generati a partire dal nome dello script
 report = ptabs.new do
   ...
 end

 # crea gli output nella stessa cartella in cui risiede lo script
 report = ptabs.new("nome_outputs") do
   ...
 end

 # specifica una cartella di default differente
 report = ptabs.new("percorso/cartella/lavoro", "nome_outputs") do
   ...
 end

ptabs.csv

Apre un file csv e cicla sulle sue righe. Passa nel blocco due argomenti: la riga e l’indice della riga. L’indice parte da 1 e non include la riga delle intestazioni dei campi. Il separatore di campo di default è il punto e virgola (;).

1
2
3
 ptabs.csv('nome_file_csv', separatore_di_campo) do |row, index|
   ...
 end

In questo esempio la funzione myrep racchiude la definizione di un report e permette la sua parametrizzazione: nell’esempio viene parametrizzato il nome del report, il sottotitolo e il codice dell’area usato per generare il nome del file di dati. ptabs.csv cicla sulle righe del file aree.csv e utilizza i dati contenuti per eseguire più volte il report.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
 def (User::Ptabs).myrep(row)

   repname, replabel, id_area = row.field('sigla'), row.field('label'), row.field('code').to_i

   ptabs.new(repname) do
     ...
     subtitle replabel
     ...
     spss.open 'area_'+id_area
     ...
   end
   report.render :html

 end

 ptabs.csv('aree') do |row, index|
   ptabs.my_report row
 end

Il contenuto del file aree.csv:

sigla;label;code
NO;Nord Ovest;1
NE;Nord Est;2
C;Centro;3
SI;Sud e Isole;4

ptabs.inc

Include un file di istruzioni nello script che si sta eseguendo. Questo comando va utilizzato all’esterno della definizione del report. Il file deve contenere un blocco di codice sintatticamente corretto. L’estensione predefinita è .pt. Si vedano anche le istruzioni %include e inc.

Variabili

Una variabile definita all’interno del blocco del report non sarebbe visibile all’esterno del blocco. Per impostare variabili a livello dell’oggetto ptabs usare i metodi .varname(value) e .varname() dell’oggetto ptabs.

1
2
3
4
5
6
7
8
9
 report = ptabs.new do

   ...
   ptabs.pdf = true if ...
   ...

 end

 report.render :pdf if ptabs.pdf