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