Class: Limarka::Trabalho

Inherits:
Object
  • Object
show all
Defined in:
lib/limarka/trabalho.rb

Overview

Esta classe representa o seu trabalho acadêmico.

Author:

  • Eduardo de Sanana Medeiros Alexandre

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(configuracao: {}, texto: nil, anexos: nil, apendices: nil, referencias_bib: nil, errata: nil) ⇒ Trabalho

Returns a new instance of Trabalho.



14
15
16
17
18
19
20
21
# 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

Instance Attribute Details

#anexosObject

Returns the value of attribute anexos.



11
12
13
# File 'lib/limarka/trabalho.rb', line 11

def anexos
  @anexos
end

#apendicesObject

Returns the value of attribute apendices.



11
12
13
# File 'lib/limarka/trabalho.rb', line 11

def apendices
  @apendices
end

#configuracaoHash

Todas as chaves de configuração devem ser string (não utilizar simbolos!)

Returns:

  • (Hash)

    a configuração desse trabalho.



10
11
12
# File 'lib/limarka/trabalho.rb', line 10

def configuracao
  @configuracao
end

#errataObject

Returns the value of attribute errata.



11
12
13
# File 'lib/limarka/trabalho.rb', line 11

def errata
  @errata
end

#referenciasObject (readonly)

Returns the value of attribute referencias.



12
13
14
# File 'lib/limarka/trabalho.rb', line 12

def referencias
  @referencias
end

#textoObject

Returns the value of attribute texto.



11
12
13
# File 'lib/limarka/trabalho.rb', line 11

def texto
  @texto
end

Class Method Details

.default_anexos_fileObject



102
103
104
# File 'lib/limarka/trabalho.rb', line 102

def self.default_anexos_file
  "anexos.md"
end

.default_apendices_fileObject



105
106
107
# File 'lib/limarka/trabalho.rb', line 105

def self.default_apendices_file
  "apendices.md"
end

.default_configuracao_fileObject



113
114
115
# File 'lib/limarka/trabalho.rb', line 113

def self.default_configuracao_file
  'configuracao.yaml'
end

.default_errata_fileObject



99
100
101
# File 'lib/limarka/trabalho.rb', line 99

def self.default_errata_file
  "errata.md"
end

.default_referencias_bib_fileObject



109
110
111
# File 'lib/limarka/trabalho.rb', line 109

def self.default_referencias_bib_file
  "referencias.bib"
end

.default_texto_fileObject



96
97
98
# File 'lib/limarka/trabalho.rb', line 96

def self.default_texto_file
  "trabalho-academico.md"
end

.formato_padraoObject



208
209
210
# File 'lib/limarka/trabalho.rb', line 208

def self.formato_padrao
  "markdown+raw_tex"
end

.save_yaml(hash, caminho) ⇒ Object

Salva o hash no formato yaml no caminho especificado. Adiciona o ‘n—n` para manter compatível com o leitor pandoc.

Parameters:

  • hash

    que será exportado.

  • caminho (String)

    aonde será salvo o arquivo



188
189
190
191
192
193
# 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

Instance Method Details

#anexos?Boolean

Returns o valor de ‘anexos` na configuração.

Returns:

  • (Boolean)

    o valor de ‘anexos` na configuração.



51
52
53
# File 'lib/limarka/trabalho.rb', line 51

def anexos?
  @configuracao['anexos']
end

#apendices?Boolean

Returns:

  • (Boolean)


80
81
82
# File 'lib/limarka/trabalho.rb', line 80

def apendices?
  @configuracao['apendices']
end

#atualiza_de_arquivos(options) ⇒ Object

Ler os arquivos e atualiza a configuração, texto, referências, apendices e anexos.

Parameters:

  • options

    opção criada em Cli



119
120
121
122
123
124
125
126
127
128
# 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

#errata?Boolean

Returns o valor de ‘errata` na configuração.

Returns:

  • (Boolean)

    o valor de ‘errata` na configuração.



56
57
58
# File 'lib/limarka/trabalho.rb', line 56

def errata?
  @configuracao['errata']
end

#formatoObject



212
213
214
215
216
217
218
# 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_anexosObject



160
161
162
# File 'lib/limarka/trabalho.rb', line 160

def ler_anexos
  File.open('anexos.md', 'r') {|f| f.read} if anexos?
end

#ler_apendicesObject



156
157
158
# File 'lib/limarka/trabalho.rb', line 156

def ler_apendices
  File.open('apendices.md', 'r') {|f| f.read} if apendices?
end

#ler_configuracao(options) ⇒ Object

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`.

Parameters:

  • options (Hash)

    criado na classe Cli

Returns:

  • configuracao

See Also:

  • {Cli}


135
136
137
138
139
140
141
142
143
# 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) ⇒ Hash

Ler configuração do arquivo pdf

Parameters:

  • file

    arquivo pdf

Returns:

  • (Hash)

    configuração exportada a partir da leitura do arquivo pdf

Raises:

  • (IOError)

See Also:



149
150
151
152
153
154
# 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) ⇒ String

Ler referências do arquivo de referências.

Returns:

  • (String)

    conteúdo do arquivo de referências



175
176
177
178
179
180
181
182
# 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) ⇒ Object



164
165
166
167
168
169
170
171
# 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) ⇒ Object



92
93
94
# File 'lib/limarka/trabalho.rb', line 92

def referencias_bib=(ref)
  @referencias = ref
end

#referencias_bib?Boolean

Returns:

  • (Boolean)


88
89
90
# File 'lib/limarka/trabalho.rb', line 88

def referencias_bib?
  @referencias
end

#save(dir) ⇒ Object

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



196
197
198
199
200
201
202
203
204
205
206
# 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