limarka 0.6.4 → 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|