rghost 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +4 -0
- data/Manifest.txt +101 -0
- data/README.txt +3 -0
- data/Rakefile +93 -0
- data/lib/rghost.rb +3 -0
- data/lib/rghost/arc.rb +39 -0
- data/lib/rghost/barcode.rb +40 -0
- data/lib/rghost/callback.rb +55 -0
- data/lib/rghost/color.rb +118 -0
- data/lib/rghost/constants.rb +616 -0
- data/lib/rghost/convert.rb +24 -0
- data/lib/rghost/cursor.rb +82 -0
- data/lib/rghost/data_grid/basic_grid.rb +136 -0
- data/lib/rghost/data_grid/csv_grid.rb +27 -0
- data/lib/rghost/data_grid/data_grid.rb +14 -0
- data/lib/rghost/data_grid/dynamic_callback.rb +12 -0
- data/lib/rghost/data_grid/field_format.rb +60 -0
- data/lib/rghost/data_grid/grid.rb +18 -0
- data/lib/rghost/data_grid/header.rb +111 -0
- data/lib/rghost/data_grid/rails_grid.rb +37 -0
- data/lib/rghost/data_grid/static_callback.rb +13 -0
- data/lib/rghost/data_grid/style/border_lines.rb +47 -0
- data/lib/rghost/data_grid/style/bottom_lines.rb +30 -0
- data/lib/rghost/data_grid/style/old_forms.rb +30 -0
- data/lib/rghost/data_grid/style/style.rb +8 -0
- data/lib/rghost/document.rb +380 -0
- data/lib/rghost/dsc_entry.rb +20 -0
- data/lib/rghost/dynamic_document_callback.rb +27 -0
- data/lib/rghost/eps.rb +22 -0
- data/lib/rghost/font.rb +52 -0
- data/lib/rghost/function.rb +36 -0
- data/lib/rghost/gif.rb +28 -0
- data/lib/rghost/graphic.rb +28 -0
- data/lib/rghost/gs_alone.rb +17 -0
- data/lib/rghost/helpers.rb +13 -0
- data/lib/rghost/horizontal_line.rb +29 -0
- data/lib/rghost/image.rb +26 -0
- data/lib/rghost/jpeg.rb +26 -0
- data/lib/rghost/line.rb +40 -0
- data/lib/rghost/line_width.rb +17 -0
- data/lib/rghost/load.rb +37 -0
- data/lib/rghost/newpath.rb +20 -0
- data/lib/rghost/paper.rb +88 -0
- data/lib/rghost/point.rb +22 -0
- data/lib/rghost/point_with_command.rb +17 -0
- data/lib/rghost/ps/basic.ps +14 -0
- data/lib/rghost/ps/begin_document.ps +7 -0
- data/lib/rghost/ps/callbacks.ps +146 -0
- data/lib/rghost/ps/code128.font +344 -0
- data/lib/rghost/ps/code39.font +195 -0
- data/lib/rghost/ps/cursor.ps +41 -0
- data/lib/rghost/ps/datagrid.ps +52 -0
- data/lib/rghost/ps/ean.font +150 -0
- data/lib/rghost/ps/eps.ps +42 -0
- data/lib/rghost/ps/font.ps +31 -0
- data/lib/rghost/ps/functions.ps +646 -0
- data/lib/rghost/ps/gif.ps +150 -0
- data/lib/rghost/ps/horizontal_line.ps +3 -0
- data/lib/rghost/ps/i25.font +103 -0
- data/lib/rghost/ps/jpeg.ps +122 -0
- data/lib/rghost/ps/paper.ps +8 -0
- data/lib/rghost/ps/rectangle.ps +5 -0
- data/lib/rghost/ps/row.ps +4 -0
- data/lib/rghost/ps/show.ps +20 -0
- data/lib/rghost/ps/table_callbacks.ps +96 -0
- data/lib/rghost/ps/textarea.ps +11 -0
- data/lib/rghost/ps/type.ps +1 -0
- data/lib/rghost/ps/unit.ps +3 -0
- data/lib/rghost/ps/vertical_line.ps +14 -0
- data/lib/rghost/ps_object.rb +51 -0
- data/lib/rghost/rectangle.rb +39 -0
- data/lib/rghost/rgengine.so +0 -0
- data/lib/rghost/rghost.rb +3 -0
- data/lib/rghost/ruby_ghost_config.rb +25 -0
- data/lib/rghost/ruby_ghost_engine.rb +175 -0
- data/lib/rghost/ruby_to_ps.rb +92 -0
- data/lib/rghost/scale.rb +14 -0
- data/lib/rghost/show.rb +31 -0
- data/lib/rghost/static_document_callback.rb +22 -0
- data/lib/rghost/text_in.rb +29 -0
- data/lib/rghost/textarea.rb +115 -0
- data/lib/rghost/units.rb +81 -0
- data/lib/rghost/variable.rb +12 -0
- data/lib/rghost/version.rb +9 -0
- data/lib/rghost/vertical_line.rb +29 -0
- data/scripts/txt2html +67 -0
- data/setup.rb +1585 -0
- data/test/test_helper.rb +2 -0
- data/test/test_rghost.rb +11 -0
- data/website/index.html +11 -0
- data/website/index.txt +30 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +129 -0
- data/website/template.rhtml +48 -0
- metadata +145 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
#Converte PDF para outro formato
|
2
|
+
class Convert
|
3
|
+
attr_reader :error, :errors
|
4
|
+
#Nova inst�ncia de Convert
|
5
|
+
# filename - Arquivo de entrada em pdf
|
6
|
+
def initialize(filename)
|
7
|
+
@filename=filename
|
8
|
+
|
9
|
+
|
10
|
+
end
|
11
|
+
# Converte para o formato device usando as op��es do RubyGhostEngine.
|
12
|
+
# A op��o :range � v�lida para este m�todo
|
13
|
+
def to(device, options={})
|
14
|
+
rge=RubyGhostEngine.new(@filename,options)
|
15
|
+
|
16
|
+
|
17
|
+
out=rge.render(device)
|
18
|
+
@error=rge.error
|
19
|
+
@errors=rge.errors
|
20
|
+
out
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require "point"
|
2
|
+
require 'ps_object'
|
3
|
+
require 'point_with_command'
|
4
|
+
#Controla o posicionamento dos elementos na p�gina
|
5
|
+
class Cursor < PsObject
|
6
|
+
|
7
|
+
#Vai para uma determinada faixa
|
8
|
+
# d=Document.new
|
9
|
+
# d.set Cursor.goto_row(15)
|
10
|
+
# d.set Show.new("Row 15")
|
11
|
+
def Cursor.goto_row(row)
|
12
|
+
g=PsObject.new(row.to_i)
|
13
|
+
g.call :goto_row
|
14
|
+
g.call :default_point
|
15
|
+
g
|
16
|
+
end
|
17
|
+
#Salta um n�mero de faixas
|
18
|
+
# d=Document.new
|
19
|
+
# d.set Cursor.jump_row(4) #salta 4 faixas para baixo
|
20
|
+
# d.set Cursor.jump_row(-5) #volta 5 faixas para cima
|
21
|
+
def Cursor.jump_rows(row)
|
22
|
+
j=PsObject.new(row.to_i)
|
23
|
+
j.call :jump_rows
|
24
|
+
j.call :default_point
|
25
|
+
j
|
26
|
+
end
|
27
|
+
#Rotaciona objetos. Recomendado a utiliza��o dentro de um Newpath
|
28
|
+
#
|
29
|
+
# d=Document.new
|
30
|
+
# d.newpath do
|
31
|
+
# set Cursor.rotate(90)
|
32
|
+
# #fa�a algo em 90� e retorne o cursor
|
33
|
+
# set Cursor.rotate(-90)
|
34
|
+
# end
|
35
|
+
def Cursor.rotate(angle)
|
36
|
+
r=PsObject.new(angle.to_i)
|
37
|
+
r.call :rotate
|
38
|
+
r
|
39
|
+
end
|
40
|
+
#Move o cursor para uma determinada posi��o
|
41
|
+
# doc=Document.new
|
42
|
+
# doc.set Cursor.moveto(:x=> 10, :y=> 5)
|
43
|
+
# doc.set Show.new("Hello Girls!!!")
|
44
|
+
def Cursor.moveto(point={})
|
45
|
+
PointWithCommand.to(:moveto,point)
|
46
|
+
end
|
47
|
+
#Move o cursor para uma determinada posi��o relativa ao posi��o corrente
|
48
|
+
# doc=Document.new
|
49
|
+
# doc.set Cursor.moveto(:x=> 10, :y=> 5)
|
50
|
+
# doc.set Show.new("Hello Girls!!!")
|
51
|
+
# doc.set Cursor.rmoveto(:x => 5) #move para x=> 15 (10 mais 5) e mantem y => 5
|
52
|
+
def Cursor.rmoveto(point={})
|
53
|
+
PointWithCommand.to(:rmoveto,point)
|
54
|
+
end
|
55
|
+
#Desloca a refer�ncia padr�o(:x=> 0, :y => 0, esquerda inferior) da p�gina para uma nova
|
56
|
+
# doc=Document.new
|
57
|
+
# doc.set Cursor.translate(:x=> 2, :y=> 1)
|
58
|
+
# doc.set Cursor.moveto(:x => 0,:y => 0) #Ponto :x=> 2, :y=> 1
|
59
|
+
# doc.set Cursor.translate(:x=> -2, :y=> -1) #retorna ao ponto padr�o
|
60
|
+
def Cursor.translate(point={:x =>0 , :y => 0})
|
61
|
+
p={:x =>0 , :y => 0}.merge(point)
|
62
|
+
PointWithCommand.to(:translate,p)
|
63
|
+
end
|
64
|
+
#Salta para a pr�xima faixa com controle de p�gina
|
65
|
+
def Cursor.next_row
|
66
|
+
PsObject.new(:nrdp)
|
67
|
+
#ps.call :next_row
|
68
|
+
#ps.call :default_point
|
69
|
+
#
|
70
|
+
|
71
|
+
end
|
72
|
+
#Vai para a pr�xima p�gina com controle de cursores e p�ginas
|
73
|
+
def next_page
|
74
|
+
PsObject.new :next_page
|
75
|
+
end
|
76
|
+
#Salta a p�gina sem controle de cursores
|
77
|
+
def showpage
|
78
|
+
PsObject.new :showpage
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
@@ -0,0 +1,136 @@
|
|
1
|
+
require 'enumerator'
|
2
|
+
#Grid b�sica. Pr�totipo para objeto interno Grid em ps
|
3
|
+
class DataGrid::BasicGrid < PsObject
|
4
|
+
attr_reader :header
|
5
|
+
attr_accessor :column_padding
|
6
|
+
include RubyToPs
|
7
|
+
|
8
|
+
#Nova inst�ncia de DataGrid::BasicGrid
|
9
|
+
# Na constru��o do objeto segue as op��es
|
10
|
+
# :headings => true #ou false para n�o apresentar o header
|
11
|
+
# :column_padding => #Espa�o entre o dado e o limite da coluna
|
12
|
+
#Op��es padr�o para todas as colunas. Facades para FataGridHeader
|
13
|
+
# :width => 2.5 #Largura da coluna
|
14
|
+
# :align => :left #Alinhamento os dados em rela��o a coluna (:right, :center, :left )
|
15
|
+
# :title_align => :left #Alinhamento do t�tulo
|
16
|
+
# :format => "%0.2f" #Formatador de dados onde o par�metro s�o.
|
17
|
+
# Symbol - Procura o m�todo com o mesmo nome definido no m�dulo DataGrid::FieldFormat::method_name
|
18
|
+
# String - Formata com os padr�es definidos em sprintf
|
19
|
+
# Class - Uma heran�a de DataGrid::FieldFormat::Custom com override no m�todo format.
|
20
|
+
# Proc - Um bloco. No exemplo um texto limitado a 9 caracteres.
|
21
|
+
def initialize(options={})
|
22
|
+
h= (options[:headings] == false)?false:true
|
23
|
+
@header=DataGrid::Header.new(h)
|
24
|
+
@header.default_options(options)
|
25
|
+
@callbacks=PsObject.new
|
26
|
+
@column_padding=0.1 || options[:column_padding]
|
27
|
+
@record_count=1
|
28
|
+
@data=[]
|
29
|
+
@data[0]=[]
|
30
|
+
@data_index=0
|
31
|
+
@max_stack=RubyGhostConfig::GS[:stack_elements]
|
32
|
+
end
|
33
|
+
|
34
|
+
#Trata os callbacks a n�vel de Grid definidos em DataGrid::DynamicCallback::ACCEPT e DataGrid::StaticCallback::ACCEPT
|
35
|
+
def method_missing(name,*args,&block)
|
36
|
+
|
37
|
+
case name
|
38
|
+
when *DataGrid::DynamicCallback::ACCEPT:
|
39
|
+
@callbacks.set DataGrid::DynamicCallback.new(name,args.shift || {},&block)
|
40
|
+
when *DataGrid::StaticCallback::ACCEPT:
|
41
|
+
@callbacks.set DataGrid::StaticCallback.new(name,&block)
|
42
|
+
else
|
43
|
+
raise NameError.new(name.to_s)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
#Adiciona uma coluna passando o t�tulo e op��es personalizadas. Um Hash com :title. Facade DataGrid::Header.col
|
47
|
+
def col(title="", options={})
|
48
|
+
if title.is_a? Hash
|
49
|
+
@header.col(title[:title],title)
|
50
|
+
else
|
51
|
+
@header.col(title,options)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
#Alias col
|
55
|
+
def column(title="", options={})
|
56
|
+
col(title,options)
|
57
|
+
|
58
|
+
end
|
59
|
+
#Converte o dado no formato sugerido
|
60
|
+
def format_field(value,type)
|
61
|
+
case type
|
62
|
+
when Symbol: DataGrid::FieldFormat.send(type,value)
|
63
|
+
when String: DataGrid::FieldFormat.string(type % value)
|
64
|
+
when Class: type.new(value).gs_format
|
65
|
+
when Proc: DataGrid::FieldFormat.string(type.call(value))
|
66
|
+
|
67
|
+
else raise TypeError.new("type=#{type}, value type=#{value.class}")
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
#Processa as linhas no formato ps esperado
|
72
|
+
def proc_line(line)
|
73
|
+
h=@header.data_types
|
74
|
+
rec=[]
|
75
|
+
line.each_with_index do |v,i|
|
76
|
+
#puts "#{i} == #{h[i]} = #{v}, #{format_field(v,h[i])}"
|
77
|
+
rec << format_field(v,h[i])
|
78
|
+
end
|
79
|
+
@data[@data_index] << "[#{rec}]\n"
|
80
|
+
|
81
|
+
|
82
|
+
if @record_count == @max_stack
|
83
|
+
@record_count=0
|
84
|
+
@data_index+=1
|
85
|
+
@data[@data_index]=[]
|
86
|
+
end
|
87
|
+
@record_count+=1
|
88
|
+
|
89
|
+
|
90
|
+
end
|
91
|
+
#Informa os dados com as colunas da mesma quantidade de t�tulos
|
92
|
+
def data(data)
|
93
|
+
|
94
|
+
end
|
95
|
+
public
|
96
|
+
|
97
|
+
def ps
|
98
|
+
|
99
|
+
|
100
|
+
grid_names=[]
|
101
|
+
p=PsObject.new
|
102
|
+
@data.each do |ary|
|
103
|
+
r=(rand*99999).to_i
|
104
|
+
p.raw "/data#{r}[\n#{ary.join}\n] def"
|
105
|
+
grid_names << r
|
106
|
+
end
|
107
|
+
p.raw "#{@header.ps} #{@callbacks}"
|
108
|
+
|
109
|
+
g=Graphic.new do
|
110
|
+
raw :before_table_create
|
111
|
+
raw grid_names.map{|m| " data#{m} table_proc\n" }.join
|
112
|
+
raw :after_table_create
|
113
|
+
end
|
114
|
+
p.set g
|
115
|
+
p
|
116
|
+
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
#Informa o estilo predefinido da grid. Validados
|
121
|
+
# :border_lines #aponta para DataGrid::Style::BorderLines.new
|
122
|
+
# :old_forms #aponta para DataGrid::Style::OldForms.new
|
123
|
+
# :bottom_lines #aponta para DataGrid::Style::BottomLines.new
|
124
|
+
def style(type=:border_lines)
|
125
|
+
st=case type
|
126
|
+
when :border_lines: DataGrid::Style::BorderLines.new
|
127
|
+
when :old_forms: DataGrid::Style::OldForms.new
|
128
|
+
when :bottom_lines: DataGrid::Style::BottomLines.new
|
129
|
+
else raise NameError.new("Why? #{type} ?")
|
130
|
+
end
|
131
|
+
|
132
|
+
st.set_style(self)
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'ps_object'
|
2
|
+
#Carrega informa��es de um arquivo no formato CSV
|
3
|
+
class DataGrid::CSVGrid < DataGrid::BasicGrid
|
4
|
+
#Informa os arquivo e o separador
|
5
|
+
# _data - Caminho do arquivo
|
6
|
+
# col_sep - Separador em String ou String de Regexp, Ex: "\s{2}"
|
7
|
+
def data(_data,col_sep=',')
|
8
|
+
|
9
|
+
first=true
|
10
|
+
_data=File.open(_data) if _data.is_a? String
|
11
|
+
_data.each do |line|
|
12
|
+
l=line.split(Regexp.new(col_sep))
|
13
|
+
if first
|
14
|
+
@header.titles.size.times { l.shift}
|
15
|
+
l.each {|h| col(h)}
|
16
|
+
first=false
|
17
|
+
next
|
18
|
+
else
|
19
|
+
proc_line(l)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module DataGrid
|
2
|
+
require 'data_grid/header'
|
3
|
+
require 'data_grid/style/style'
|
4
|
+
require 'data_grid/basic_grid'
|
5
|
+
require 'data_grid/grid'
|
6
|
+
require 'data_grid/rails_grid'
|
7
|
+
require 'data_grid/csv_grid'
|
8
|
+
require 'data_grid/dynamic_callback'
|
9
|
+
require 'data_grid/static_callback'
|
10
|
+
require 'data_grid/field_format'
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "callback"
|
2
|
+
#Callbacks Din�micos a n�vel de Grid
|
3
|
+
class DataGrid::DynamicCallback < Callback
|
4
|
+
ACCEPT=[:before_row, :after_row, :even_row,
|
5
|
+
:odd_row, :before_column, :after_column, :even_column, :odd_column]
|
6
|
+
|
7
|
+
def initialize(name,options={},&block)
|
8
|
+
raise NameError.new("#{name} no accept in #{self.class}") unless ACCEPT.include? name
|
9
|
+
super(name,options,&block)
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
$LOAD_PATH << File.dirname(__FILE__)+File::SEPARATOR+"../"
|
2
|
+
|
3
|
+
require 'ps_object'
|
4
|
+
#require 'data_grid'
|
5
|
+
require 'ruby_to_ps'
|
6
|
+
#M�dulo para formata��o de dados
|
7
|
+
module DataGrid
|
8
|
+
module FieldFormat
|
9
|
+
extend RubyToPs
|
10
|
+
#Formata um Time/Date em %d/%m/%Y
|
11
|
+
def FieldFormat.eurodate(value)
|
12
|
+
|
13
|
+
string(value.strftime("%d/%m/%Y"))
|
14
|
+
end
|
15
|
+
#Formata o dado retirando os espa�os
|
16
|
+
def FieldFormat.no_space(value)
|
17
|
+
string(value.to_s.gsub(/\s/,''))
|
18
|
+
end
|
19
|
+
#Formata para o dado ou - se '' ou nil
|
20
|
+
def FieldFormat.or_value(value,token='-')
|
21
|
+
new_value=if value.nil? || value == ''
|
22
|
+
token
|
23
|
+
else
|
24
|
+
value
|
25
|
+
end
|
26
|
+
string(new_value)
|
27
|
+
end
|
28
|
+
#Converte em String PS
|
29
|
+
def FieldFormat.string(value)
|
30
|
+
to_string(value)
|
31
|
+
end
|
32
|
+
#Sugar para or_value substituindo X_or_value. Exemplo:
|
33
|
+
# yes_or_value #yes unless nil or ''
|
34
|
+
def FieldFormat.method_missing(name,*args)
|
35
|
+
if name.to_s =~ /_or_value$/
|
36
|
+
s=name.to_s.gsub(/_or_value$/,'')
|
37
|
+
|
38
|
+
FieldFormat.or_value(args.first,s)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
#Prot�tipo de formata��o. Override retornando uma string no m�todo format para heran�as
|
45
|
+
class DataGrid::FieldFormat::Custom
|
46
|
+
|
47
|
+
def initialize(value)
|
48
|
+
@value=value
|
49
|
+
end
|
50
|
+
|
51
|
+
def gs_format
|
52
|
+
DataGrid::FieldFormat.string(self.format)
|
53
|
+
end
|
54
|
+
|
55
|
+
def format
|
56
|
+
@value.to_s
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
@@ -0,0 +1,111 @@
|
|
1
|
+
$LOAD_PATH << File.dirname(__FILE__)+File::SEPARATOR+"../"
|
2
|
+
require "ps_object"
|
3
|
+
require "ruby_to_ps"
|
4
|
+
require "variable"
|
5
|
+
require "units"
|
6
|
+
require "function"
|
7
|
+
require "callback"
|
8
|
+
#require 'data_grid'
|
9
|
+
#Header da Grid
|
10
|
+
class DataGrid::Header < PsObject
|
11
|
+
include RubyToPs
|
12
|
+
|
13
|
+
DEFAULT_OPTIONS={:width => 4, :align => :center, :title_align => nil, :header_width => nil, :format => :string}
|
14
|
+
attr_reader :data_types, :titles, :size
|
15
|
+
#Nova inst�ncia de DataGrid::Header. Op��es padr�o para todas as colunas
|
16
|
+
# :width => 2.5 #Largura da coluna
|
17
|
+
# :align => :left #Alinhamento os dados em rela��o a coluna (:right, :center, :left )
|
18
|
+
# :title_align => :left #Alinhamento do t�tulo
|
19
|
+
# :format => "%0.2f" #Formatador de dados onde o par�metro s�o.
|
20
|
+
# Symbol - Procura o m�todo com o mesmo nome definido no m�dulo DataGrid::FieldFormat::method_name
|
21
|
+
# String - Formata com os padr�es definidos em sprintf
|
22
|
+
# Class - Uma heran�a de DataGrid::FieldFormat::Custom com override no m�todo format.
|
23
|
+
# Proc - Um bloco. No exemplo um texto limitado a 9 caracteres.
|
24
|
+
#�ltimo parametro opcional &block para um instance_eval
|
25
|
+
def initialize(headings=true,options={},&block)
|
26
|
+
@header=PsObject.new
|
27
|
+
@data_types=[]
|
28
|
+
@options=[]
|
29
|
+
@titles=[]
|
30
|
+
@default_options=DEFAULT_OPTIONS.merge(options)
|
31
|
+
@header.set Variable.new(:headings?,headings)
|
32
|
+
@size=0
|
33
|
+
instance_eval(&block) if block
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
def ps
|
38
|
+
|
39
|
+
p,h=format_header
|
40
|
+
@header.set Variable.new(:header_titles,to_array(@titles))
|
41
|
+
@header.set Variable.new(:table_params," [\n #{p}] \n")
|
42
|
+
@header.set Variable.new(:table_header," [\n #{h}] \n")
|
43
|
+
|
44
|
+
|
45
|
+
@header
|
46
|
+
end
|
47
|
+
#Adiciona uma coluna
|
48
|
+
def col(name="", options={})
|
49
|
+
|
50
|
+
opts=@default_options.merge(options)
|
51
|
+
@size+=opts[:width]
|
52
|
+
@data_types << opts[:format]
|
53
|
+
@options << opts
|
54
|
+
@titles << ps_escape(name.to_s)
|
55
|
+
|
56
|
+
end
|
57
|
+
#Merge de op��es defaults e personalizadas
|
58
|
+
def default_options(opts)
|
59
|
+
@default_options.merge!(opts)
|
60
|
+
|
61
|
+
end
|
62
|
+
#Alias col
|
63
|
+
def column(name,options={})
|
64
|
+
col(name,options)
|
65
|
+
end
|
66
|
+
#Alias col
|
67
|
+
def next_column(name,options={})
|
68
|
+
col(name,options)
|
69
|
+
end
|
70
|
+
#Callback antes de criar o header
|
71
|
+
def before_create(&block)
|
72
|
+
@header.set Function.new(:before_header_create, &block )
|
73
|
+
end
|
74
|
+
|
75
|
+
#Callback depois de criar o header
|
76
|
+
def after_create(&block)
|
77
|
+
@header.set Function.new(:after_header_create, &block )
|
78
|
+
end
|
79
|
+
#Callback antes de criar uma coluna header
|
80
|
+
def before_column(options={},&block)
|
81
|
+
@header.set Callback.new(:before_column_header, options,&block)
|
82
|
+
|
83
|
+
end
|
84
|
+
#Callback depois de criar uma coluna header
|
85
|
+
def after_column(options={},&block)
|
86
|
+
@header.set Callback.new(:after_column_header,options,&block)
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
private
|
91
|
+
def format_header
|
92
|
+
p='' #params
|
93
|
+
h='' #params_head
|
94
|
+
o=@options.dup
|
95
|
+
o.each do |v|
|
96
|
+
v[:title_align]||=v[:align]
|
97
|
+
v[:header_width]||=v[:width]
|
98
|
+
p << "[ #{Units::parse(v[:width])} /st_#{v[:align]}]\n "
|
99
|
+
h << "[ #{Units::parse(v[:header_width])} /st_#{v[:title_align]}]\n "
|
100
|
+
end
|
101
|
+
|
102
|
+
return p,h
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|