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.
Files changed (95) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +101 -0
  3. data/README.txt +3 -0
  4. data/Rakefile +93 -0
  5. data/lib/rghost.rb +3 -0
  6. data/lib/rghost/arc.rb +39 -0
  7. data/lib/rghost/barcode.rb +40 -0
  8. data/lib/rghost/callback.rb +55 -0
  9. data/lib/rghost/color.rb +118 -0
  10. data/lib/rghost/constants.rb +616 -0
  11. data/lib/rghost/convert.rb +24 -0
  12. data/lib/rghost/cursor.rb +82 -0
  13. data/lib/rghost/data_grid/basic_grid.rb +136 -0
  14. data/lib/rghost/data_grid/csv_grid.rb +27 -0
  15. data/lib/rghost/data_grid/data_grid.rb +14 -0
  16. data/lib/rghost/data_grid/dynamic_callback.rb +12 -0
  17. data/lib/rghost/data_grid/field_format.rb +60 -0
  18. data/lib/rghost/data_grid/grid.rb +18 -0
  19. data/lib/rghost/data_grid/header.rb +111 -0
  20. data/lib/rghost/data_grid/rails_grid.rb +37 -0
  21. data/lib/rghost/data_grid/static_callback.rb +13 -0
  22. data/lib/rghost/data_grid/style/border_lines.rb +47 -0
  23. data/lib/rghost/data_grid/style/bottom_lines.rb +30 -0
  24. data/lib/rghost/data_grid/style/old_forms.rb +30 -0
  25. data/lib/rghost/data_grid/style/style.rb +8 -0
  26. data/lib/rghost/document.rb +380 -0
  27. data/lib/rghost/dsc_entry.rb +20 -0
  28. data/lib/rghost/dynamic_document_callback.rb +27 -0
  29. data/lib/rghost/eps.rb +22 -0
  30. data/lib/rghost/font.rb +52 -0
  31. data/lib/rghost/function.rb +36 -0
  32. data/lib/rghost/gif.rb +28 -0
  33. data/lib/rghost/graphic.rb +28 -0
  34. data/lib/rghost/gs_alone.rb +17 -0
  35. data/lib/rghost/helpers.rb +13 -0
  36. data/lib/rghost/horizontal_line.rb +29 -0
  37. data/lib/rghost/image.rb +26 -0
  38. data/lib/rghost/jpeg.rb +26 -0
  39. data/lib/rghost/line.rb +40 -0
  40. data/lib/rghost/line_width.rb +17 -0
  41. data/lib/rghost/load.rb +37 -0
  42. data/lib/rghost/newpath.rb +20 -0
  43. data/lib/rghost/paper.rb +88 -0
  44. data/lib/rghost/point.rb +22 -0
  45. data/lib/rghost/point_with_command.rb +17 -0
  46. data/lib/rghost/ps/basic.ps +14 -0
  47. data/lib/rghost/ps/begin_document.ps +7 -0
  48. data/lib/rghost/ps/callbacks.ps +146 -0
  49. data/lib/rghost/ps/code128.font +344 -0
  50. data/lib/rghost/ps/code39.font +195 -0
  51. data/lib/rghost/ps/cursor.ps +41 -0
  52. data/lib/rghost/ps/datagrid.ps +52 -0
  53. data/lib/rghost/ps/ean.font +150 -0
  54. data/lib/rghost/ps/eps.ps +42 -0
  55. data/lib/rghost/ps/font.ps +31 -0
  56. data/lib/rghost/ps/functions.ps +646 -0
  57. data/lib/rghost/ps/gif.ps +150 -0
  58. data/lib/rghost/ps/horizontal_line.ps +3 -0
  59. data/lib/rghost/ps/i25.font +103 -0
  60. data/lib/rghost/ps/jpeg.ps +122 -0
  61. data/lib/rghost/ps/paper.ps +8 -0
  62. data/lib/rghost/ps/rectangle.ps +5 -0
  63. data/lib/rghost/ps/row.ps +4 -0
  64. data/lib/rghost/ps/show.ps +20 -0
  65. data/lib/rghost/ps/table_callbacks.ps +96 -0
  66. data/lib/rghost/ps/textarea.ps +11 -0
  67. data/lib/rghost/ps/type.ps +1 -0
  68. data/lib/rghost/ps/unit.ps +3 -0
  69. data/lib/rghost/ps/vertical_line.ps +14 -0
  70. data/lib/rghost/ps_object.rb +51 -0
  71. data/lib/rghost/rectangle.rb +39 -0
  72. data/lib/rghost/rgengine.so +0 -0
  73. data/lib/rghost/rghost.rb +3 -0
  74. data/lib/rghost/ruby_ghost_config.rb +25 -0
  75. data/lib/rghost/ruby_ghost_engine.rb +175 -0
  76. data/lib/rghost/ruby_to_ps.rb +92 -0
  77. data/lib/rghost/scale.rb +14 -0
  78. data/lib/rghost/show.rb +31 -0
  79. data/lib/rghost/static_document_callback.rb +22 -0
  80. data/lib/rghost/text_in.rb +29 -0
  81. data/lib/rghost/textarea.rb +115 -0
  82. data/lib/rghost/units.rb +81 -0
  83. data/lib/rghost/variable.rb +12 -0
  84. data/lib/rghost/version.rb +9 -0
  85. data/lib/rghost/vertical_line.rb +29 -0
  86. data/scripts/txt2html +67 -0
  87. data/setup.rb +1585 -0
  88. data/test/test_helper.rb +2 -0
  89. data/test/test_rghost.rb +11 -0
  90. data/website/index.html +11 -0
  91. data/website/index.txt +30 -0
  92. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  93. data/website/stylesheets/screen.css +129 -0
  94. data/website/template.rhtml +48 -0
  95. 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,18 @@
1
+ require 'ps_object'
2
+ #Grid concreta para Matriz de dados
3
+ class DataGrid::Grid < DataGrid::BasicGrid
4
+ #Recenbe um Array de Arrays(matriz)
5
+ def data(_data)
6
+ _data.each{|d| proc_line(d) }
7
+
8
+ end
9
+
10
+ end
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
@@ -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
+