Class: Formatafacil::ArtigoTarefa

Inherits:
Tarefa
  • Object
show all
Defined in:
lib/formatafacil/artigo_tarefa.rb

Instance Attribute Summary collapse

Attributes inherited from Tarefa

#logger

Instance Method Summary collapse

Constructor Details

#initialize(h = {}) ⇒ ArtigoTarefa

Um parâmetro obrigatório é o modelo do artigo



46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/formatafacil/artigo_tarefa.rb', line 46

def initialize(h={})
  @arquivo_resumo = 'resumo.md'
  @arquivo_abstract = 'abstract.md'
  @arquivo_bibliografia ='bibliografia.md'
  @arquivo_metadados = 'metadados.yaml'
  @arquivo_saida_yaml = 'artigo.yaml'
  @arquivo_saida_pdf = 'artigo.pdf'
  @arquivo_saida_latex = 'artigo.tex'
  @artigo = {}
  @artigo_latex = {}
  @metadados = {}
  h.each {|k,v| send("#{k}=",v)}
  @arquivo_texto = "#{modelo}.md"
end

Instance Attribute Details

#abstractObject

Returns the value of attribute abstract.



24
25
26
# File 'lib/formatafacil/artigo_tarefa.rb', line 24

def abstract
  @abstract
end

#arquivo_abstractObject

Returns the value of attribute arquivo_abstract.



32
33
34
# File 'lib/formatafacil/artigo_tarefa.rb', line 32

def arquivo_abstract
  @arquivo_abstract
end

#arquivo_bibliografiaObject

Returns the value of attribute arquivo_bibliografia.



33
34
35
# File 'lib/formatafacil/artigo_tarefa.rb', line 33

def arquivo_bibliografia
  @arquivo_bibliografia
end

#arquivo_metadadosObject

Arquivo padrão de leitura dos metadados: metadados.yaml



35
36
37
# File 'lib/formatafacil/artigo_tarefa.rb', line 35

def arquivo_metadados
  @arquivo_metadados
end

#arquivo_resumoObject

Returns the value of attribute arquivo_resumo.



31
32
33
# File 'lib/formatafacil/artigo_tarefa.rb', line 31

def arquivo_resumo
  @arquivo_resumo
end

#arquivo_saida_latexObject

Returns the value of attribute arquivo_saida_latex.



38
39
40
# File 'lib/formatafacil/artigo_tarefa.rb', line 38

def arquivo_saida_latex
  @arquivo_saida_latex
end

#arquivo_saida_pdfObject

Returns the value of attribute arquivo_saida_pdf.



37
38
39
# File 'lib/formatafacil/artigo_tarefa.rb', line 37

def arquivo_saida_pdf
  @arquivo_saida_pdf
end

#arquivo_saida_yamlObject

Returns the value of attribute arquivo_saida_yaml.



36
37
38
# File 'lib/formatafacil/artigo_tarefa.rb', line 36

def arquivo_saida_yaml
  @arquivo_saida_yaml
end

#arquivo_textoObject

conteúdo convertido



30
31
32
# File 'lib/formatafacil/artigo_tarefa.rb', line 30

def arquivo_texto
  @arquivo_texto
end

#artigoObject

conteúdo lidos os arquivos



26
27
28
# File 'lib/formatafacil/artigo_tarefa.rb', line 26

def artigo
  @artigo
end

#artigo_latexObject

conteúdo convertido



27
28
29
# File 'lib/formatafacil/artigo_tarefa.rb', line 27

def artigo_latex
  @artigo_latex
end

#bibliografiaObject

Returns the value of attribute bibliografia.



21
22
23
# File 'lib/formatafacil/artigo_tarefa.rb', line 21

def bibliografia
  @bibliografia
end

#compiladorObject

Tarefa que pode ser encadeada para compilar o artigo para pdf



41
42
43
# File 'lib/formatafacil/artigo_tarefa.rb', line 41

def compilador
  @compilador
end

#metadadosObject

Returns the value of attribute metadados.



20
21
22
# File 'lib/formatafacil/artigo_tarefa.rb', line 20

def metadados
  @metadados
end

#modeloObject

Returns the value of attribute modelo.



19
20
21
# File 'lib/formatafacil/artigo_tarefa.rb', line 19

def modelo
  @modelo
end

#resumoObject

Returns the value of attribute resumo.



23
24
25
# File 'lib/formatafacil/artigo_tarefa.rb', line 23

def resumo
  @resumo
end

#textoObject

Returns the value of attribute texto.



22
23
24
# File 'lib/formatafacil/artigo_tarefa.rb', line 22

def texto
  @texto
end

Instance Method Details

#converte_artigo_para_latexObject



122
123
124
125
126
127
128
129
130
131
132
# File 'lib/formatafacil/artigo_tarefa.rb', line 122

def converte_artigo_para_latex
  result = ""
  t = Formatafacil::Template.new()
  Open3.popen3("pandoc --smart --standalone --no-wrap --data-dir=#{t.directory} --template=#{modelo} -f markdown -t latex") {|stdin, stdout, stderr, wait_thr|
    pid = wait_thr.pid # pid of the started process.
    stdin.write exporta_conteudo_markdown
    stdin.close
    result = stdout.read
  }
  result
end

#converte_conteudo_para_latex(conteudo) ⇒ Object



134
135
136
137
138
139
140
141
142
143
# File 'lib/formatafacil/artigo_tarefa.rb', line 134

def converte_conteudo_para_latex(conteudo)
  result = ""
  Open3.popen3("pandoc --smart -f markdown -t latex") {|stdin, stdout, stderr, wait_thr|
    pid = wait_thr.pid # pid of the started process.
    stdin.write conteudo
    stdin.close
    result = stdout.read
  }
  result.strip
end

#executaObject



61
62
63
64
65
66
67
68
# File 'lib/formatafacil/artigo_tarefa.rb', line 61

def executa
  verifica_conteudos
  unifica_metadados
  escreve_artigo_latex
  compila_pdf
  #ler_configuracao
  #executa_com_configuracao
end

#exporta_conteudo_markdownObject



118
119
120
# File 'lib/formatafacil/artigo_tarefa.rb', line 118

def exporta_conteudo_markdown
  "#{@texto}\n#{@metadados.to_yaml}---\n"
end

#ler_configuracaoObject

Ler as configurações dos arquivos:



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/formatafacil/artigo_tarefa.rb', line 74

def ler_configuracao
  #@artigo.merge!(YAML.load(ler_arquivo(Formatafacil::Tarefa.arquivo_configuracao)))
  #converte_parametros_para_boolean

  #@modelo = @artigo['modelo']
  if File.exist?(@arquivo_abstract) then
    @artigo['abstract'] = ler_arquivo(@arquivo_abstract)
    @artigo.merge!(ler_metadados_do_arquivo(@arquivo_abstract))
  end
  if File.exist?(@arquivo_resumo) then
    @artigo['resumo'] = ler_arquivo(@arquivo_resumo)
  end
  @artigo['bibliografia'] = ler_arquivo(@arquivo_bibliografia) if File.exist?(@arquivo_bibliografia)

  #unifica_metadados

end

#ler_metadados_do_arquivo(arquivo) ⇒ Object



92
93
94
95
96
97
98
99
# File 'lib/formatafacil/artigo_tarefa.rb', line 92

def ler_metadados_do_arquivo(arquivo)
  result = {}
  meta = JSON.parse(`pandoc -t json #{arquivo}`)[0]['unMeta']
  meta.each do |k,v|
    result[k]=converte_valor_da_arvore_pandoc(v)
  end
  result
end

#modelosObject



114
115
116
# File 'lib/formatafacil/artigo_tarefa.rb', line 114

def modelos
  Formatafacil::Template.new().artigo_modelos
end

#unifica_metadadosObject

Converte os arquivos secundários para latex, e salva junto com os blocos yaml no hash metadados.



105
106
107
108
109
110
111
112
# File 'lib/formatafacil/artigo_tarefa.rb', line 105

def unifica_metadados
  #salva_resumo_em_metadados
  #salva_blocos_de_metadados
  @metadados['resumo'] = converte_conteudo_para_latex(@resumo)
  @metadados['abstract'] = converte_conteudo_para_latex(@abstract)
  @metadados['bibliografia'] = converte_conteudo_para_latex(@bibliografia)
  @metadados.merge!(extrai_blocos_yaml(@abstract))
end