class Limarka::Trabalho

Esta classe representa o seu trabalho acadêmico. @author Eduardo de Sanana Medeiros Alexandre

Attributes

anexos[RW]
apendices[RW]
configuracao[RW]

Todas as chaves de configuração devem ser string (não utilizar simbolos!) @return [Hash] a configuração desse trabalho.

errata[RW]
referencias[R]
texto[RW]

Public Class Methods

default_anexos_file() click to toggle source
# File lib/limarka/trabalho.rb, line 102
def self.default_anexos_file
  "anexos.md"
end
default_apendices_file() click to toggle source
# File lib/limarka/trabalho.rb, line 105
def self.default_apendices_file
  "apendices.md"
end
default_configuracao_file() click to toggle source
# File lib/limarka/trabalho.rb, line 113
def self.default_configuracao_file
  'configuracao.yaml'
end
default_errata_file() click to toggle source
# File lib/limarka/trabalho.rb, line 99
def self.default_errata_file
  "errata.md"
end
default_referencias_bib_file() click to toggle source
# File lib/limarka/trabalho.rb, line 109
def self.default_referencias_bib_file
  "referencias.bib"
end
default_texto_file() click to toggle source
# File lib/limarka/trabalho.rb, line 96
def self.default_texto_file
  "trabalho-academico.md"
end
formato_padrao() click to toggle source
# File lib/limarka/trabalho.rb, line 208
def self.formato_padrao
  "markdown+raw_tex"
end
new(configuracao: {}, texto: nil, anexos: nil, apendices: nil, referencias_bib: nil, errata: nil) click to toggle source
# File lib/limarka/trabalho.rb, line 14
def initialize(configuracao: {}, texto: nil, anexos: nil, apendices: nil, referencias_bib: nil, errata: nil)
  self.configuracao = configuracao
  self.texto = texto
  self.anexos = anexos
  self.apendices = apendices
  self.referencias_bib = referencias_bib
  self.errata = errata
end
save_yaml(hash, caminho) click to toggle source

Salva o hash no formato yaml no caminho especificado. Adiciona o `n—n` para manter compatível com o leitor pandoc. @param hash que será exportado. @param caminho [String] aonde será salvo o arquivo

# File lib/limarka/trabalho.rb, line 188
def self.save_yaml(hash, caminho)
  File.open(caminho, 'w') do |f|
    f.write YAML.dump(hash)
    f.write "\n---\n"
  end
end

Public Instance Methods

anexos=(a) click to toggle source
# File lib/limarka/trabalho.rb, line 41
def anexos=(a)
  @anexos = a
  if (a) then
    @configuracao.merge!('anexos' => true)
  else
    @configuracao.merge!('anexos' => false)
  end
end
anexos?() click to toggle source

@return o valor de `anexos` na configuração.

# File lib/limarka/trabalho.rb, line 51
def anexos?
  @configuracao['anexos']
end
apendices=(a) click to toggle source
# File lib/limarka/trabalho.rb, line 71
def apendices=(a)
  @apendices = a
  if (a) then
    @configuracao.merge!('apendices' => true)
  else
    @configuracao.merge!('apendices' => false)
  end
end
apendices?() click to toggle source
# File lib/limarka/trabalho.rb, line 80
def apendices?
  @configuracao['apendices']
end
atualiza_de_arquivos(options) click to toggle source

Ler os arquivos e atualiza a configuração, texto, referências, apendices e anexos. @param options opção criada em {Cli}

# File lib/limarka/trabalho.rb, line 119
def atualiza_de_arquivos(options)
  self.configuracao = ler_configuracao(options)
  puts "Configuração lida: #{configuracao}" if options[:verbose]
  # transforma os simbolos em string: http://stackoverflow.com/questions/8379596/how-do-i-convert-a-ruby-hash-so-that-all-of-its-keys-are-symbols?noredirect=1&lq=1
  # @configuracao.inject({}){|h,(k,v)| h[k.intern] = v; h}
  self.texto = ler_texto(options[:rascunho_file])
  self.referencias_bib = ler_referencias(self.configuracao)
  self.apendices = ler_apendices if apendices?
  self.anexos = ler_anexos if anexos?
end
configuracao=(configuracao) click to toggle source

Atualiza a configuração do trabalho. @param configuracao [Hash]

# File lib/limarka/trabalho.rb, line 31
def configuracao=(configuracao)
  @configuracao = configuracao or {}
  siglas = @configuracao['siglas']
  if siglas and siglas.empty? then
    @configuracao['siglas'] = nil
  end
end
errata=(e) click to toggle source

Atualiza errata na configuração

# File lib/limarka/trabalho.rb, line 61
def errata=(e)
  @errata = e
  if (e) then
    @configuracao.merge!('errata' => true)
  else
    @configuracao.merge!('errata' => false)
  end
end
errata?() click to toggle source

@return o valor de `errata` na configuração.

# File lib/limarka/trabalho.rb, line 56
def errata?
  @configuracao['errata']
end
formato() click to toggle source
# File lib/limarka/trabalho.rb, line 212
def formato
  result = Trabalho.formato_padrao
  unless @configuracao["formato"].nil? then
    result << @configuracao["formato"]
  end
  result
end
ler_anexos() click to toggle source
# File lib/limarka/trabalho.rb, line 160
def ler_anexos
  File.open('anexos.md', 'r') {|f| f.read} if anexos?
end
ler_apendices() click to toggle source
# File lib/limarka/trabalho.rb, line 156
def ler_apendices
  File.open('apendices.md', 'r') {|f| f.read} if apendices?
end
ler_configuracao(options) click to toggle source

Ler a configuração. A origem da configuração é determinada pelo valor de `options`. Se contém valor verdadeiro, ler do arquivo `configuracao.yaml`, caso contrário ler de `configuracao.pdf`. @param options [Hash] criado na classe {Cli} @return configuracao @see {Cli}

# File lib/limarka/trabalho.rb, line 135
def ler_configuracao(options)
  if options and options[:configuracao_yaml] then
    raise IOError, "Arquivo configuracao.yaml não foi encontrado, talvez esteja executando dentro de um diretório que não contém um projeto válido?" unless File.exist?('configuracao.yaml')
    File.open('configuracao.yaml', 'r') {|f| YAML.load(f.read)}
  else
    raise IOError, "Arquivo configuracao.pdf não foi encontrado, talvez esteja executando dentro de um diretório que não contém um projeto válido?" unless File.exist?('configuracao.pdf')
    ler_configuracao_pdf 'configuracao.pdf'
  end
end
ler_configuracao_pdf(file) click to toggle source

Ler configuração do arquivo pdf @param file arquivo pdf @return [Hash] configuração exportada a partir da leitura do arquivo pdf @see Pdfconf#exporta

# File lib/limarka/trabalho.rb, line 149
def ler_configuracao_pdf(file)
  raise IOError, 'Arquivo não encontrado: ' + file unless File.exist? (file)
  pdf = PdfForms::Pdf.new file, (PdfForms.new 'pdftk'), utf8_fields: true
  pdfconf = Limarka::Pdfconf.new(pdf: pdf)
  pdfconf.exporta
end
ler_referencias(configuracao) click to toggle source

Ler referências do arquivo de referências. @return [String] conteúdo do arquivo de referências

# File lib/limarka/trabalho.rb, line 175
def ler_referencias(configuracao)
  arquivo_de_referencias = configuracao['referencias_caminho']
  if File.exist?(arquivo_de_referencias)
    return File.open(arquivo_de_referencias, 'r') {|f| f.read}
  else
    return ""
  end
end
ler_texto(rascunho_file) click to toggle source
# File lib/limarka/trabalho.rb, line 164
def ler_texto(rascunho_file)
  # Ficou estranho esse código, merece um refactory.
  if (rascunho_file) then
    File.open(rascunho_file, 'r') {|f| f.read}
  else
    File.open('trabalho-academico.md', 'r') {|f| f.read}
  end
end
referencias_bib=(ref) click to toggle source
# File lib/limarka/trabalho.rb, line 92
def referencias_bib=(ref)
  @referencias = ref
end
referencias_bib?() click to toggle source
# File lib/limarka/trabalho.rb, line 88
def referencias_bib?
  @referencias
end
save(dir) click to toggle source

Salva os conteúdos do trabalho em arquivos no diretórios especificado.

# File lib/limarka/trabalho.rb, line 196
def save(dir)
  Dir.chdir(dir) do
    File.open(Trabalho.default_texto_file, 'w'){|f| f.write texto} if texto
    File.open(configuracao['referencias_caminho'], 'w'){|f| f.write referencias} if referencias_bib?
    File.open(Trabalho.default_anexos_file, 'w'){|f| f.write anexos} if anexos?
    File.open(Trabalho.default_apendices_file, 'w'){|f| f.write apendices} if apendices?
    File.open(Trabalho.default_errata_file, 'w'){|f| f.write errata} if errata?
    Limarka::Trabalho.save_yaml(configuracao, Trabalho.default_configuracao_file)
  end

end