class Limarka::Pdfconf
Essa classe é responsável por ler os valores salvos em um formulário PDF e gerar um hash compatível com configuração de um {Trabalho}. @see Trabalho#configuracao
Attributes
pdf[R]
@return [PdfForms::Pdf]
Public Class Methods
new(pdf: nil)
click to toggle source
@param pdf [PdfForms::Pdf]
# File lib/limarka/pdfconf.rb, line 20 def initialize(pdf: nil) @pdf = pdf end
Public Instance Methods
exporta(valida=true)
click to toggle source
Exporta um hash que será utilizado como configuração. @return [Hash] que é utilizado como configuração @see {Trabalho#configuracao}
# File lib/limarka/pdfconf.rb, line 39 def exporta(valida=true) h = {} h.merge! caixas_de_texto h.merge! nivel_educacao h.merge! ficha_catalografica h.merge! folha_de_aprovacao h.merge! projeto h.merge! apendices h.merge! anexos h.merge! errata h.merge! referencias h.merge! lista_ilustracoes h.merge! lista_quadros h.merge! lista_tabelas h.merge! lista_siglas # TODO: converter para chaves? valida_campos(h) if valida h end
ler_campo(campo)
click to toggle source
Ler valor do campo. Converte o final de linha para utilizar `universal_newline`.
# File lib/limarka/pdfconf.rb, line 30 def ler_campo(campo) value = pdf.field(campo).value value = value.encode(:universal_newline => true) if value value end
update(field, value)
click to toggle source
Atualiza um campo do formulário. Útil para execução de testes.
# File lib/limarka/pdfconf.rb, line 25 def update(field, value) pdf.field(field).instance_variable_set(:@value, value) end
Private Instance Methods
anexos()
click to toggle source
# File lib/limarka/pdfconf.rb, line 72 def anexos {'anexos' => !desativado?('anexos_combo')} end
apendices()
click to toggle source
# File lib/limarka/pdfconf.rb, line 69 def apendices {'apendices' => !desativado?('apendices_combo')} end
atualiza_palavras_chave(h)
click to toggle source
Substitui ',' e ';' por '.'
# File lib/limarka/pdfconf.rb, line 187 def atualiza_palavras_chave(h) ['palavras_chave', 'palabras_clave', 'keywords', 'mots_cles'].each do |p| if(h[p]) h[p] = h[p].gsub(/[;,]/, '.') end end end
caixas_de_texto()
click to toggle source
# File lib/limarka/pdfconf.rb, line 195 def caixas_de_texto h = {} pdf.fields.each do |f| if (f.type == "Text") then h[f.name] = ler_campo(f.name) end end atualiza_palavras_chave(h) h end
desativado?(campo)
click to toggle source
# File lib/limarka/pdfconf.rb, line 182 def desativado?(campo) ler_campo(campo).include?('Desativad') # a(o) end
errata()
click to toggle source
# File lib/limarka/pdfconf.rb, line 76 def errata {'errata' => !desativado?('errata_combo')} end
ficha_catalografica()
click to toggle source
# File lib/limarka/pdfconf.rb, line 135 def ficha_catalografica campo = 'ficha_catalografica_combo' value = ler_campo(campo) if value.include?('Sem ficha') then {'incluir_ficha_catalografica' => false} elsif value.include?('Incluir ficha') then {'incluir_ficha_catalografica' => true} else raise ArgumentError, "Caixa #{campo} com valor inválido" end end
folha_de_aprovacao()
click to toggle source
# File lib/limarka/pdfconf.rb, line 166 def folha_de_aprovacao campo = 'folha_de_aprovacao_combo' value = ler_campo(campo) if value.include?('Não gerar') then {'folha_de_aprovacao' => false} elsif value.include?('Gerar folha') then {'folha_de_aprovacao' => true, 'aprovacao_mes' => ler_campo('aprovacao_mes')} elsif value.include?('escaneada') then {'incluir_folha_de_aprovacao' => true} else raise ArgumentError, "Caixa #{campo} com valor inválido" end end
lista_ilustracoes()
click to toggle source
# File lib/limarka/pdfconf.rb, line 85 def lista_ilustracoes campo = 'lista_ilustracoes_combo' {'lista_ilustracoes' => ler_campo(campo).include?('Gerar')} end
lista_quadros()
click to toggle source
# File lib/limarka/pdfconf.rb, line 80 def lista_quadros campo = 'lista_quadros_combo' {'lista_quadros' => ler_campo(campo).include?('Gerar')} end
lista_siglas()
click to toggle source
# File lib/limarka/pdfconf.rb, line 95 def lista_siglas h = {} ['siglas','simbolos'].each do |campo| str = ler_campo(campo) if (str) then sa = [] # sa: s-array str.each_line do |linha| s,d = linha.split(":") sa << { 's' => s.strip, 'd' => d ? d.strip : ""} if s end h[campo] = sa.empty? ? nil : sa end end h end
lista_tabelas()
click to toggle source
# File lib/limarka/pdfconf.rb, line 90 def lista_tabelas campo = 'lista_tabelas_combo' {'lista_tabelas' => ler_campo(campo).include?('Gerar')} end
nivel_educacao()
click to toggle source
# File lib/limarka/pdfconf.rb, line 149 def nivel_educacao campo = 'nivel_educacao_combo' value = ler_campo(campo) if value.include?('Graduação') then {'graduacao' => true, 'especializacao' => false, 'mestrado' => false, 'doutorado' => false, 'tipo_do_trabalho'=>'Monografia'} elsif value.include?('Especialização') then {'graduacao' => false, 'especializacao' => true, 'mestrado' => false, 'doutorado' => false, 'tipo_do_trabalho'=>'Trabalho de final de curso'} elsif value.include?('Mestrado') then {'graduacao' => false, 'especializacao' => false, 'mestrado' => true, 'doutorado' => false, 'tipo_do_trabalho'=>'Dissertação'} elsif value.include?('Doutorado') then {'graduacao' => false, 'especializacao' => false, 'mestrado' => false, 'doutorado' => true, 'tipo_do_trabalho'=>'Tese'} else raise ArgumentError, "Caixa #{campo} com valor inválido" end end
projeto()
click to toggle source
# File lib/limarka/pdfconf.rb, line 122 def projeto campo = 'projeto_combo' value = ler_campo(campo) if value.include?('Projeto') then {'projeto' => true} elsif value.include?('final') then {'projeto' => false} else raise ArgumentError, "Caixa #{campo} com valor inválido" end end
referencias()
click to toggle source
# File lib/limarka/pdfconf.rb, line 111 def referencias value = ler_campo('referencias_sistema_combo') if value.include?('Numérica') then {'referencias_sistema' => 'num'} elsif value.include?('Alfabética') then {'referencias_sistema' => 'alf'} else raise ArgumentError, "Caixa referencias_sistema_combo com valor inválido" end end
valida_campos(h)
click to toggle source
# File lib/limarka/pdfconf.rb, line 63 def valida_campos(h) arquivo_de_referencias = h['referencias_caminho'] raise ArgumentError, "Arquivo de referências configurado não foi encontrado: #{arquivo_de_referencias}" unless File.exist?(arquivo_de_referencias) end