limarka 0.6.4 → 0.6.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/docs/paper/codemeta.json +1 -1
- data/lib/limarka/cli.rb +6 -0
- data/lib/limarka/configuracao.rb +4 -0
- data/lib/limarka/conversor.rb +33 -21
- data/lib/limarka/cronograma.rb +2 -0
- data/lib/limarka/pdfconf.rb +11 -1
- data/lib/limarka/ref.rb +4 -0
- data/lib/limarka/trabalho.rb +32 -2
- data/lib/limarka/version.rb +1 -1
- metadata +1 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69320eab968ea33365d7a9a347f289130571b284
|
4
|
+
data.tar.gz: 9a10d6489984755eaf4ae8349a722e67ad9a6b36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afae1b22f9f82fa1c01767f62bd08c13669f208e2e00002d252688795c265e6c90c4caeb13864681d72bb3e41ad23c376a4923a498e401c899d9bc8c94dfe14b
|
7
|
+
data.tar.gz: 3f06293cf304e34e6256c10292000027f2b9731026c82fc3d3518469d96a04d09b97900de0339ea5933bdc85e859cb8e76fec475daee1ed0ffbbb5df6b185f95
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v0.6.5](https://github.com/abntex/limarka/tree/v0.6.5) (2017-01-16)
|
4
|
+
[Full Changelog](https://github.com/abntex/limarka/compare/v0.6.4...v0.6.5)
|
5
|
+
|
6
|
+
**Melhorias implementadas:**
|
7
|
+
|
8
|
+
- Documentação da API [\#121](https://github.com/abntex/limarka/issues/121)
|
9
|
+
|
3
10
|
## [v0.6.4](https://github.com/abntex/limarka/tree/v0.6.4) (2017-01-16)
|
4
11
|
[Full Changelog](https://github.com/abntex/limarka/compare/v0.6.3...v0.6.4)
|
5
12
|
|
data/docs/paper/codemeta.json
CHANGED
data/lib/limarka/cli.rb
CHANGED
@@ -13,6 +13,12 @@ require 'terminal-table'
|
|
13
13
|
|
14
14
|
module Limarka
|
15
15
|
|
16
|
+
# Essa classe é responsável por interpretar e executar os comandos de linha
|
17
|
+
# da ferramenta. Para compreender sua utilização recomendo consultar a
|
18
|
+
# documentação do [thor](http://whatisthor.com).
|
19
|
+
#
|
20
|
+
# @author Eduardo de Santana Medeiros Alexandre
|
21
|
+
#
|
16
22
|
class Cli < Thor
|
17
23
|
include Thor::Actions
|
18
24
|
|
data/lib/limarka/configuracao.rb
CHANGED
@@ -8,6 +8,10 @@ require 'open3'
|
|
8
8
|
|
9
9
|
module Limarka
|
10
10
|
|
11
|
+
# Representa os comandos de linha sobre configuracao.
|
12
|
+
#
|
13
|
+
# Invoque `limarka help configuracao` para verificar os comandos.
|
14
|
+
# @see Cli
|
11
15
|
class Configuracao < Thor
|
12
16
|
|
13
17
|
method_option :output_dir, :aliases => '-o', :desc => 'Diretório onde será salvo a exportação', :default => '.'
|
data/lib/limarka/conversor.rb
CHANGED
@@ -10,9 +10,13 @@ require 'bibtex'
|
|
10
10
|
|
11
11
|
module Limarka
|
12
12
|
|
13
|
+
# Essa class é responsável por ser a abstração de converter o arquivo
|
14
|
+
# em Markdown para Latex.
|
13
15
|
class Conversor
|
14
|
-
# trabalho
|
16
|
+
# o trabalho
|
15
17
|
attr_accessor :t
|
18
|
+
# opções de execução
|
19
|
+
# @see Cli
|
16
20
|
attr_accessor :options
|
17
21
|
attr_accessor :pretextual_tex
|
18
22
|
attr_accessor :postextual_tex
|
@@ -27,7 +31,7 @@ module Limarka
|
|
27
31
|
end
|
28
32
|
|
29
33
|
|
30
|
-
##
|
34
|
+
## Converte o trabalho para Latex
|
31
35
|
def convert()
|
32
36
|
FileUtils.mkdir_p(options[:output_dir])
|
33
37
|
|
@@ -73,6 +77,8 @@ module Limarka
|
|
73
77
|
|
74
78
|
PRETEXTUAL = "templates/pretextual.tex"
|
75
79
|
|
80
|
+
# Escreve no arquivo o conteúdo gerado referente ao pretextual do documento.
|
81
|
+
# @param tempfile arquivo onde será escrito
|
76
82
|
def pretextual(tempfile)
|
77
83
|
s = StringIO.new
|
78
84
|
necessita_de_arquivo_de_texto = ["errata"]
|
@@ -100,6 +106,8 @@ module Limarka
|
|
100
106
|
end
|
101
107
|
|
102
108
|
POSTEXTUAL = "templates/postextual.tex"
|
109
|
+
# Escreve no arquivo o conteúdo gerado referente ao pós-textual do documento.
|
110
|
+
# @param tempfile arquivo onde será escrito
|
103
111
|
def postextual(tempfile)
|
104
112
|
# Referências (obrigatório)
|
105
113
|
# Glossário (opcional)
|
@@ -137,25 +145,6 @@ module Limarka
|
|
137
145
|
b.save_to referencias_bib_file
|
138
146
|
end
|
139
147
|
|
140
|
-
def secao(template, condicao_para_conteudo, conteudo_externo)
|
141
|
-
s = StringIO.new
|
142
|
-
|
143
|
-
Open3.popen3("pandoc -f markdown \"--data-dir=#{options[:templates_dir]}\" --template=#{template} --chapter -t latex") {|stdin, stdout, stderr, wait_thr|
|
144
|
-
stdin.write(hash_to_yaml(t.configuracao))
|
145
|
-
stdin.write("\n")
|
146
|
-
if (condicao_para_conteudo) then
|
147
|
-
stdin.write(conteudo_externo)
|
148
|
-
stdin.write("\n")
|
149
|
-
end
|
150
|
-
stdin.close
|
151
|
-
s << stdout.read
|
152
|
-
exit_status = wait_thr.value # Process::Status object returned.
|
153
|
-
if(exit_status!=0) then puts ("Erro: " + stderr.read).red end
|
154
|
-
}
|
155
|
-
s.string
|
156
|
-
end
|
157
|
-
|
158
|
-
|
159
148
|
def secao_referencias
|
160
149
|
secao("postextual1-referencias", false, t.referencias)
|
161
150
|
end
|
@@ -168,9 +157,11 @@ module Limarka
|
|
168
157
|
secao("postextual4-anexos", t.anexos?, t.anexos)
|
169
158
|
end
|
170
159
|
|
160
|
+
# @note Ainda não implementado
|
171
161
|
def secao_glossario
|
172
162
|
end
|
173
163
|
|
164
|
+
# @note Ainda não implementado
|
174
165
|
def secao_indice
|
175
166
|
end
|
176
167
|
|
@@ -236,6 +227,27 @@ module Limarka
|
|
236
227
|
|
237
228
|
end
|
238
229
|
|
230
|
+
private
|
231
|
+
|
232
|
+
# Utilizado para gerar seções específicas do documento
|
233
|
+
def secao(template, condicao_para_conteudo, conteudo_externo)
|
234
|
+
s = StringIO.new
|
235
|
+
|
236
|
+
Open3.popen3("pandoc -f markdown \"--data-dir=#{options[:templates_dir]}\" --template=#{template} --chapter -t latex") {|stdin, stdout, stderr, wait_thr|
|
237
|
+
stdin.write(hash_to_yaml(t.configuracao))
|
238
|
+
stdin.write("\n")
|
239
|
+
if (condicao_para_conteudo) then
|
240
|
+
stdin.write(conteudo_externo)
|
241
|
+
stdin.write("\n")
|
242
|
+
end
|
243
|
+
stdin.close
|
244
|
+
s << stdout.read
|
245
|
+
exit_status = wait_thr.value # Process::Status object returned.
|
246
|
+
if(exit_status!=0) then puts ("Erro: " + stderr.read).red end
|
247
|
+
}
|
248
|
+
s.string
|
249
|
+
end
|
250
|
+
|
239
251
|
end
|
240
252
|
end
|
241
253
|
|
data/lib/limarka/cronograma.rb
CHANGED
data/lib/limarka/pdfconf.rb
CHANGED
@@ -7,18 +7,28 @@ require 'open3'
|
|
7
7
|
|
8
8
|
module Limarka
|
9
9
|
|
10
|
+
# Essa classe é responsável por ler os valores salvos em um formulário PDF
|
11
|
+
# e gerar um hash compatível com configuração de um {Trabalho}.
|
12
|
+
# @see Trabalho#configuracao
|
10
13
|
class Pdfconf
|
11
14
|
|
15
|
+
|
16
|
+
# @return [PdfForms::Pdf]
|
12
17
|
attr_reader :pdf
|
13
|
-
|
18
|
+
|
19
|
+
# @param pdf [PdfForms::Pdf]
|
14
20
|
def initialize(pdf: nil)
|
15
21
|
@pdf = pdf
|
16
22
|
end
|
17
23
|
|
24
|
+
# Atualiza um campo do formulário. Útil para execução de testes.
|
18
25
|
def update(field, value)
|
19
26
|
pdf.field(field).instance_variable_set(:@value, value)
|
20
27
|
end
|
21
28
|
|
29
|
+
# Exporta um hash que será utilizado como configuração.
|
30
|
+
# @return [Hash] que é utilizado como configuração
|
31
|
+
# @see {Trabalho#configuracao}
|
22
32
|
def exporta(valida=true)
|
23
33
|
h = {}
|
24
34
|
h.merge! caixas_de_texto
|
data/lib/limarka/ref.rb
CHANGED
@@ -6,6 +6,10 @@ require 'clipboard'
|
|
6
6
|
|
7
7
|
module Limarka
|
8
8
|
|
9
|
+
# Essa classe contem os comandos de linhas referente aos comandos de `ref`.
|
10
|
+
# Execute `limarka help ref` para conhecer os comandos.
|
11
|
+
# Ela é incluída em {Cli}, utiliza a mesma sintaxe daquela classe.
|
12
|
+
# @see Cli
|
9
13
|
class Ref < Thor
|
10
14
|
include Thor::Actions
|
11
15
|
|
data/lib/limarka/trabalho.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
module Limarka
|
4
|
+
|
5
|
+
# Esta classe representa o seu trabalho acadêmico.
|
6
|
+
# @author Eduardo de Sanana Medeiros Alexandre
|
4
7
|
class Trabalho
|
5
|
-
# Todas as chaves de configuração devem ser string (
|
8
|
+
# Todas as chaves de configuração devem ser string (não utilizar simbolos!)
|
9
|
+
# @return [Hash] a configuração desse trabalho.
|
6
10
|
attr_accessor :configuracao
|
7
11
|
attr_accessor :texto, :anexos, :apendices, :errata
|
8
12
|
attr_reader :referencias
|
@@ -21,6 +25,9 @@ module Limarka
|
|
21
25
|
# @configuracao = c.inject({}){|h,(k,v)| h[k.to_s] = v; h} # convert to strings
|
22
26
|
# end
|
23
27
|
|
28
|
+
|
29
|
+
# Atualiza a configuração do trabalho.
|
30
|
+
# @param configuracao [Hash]
|
24
31
|
def configuracao=(configuracao)
|
25
32
|
@configuracao = configuracao or {}
|
26
33
|
siglas = @configuracao['siglas']
|
@@ -30,6 +37,7 @@ module Limarka
|
|
30
37
|
end
|
31
38
|
|
32
39
|
|
40
|
+
|
33
41
|
def anexos=(a)
|
34
42
|
@anexos = a
|
35
43
|
if (a) then
|
@@ -39,14 +47,17 @@ module Limarka
|
|
39
47
|
end
|
40
48
|
end
|
41
49
|
|
50
|
+
# @return o valor de `anexos` na configuração.
|
42
51
|
def anexos?
|
43
52
|
@configuracao['anexos']
|
44
53
|
end
|
45
54
|
|
55
|
+
# @return o valor de `errata` na configuração.
|
46
56
|
def errata?
|
47
57
|
@configuracao['errata']
|
48
58
|
end
|
49
59
|
|
60
|
+
# Atualiza errata na configuração
|
50
61
|
def errata=(e)
|
51
62
|
@errata = e
|
52
63
|
if (e) then
|
@@ -103,6 +114,8 @@ module Limarka
|
|
103
114
|
'configuracao.yaml'
|
104
115
|
end
|
105
116
|
|
117
|
+
# Ler os arquivos e atualiza a configuração, texto, referências, apendices e anexos.
|
118
|
+
# @param options opção criada em {Cli}
|
106
119
|
def atualiza_de_arquivos(options)
|
107
120
|
self.configuracao = ler_configuracao(options)
|
108
121
|
puts "Configuração lida: #{configuracao}" if options[:verbose]
|
@@ -114,6 +127,11 @@ module Limarka
|
|
114
127
|
self.anexos = ler_anexos if anexos?
|
115
128
|
end
|
116
129
|
|
130
|
+
# Ler a configuração. A origem da configuração é determinada pelo valor de `options[:configuracao_yaml]`.
|
131
|
+
# Se contém valor verdadeiro, ler do arquivo `configuracao.yaml`, caso contrário ler de `configuracao.pdf`.
|
132
|
+
# @param options [Hash] criado na classe {Cli}
|
133
|
+
# @return configuracao
|
134
|
+
# @see {Cli}
|
117
135
|
def ler_configuracao(options)
|
118
136
|
if options and options[:configuracao_yaml] then
|
119
137
|
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')
|
@@ -124,6 +142,10 @@ module Limarka
|
|
124
142
|
end
|
125
143
|
end
|
126
144
|
|
145
|
+
# Ler configuração do arquivo pdf
|
146
|
+
# @param file arquivo pdf
|
147
|
+
# @return [Hash] configuração exportada a partir da leitura do arquivo pdf
|
148
|
+
# @see Pdfconf#exporta
|
127
149
|
def ler_configuracao_pdf(file)
|
128
150
|
raise IOError, 'Arquivo não encontrado: ' + file unless File.exist? (file)
|
129
151
|
pdf = PdfForms::Pdf.new file, (PdfForms.new 'pdftk'), utf8_fields: true
|
@@ -140,6 +162,7 @@ module Limarka
|
|
140
162
|
end
|
141
163
|
|
142
164
|
def ler_texto(rascunho_file)
|
165
|
+
# Ficou estranho esse código, merece um refactory.
|
143
166
|
if (rascunho_file) then
|
144
167
|
File.open(rascunho_file, 'r') {|f| f.read}
|
145
168
|
else
|
@@ -147,18 +170,25 @@ module Limarka
|
|
147
170
|
end
|
148
171
|
end
|
149
172
|
|
173
|
+
# Ler referências do arquivo de referências.
|
174
|
+
# @return [String] conteúdo do arquivo de referências
|
150
175
|
def ler_referencias(configuracao)
|
151
176
|
arquivo_de_referencias = configuracao['referencias_caminho']
|
152
177
|
File.open(arquivo_de_referencias, 'r') {|f| f.read}
|
153
178
|
end
|
154
179
|
|
180
|
+
# Salva o hash no formato yaml no caminho especificado. Adiciona o `\n---\n`
|
181
|
+
# para manter compatível com o leitor pandoc.
|
182
|
+
# @param hash que será exportado.
|
183
|
+
# @param caminho [String] aonde será salvo o arquivo
|
155
184
|
def self.save_yaml(hash, caminho)
|
156
185
|
File.open(caminho, 'w') do |f|
|
157
186
|
f.write YAML.dump(hash)
|
158
187
|
f.write "\n---\n"
|
159
188
|
end
|
160
189
|
end
|
161
|
-
|
190
|
+
|
191
|
+
# Salva os conteúdos do trabalho em arquivos no diretórios especificado.
|
162
192
|
def save(dir)
|
163
193
|
Dir.chdir(dir) do
|
164
194
|
File.open(Trabalho.default_texto_file, 'w'){|f| f.write texto} if texto
|
data/lib/limarka/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: limarka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo de Santana Medeiros Alexandre
|
@@ -306,4 +306,3 @@ signing_key:
|
|
306
306
|
specification_version: 4
|
307
307
|
summary: Ferramenta para compilação de trabalhos acadêmicos com markdown e abnTeX2
|
308
308
|
test_files: []
|
309
|
-
has_rdoc:
|