Class: Limarka::Trabalho
- Inherits:
-
Object
- Object
- Limarka::Trabalho
- Defined in:
- lib/limarka/trabalho.rb
Overview
Esta classe representa o seu trabalho acadêmico.
Instance Attribute Summary collapse
-
#anexos ⇒ Object
Returns the value of attribute anexos.
-
#apendices ⇒ Object
Returns the value of attribute apendices.
-
#configuracao ⇒ Hash
Todas as chaves de configuração devem ser string (não utilizar simbolos!).
-
#errata ⇒ Object
Returns the value of attribute errata.
-
#referencias ⇒ Object
readonly
Returns the value of attribute referencias.
-
#texto ⇒ Object
Returns the value of attribute texto.
Class Method Summary collapse
- .default_anexos_file ⇒ Object
- .default_apendices_file ⇒ Object
- .default_configuracao_file ⇒ Object
- .default_errata_file ⇒ Object
- .default_referencias_bib_file ⇒ Object
- .default_texto_file ⇒ Object
- .formato_padrao ⇒ Object
-
.save_yaml(hash, caminho) ⇒ Object
Salva o hash no formato yaml no caminho especificado.
Instance Method Summary collapse
-
#anexos? ⇒ Boolean
O valor de ‘anexos` na configuração.
- #apendices? ⇒ Boolean
-
#atualiza_de_arquivos(options) ⇒ Object
Ler os arquivos e atualiza a configuração, texto, referências, apendices e anexos.
-
#errata? ⇒ Boolean
O valor de ‘errata` na configuração.
- #formato ⇒ Object
-
#initialize(configuracao: {}, texto: nil, anexos: nil, apendices: nil, referencias_bib: nil, errata: nil) ⇒ Trabalho
constructor
A new instance of Trabalho.
- #ler_anexos ⇒ Object
- #ler_apendices ⇒ Object
-
#ler_configuracao(options) ⇒ Object
Ler a configuração.
-
#ler_configuracao_pdf(file) ⇒ Hash
Ler configuração do arquivo pdf.
-
#ler_referencias(configuracao) ⇒ String
Ler referências do arquivo de referências.
- #ler_texto(rascunho_file) ⇒ Object
- #referencias_bib=(ref) ⇒ Object
- #referencias_bib? ⇒ Boolean
-
#save(dir) ⇒ Object
Salva os conteúdos do trabalho em arquivos no diretórios especificado.
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
#anexos ⇒ Object
Returns the value of attribute anexos.
11 12 13 |
# File 'lib/limarka/trabalho.rb', line 11 def anexos @anexos end |
#apendices ⇒ Object
Returns the value of attribute apendices.
11 12 13 |
# File 'lib/limarka/trabalho.rb', line 11 def apendices @apendices end |
#configuracao ⇒ Hash
Todas as chaves de configuração devem ser string (não utilizar simbolos!)
10 11 12 |
# File 'lib/limarka/trabalho.rb', line 10 def configuracao @configuracao end |
#errata ⇒ Object
Returns the value of attribute errata.
11 12 13 |
# File 'lib/limarka/trabalho.rb', line 11 def errata @errata end |
#referencias ⇒ Object (readonly)
Returns the value of attribute referencias.
12 13 14 |
# File 'lib/limarka/trabalho.rb', line 12 def referencias @referencias end |
#texto ⇒ Object
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_file ⇒ Object
102 103 104 |
# File 'lib/limarka/trabalho.rb', line 102 def self.default_anexos_file "anexos.md" end |
.default_apendices_file ⇒ Object
105 106 107 |
# File 'lib/limarka/trabalho.rb', line 105 def self.default_apendices_file "apendices.md" end |
.default_configuracao_file ⇒ Object
113 114 115 |
# File 'lib/limarka/trabalho.rb', line 113 def self.default_configuracao_file 'configuracao.yaml' end |
.default_errata_file ⇒ Object
99 100 101 |
# File 'lib/limarka/trabalho.rb', line 99 def self.default_errata_file "errata.md" end |
.default_referencias_bib_file ⇒ Object
109 110 111 |
# File 'lib/limarka/trabalho.rb', line 109 def self.default_referencias_bib_file "referencias.bib" end |
.default_texto_file ⇒ Object
96 97 98 |
# File 'lib/limarka/trabalho.rb', line 96 def self.default_texto_file "trabalho-academico.md" end |
.formato_padrao ⇒ Object
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.
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.
51 52 53 |
# File 'lib/limarka/trabalho.rb', line 51 def anexos? @configuracao['anexos'] end |
#apendices? ⇒ 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.
119 120 121 122 123 124 125 126 127 128 |
# File 'lib/limarka/trabalho.rb', line 119 def atualiza_de_arquivos() self.configuracao = ler_configuracao() puts "Configuração lida: #{configuracao}" if [: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([: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.
56 57 58 |
# File 'lib/limarka/trabalho.rb', line 56 def errata? @configuracao['errata'] end |
#formato ⇒ Object
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_anexos ⇒ Object
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_apendices ⇒ Object
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`.
135 136 137 138 139 140 141 142 143 |
# File 'lib/limarka/trabalho.rb', line 135 def ler_configuracao() if and [: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
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.
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
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 |