Class: Formatafacil::ArtigoTarefa
- Defined in:
- lib/formatafacil/artigo_tarefa.rb
Instance Attribute Summary collapse
-
#arquivo_abstract ⇒ Object
Returns the value of attribute arquivo_abstract.
-
#arquivo_bibliografia ⇒ Object
Returns the value of attribute arquivo_bibliografia.
-
#arquivo_ingles ⇒ Object
Returns the value of attribute arquivo_ingles.
-
#arquivo_resumo ⇒ Object
Returns the value of attribute arquivo_resumo.
-
#arquivo_saida_latex ⇒ Object
Returns the value of attribute arquivo_saida_latex.
-
#arquivo_saida_pdf ⇒ Object
Returns the value of attribute arquivo_saida_pdf.
-
#arquivo_saida_yaml ⇒ Object
Returns the value of attribute arquivo_saida_yaml.
-
#arquivo_texto ⇒ Object
Returns the value of attribute arquivo_texto.
-
#artigo ⇒ Object
conteúdo lidos os arquivos.
-
#artigo_latex ⇒ Object
conteúdo convertido.
-
#modelo ⇒ Object
Returns the value of attribute modelo.
Attributes inherited from Tarefa
Instance Method Summary collapse
- #converte_configuracao_para_latex ⇒ Object
- #converte_parametros_para_boolean ⇒ Object
- #converte_valor_da_arvore_pandoc(node) ⇒ Object
- #executa ⇒ Object
- #executa_com_configuracao ⇒ Object
- #executa_pandoc_salvando_latex ⇒ Object
- #executa_pdflatex ⇒ Object
-
#initialize(h = {}) ⇒ ArtigoTarefa
constructor
A new instance of ArtigoTarefa.
- #ler_arquivo(arquivo) ⇒ Object
-
#ler_configuracao ⇒ Object
Ler as configurações dos arquivos:.
- #ler_metadados_do_arquivo(arquivo) ⇒ Object
-
#salva_configuracao_yaml_para_inclusao_em_pandoc ⇒ Object
Precisa gerar arquivos com quebra de linha antes e depois porque pandoc utiliza.
Methods inherited from Tarefa
Constructor Details
#initialize(h = {}) ⇒ ArtigoTarefa
Returns a new instance of ArtigoTarefa.
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 25 def initialize(h={}) @arquivo_texto = 'artigo.md' @arquivo_resumo = 'config/resumo.md' @arquivo_abstract = 'config/abstract.md' @arquivo_ingles = 'config/ingles.yaml' @arquivo_bibliografia ='bibliografia.md' @arquivo_saida_yaml = 'artigo.yaml' @arquivo_saida_pdf = 'artigo.pdf' @arquivo_saida_latex = 'artigo.tex' @artigo = {} @artigo_latex = {} h.each {|k,v| send("#{k}=",v)} end |
Instance Attribute Details
#arquivo_abstract ⇒ Object
Returns the value of attribute arquivo_abstract.
18 19 20 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 18 def arquivo_abstract @arquivo_abstract end |
#arquivo_bibliografia ⇒ Object
Returns the value of attribute arquivo_bibliografia.
20 21 22 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 20 def arquivo_bibliografia @arquivo_bibliografia end |
#arquivo_ingles ⇒ Object
Returns the value of attribute arquivo_ingles.
19 20 21 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 19 def arquivo_ingles @arquivo_ingles end |
#arquivo_resumo ⇒ Object
Returns the value of attribute arquivo_resumo.
17 18 19 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 17 def arquivo_resumo @arquivo_resumo end |
#arquivo_saida_latex ⇒ Object
Returns the value of attribute arquivo_saida_latex.
23 24 25 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 23 def arquivo_saida_latex @arquivo_saida_latex end |
#arquivo_saida_pdf ⇒ Object
Returns the value of attribute arquivo_saida_pdf.
22 23 24 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 22 def arquivo_saida_pdf @arquivo_saida_pdf end |
#arquivo_saida_yaml ⇒ Object
Returns the value of attribute arquivo_saida_yaml.
21 22 23 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 21 def arquivo_saida_yaml @arquivo_saida_yaml end |
#arquivo_texto ⇒ Object
Returns the value of attribute arquivo_texto.
16 17 18 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 16 def arquivo_texto @arquivo_texto end |
#artigo ⇒ Object
conteúdo lidos os arquivos
13 14 15 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 13 def artigo @artigo end |
#artigo_latex ⇒ Object
conteúdo convertido
14 15 16 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 14 def artigo_latex @artigo_latex end |
#modelo ⇒ Object
Returns the value of attribute modelo.
12 13 14 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 12 def modelo @modelo end |
Instance Method Details
#converte_configuracao_para_latex ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 129 def converte_configuracao_para_latex @artigo_latex.merge!(@artigo) ['resumo','abstract','bibliografia'].each {|key| Open3.popen3("pandoc --smart -f markdown -t latex") {|stdin, stdout, stderr, wait_thr| pid = wait_thr.pid # pid of the started process. stdin.write @artigo[key] stdin.close @artigo_latex[key] = stdout.read } } end |
#converte_parametros_para_boolean ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 114 def converte_parametros_para_boolean ['incluir_abstract'].each do |param| case @artigo[param] when true @artigo[param] = true when 'sim' @artigo[param] = true when 'Sim' @artigo[param] = true else @artigo[param] = false end end end |
#converte_valor_da_arvore_pandoc(node) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 76 def converte_valor_da_arvore_pandoc(node) # {"boo_false"=>{"t"=>"MetaBool", "c"=>false}, "boo_true"=>{"t"=>"MetaBool", "c"=>true}, "nome_do_parametro"=>{"t"=>"MetaInlines", "c"=>[{"t"=>"Str", "c"=>"valor"}, {"t"=>"Space", "c"=>[]}, {"t"=>"Str", "c"=>"do"}, {"t"=>"Space", "c"=>[]}, {"t"=>"Str", "c"=>"parâmetro"}]}, "numero"=>{"t"=>"MetaString", "c"=>"15"}} result = nil case node['t'] when "MetaString" result = node['c'] when "MetaBool" result = node['c'] when "MetaInlines" string = "" node['c'].each do |node| case node['t'] when 'Str' string += node['c'] when 'Space' string += " " end end if "sim".casecmp(string).zero? result = true elsif "não".casecmp(string).zero? result = false else result = string end else result = node end result end |
#executa ⇒ Object
39 40 41 42 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 39 def executa ler_configuracao executa_com_configuracao end |
#executa_com_configuracao ⇒ Object
44 45 46 47 48 49 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 44 def executa_com_configuracao converte_configuracao_para_latex salva_configuracao_yaml_para_inclusao_em_pandoc executa_pandoc_salvando_latex executa_pdflatex end |
#executa_pandoc_salvando_latex ⇒ Object
153 154 155 156 157 158 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 153 def executa_pandoc_salvando_latex t = Formatafacil::Template.new() data_dir = t.directory system "pandoc --smart -s #{@arquivo_texto} #{@arquivo_saida_yaml} --data-dir=#{data_dir} --template=#{modelo} -f markdown -t latex -o #{@arquivo_saida_latex}" end |
#executa_pdflatex ⇒ Object
160 161 162 163 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 160 def executa_pdflatex #system "pdflatex #{@arquivo_saida_latex}" #system "pdflatex #{@arquivo_saida_latex}" end |
#ler_arquivo(arquivo) ⇒ Object
108 109 110 111 112 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 108 def ler_arquivo(arquivo) result = "" File.open(arquivo, 'r') { |f| result = f.read } result end |
#ler_configuracao ⇒ Object
Ler as configurações dos arquivos:
54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 54 def ler_configuracao @artigo.merge!(YAML.load(ler_arquivo(Formatafacil::Tarefa.arquivo_configuracao))) converte_parametros_para_boolean @modelo = @artigo['modelo'] @artigo['abstract'] = ler_arquivo(@arquivo_abstract) @artigo.merge!((@arquivo_abstract)) @artigo['resumo'] = ler_arquivo(@arquivo_resumo) @artigo['bibliografia'] = ler_arquivo(@arquivo_bibliografia) end |
#ler_metadados_do_arquivo(arquivo) ⇒ Object
67 68 69 70 71 72 73 74 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 67 def (arquivo) result = {} = JSON.parse(`pandoc -t json #{arquivo}`)[0]['unMeta'] .each do |k,v| result[k]=converte_valor_da_arvore_pandoc(v) end result end |
#salva_configuracao_yaml_para_inclusao_em_pandoc ⇒ Object
Precisa gerar arquivos com quebra de linha antes e depois porque pandoc utiliza
144 145 146 147 148 149 150 |
# File 'lib/formatafacil/artigo_tarefa.rb', line 144 def salva_configuracao_yaml_para_inclusao_em_pandoc File.open(@arquivo_saida_yaml, 'w'){ |file| file.write("\n") file.write @artigo_latex.to_yaml file.write("---\n") } end |