class Limarka::Cli
Essa classe é responsável por interpretar e executar os comandos de linha da ferramenta. Para compreender sua utilização recomendo consultar a documentação do [thor](whatisthor.com).
@author Eduardo de Santana Medeiros Alexandre
Public Class Methods
cv()
click to toggle source
# File lib/limarka/cli.rb, line 320 def self.cv @@cv end
Public Instance Methods
ask_figura_arquivo(arquivo = nil)
click to toggle source
# File lib/limarka/cli.rb, line 339 def ask_figura_arquivo(arquivo = nil) if arquivo.nil? then arquivos = Dir["imagens/*"].select{ |f| File.file? f }.sort print_table arquivos.map.with_index{ |a, i| [i+1, *a]} selecao = ask("Escolha um arquivo para a Figura:").to_i arquivo=arquivos[selecao-1] end arquivo end
ask_figura_dimensoes()
click to toggle source
# File lib/limarka/cli.rb, line 393 def ask_figura_dimensoes dimensoes = ask("Forneça as dimensões separadas por espaço [100]:") if dimensoes.empty? then [100] else dimensoes.split(" ") end end
ask_figura_fonte()
click to toggle source
# File lib/limarka/cli.rb, line 359 def ask_figura_fonte fonte_padrao = "Autor." fonte_lida = ask("Insira o texto da fonte [#{fonte_padrao}]):") if fonte_lida == "" then fonte = fonte_padrao else fonte = fonte_lida end end
ask_figura_legenda()
click to toggle source
# File lib/limarka/cli.rb, line 349 def ask_figura_legenda legenda_padrao = "Legenda da figura." legenda_lida = ask("Insira o texto da legenda [#{legenda_padrao}]):") if legenda_lida == "" then legenda = legenda_padrao else legenda = legenda_lida end end
ask_figura_rotulo(rotulo, arquivo)
click to toggle source
# File lib/limarka/cli.rb, line 368 def ask_figura_rotulo(rotulo, arquivo) # http://stackoverflow.com/questions/1268289/how-to-get-rid-of-non-ascii-characters-in-ruby if (not rotulo) then rotulo_proposto = "fig:" + propoe_rotulo(File.basename arquivo, ".*") rotulo_lido = ask("Rótulo para referenciar a figura [#{rotulo_proposto}]. fig:" ) if rotulo_lido.empty? then rotulo = rotulo_proposto else rotulo = "fig:"+rotulo_lido end end rotulo end
check()
click to toggle source
# File lib/limarka/cli.rb, line 30 def check c = Limarka::Check.new() c.check() end
cronograma()
click to toggle source
# File lib/limarka/cli.rb, line 231 def cronograma # https://github.com/abntex/limarka/issues/90 tex = <<TEX \\begin{table}[htbp] \\centering \\caption{Cronograma de atividades} \\label{tab:cronograma} \\begin{tabular}{|c|c|c|c|c|c|} \\hline Fase & Março & Abril & Maio & Junho & Julho \\\\ \\hline 1 & \\textbullet & & & & \\\\ 2 & & \\textbullet & & & \\\\ 3 & & & \\textbullet & & \\\\ 4 & & & & \\textbullet & \\\\ 5 & & & & & \\textbullet \\\\ \\hline \\end{tabular} \\legend{Fonte: Autor.} \\end{table} \\begin{table}[htbp] \\centering \\caption{Cronograma de atividades} \\label{tab:cronograma} \\begin{tabular}{|l|c|c|c|c|c|} \\hline Atividade & Março & Abril & Maio & Junho & Julho \\\\ \\hline XXXXXXXXXXXXXXXX & \\textbullet & & & & \\\\ XXXXXXXXXXXXXXXX & & \\textbullet & & & \\\\ XXXXXXXX & & & \\textbullet & & \\\\ XXXXXXXX & & & & \\textbullet & \\\\ XXXXXXXX & & & & & \\textbullet \\\\ \\hline \\end{tabular} \\legend{Fonte: Autor.} \\end{table} TEX puts tex end
exec()
click to toggle source
# File lib/limarka/cli.rb, line 47 def exec if (options[:version]) then puts "limarka "+Limarka::VERSION s = `pandoc --version` s << `ruby --version` s << `pdftk --version` s << `latexmk --version` s << `xelatex --version` puts s return end #options[:output_dir] = File.absolute_path(options[:output_dir]) Dir.chdir(options[:input_dir]) do t = Limarka::Trabalho.new t.atualiza_de_arquivos(options) @@cv = Limarka::Conversor.new(t,options) @@cv.convert @@cv.usa_pdftotext = false @@cv.compila if options[:compila_tex] end end
fig(arquivo=nil)
click to toggle source
# File lib/limarka/cli.rb, line 92 def fig(arquivo=nil) if (options[:clipboard]) then arquivo = Clipboard.paste # Ler do clipboard, requer xclip: sudo apt-get install xclip end if (arquivo) then if arquivo.start_with?("file://") then arquivo = arquivo[7,-1] end end if (options[:interativo]) then arquivo = ask_figura_arquivo(arquivo) valida_figura_arquivo(arquivo) # antecipando validação issue #78 legenda = ask_figura_legenda fonte = ask_figura_fonte rotulo = ask_figura_rotulo(rotulo, arquivo) valida_figura_rotulo(rotulo) # antecipando validação issue #78 dimensoes = ask_figura_dimensoes else legenda = options[:legenda] fonte = options[:fonte] rotulo = options[:rotulo] if (not arquivo) then arquivo = ask_figura_arquivo(nil) end valida_figura_arquivo(arquivo) # antecipando validação issue #78 rotulo = "fig:" + propoe_rotulo(File.basename arquivo, ".*") if rotulo.nil? valida_figura_rotulo(rotulo) # antecipando validação issue #78 dimensoes = options[:dimensoes] end dimensoes.each do |dim| escala = (dim.to_f)/100 figura_tex = <<TEX \\begin{figure}[htbp] \\caption{\\label{#{rotulo}}#{legenda}} \\begin{center} \\includegraphics[width=#{escala}\\textwidth]{#{arquivo}} \\end{center} \\legend{Fonte: #{fonte}} \\end{figure} TEX say figura_tex end say "\n<!--Para referenciar a figura acima no texto utilize: Figura \\ref\{#{rotulo}} \n-->\n" end
importa(arquivo)
click to toggle source
# File lib/limarka/cli.rb, line 74 def importa(arquivo) diretorio = File.dirname(arquivo) system "pandoc", "-t", "markdown", "-o", "#{diretorio}/trabalho-academico.md", arquivo end
propoe_rotulo(string_base)
click to toggle source
# File lib/limarka/cli.rb, line 383 def propoe_rotulo(string_base) encoding_options = { :invalid => :replace, # Replace invalid byte sequences :undef => :replace, # Replace anything not defined in ASCII :replace => '-', # Use a blank for those replacements } rotulo_proposto = string_base.gsub(/\s+/, '-').encode(Encoding.find('ASCII'), encoding_options) end
tab()
click to toggle source
# File lib/limarka/cli.rb, line 158 def tab legenda = options[:legenda] fonte = options[:fonte] rotulo_lido = options[:rotulo] if rotulo_lido then rotulo = rotulo_lido else rotulo = "tab:"+(Time.now.to_i % 100000).to_s end nota = options[:nota] if nota then nota_linha = " \\nota{#{nota}}%\n" else nota_linha = "" end valida_tabela_rotulo(rotulo) say <<TEX \\begin{table}[htb] \\ABNTEXfontereduzida \\caption{#{legenda}} \\label{#{rotulo}} \\begin{tabular}{p{2.6cm}|p{6.0cm}|p{2.25cm}|p{3.40cm}} %\\hline \\textbf{Nível de Investigação} & \\textbf{Insumos} & \\textbf{Sistemas de Investigação} & \\textbf{Produtos} \\\\ \\hline Meta-nível & Filosofia\\index{filosofia} da Ciência & Epistemologia & Paradigma \\\\ \\hline Nível do objeto & Paradigmas do metanível e evidências do nível inferior & Ciência & Teorias e modelos \\\\ \\hline Nível inferior & Modelos e métodos do nível do objeto e problemas do nível inferior & Prática & Solução de problemas \\\\ % \\hline \\end{tabular} \\legend{Fonte: #{fonte}} \\end{table} \\begin{table}[htb] \\IBGEtab{% \\caption{#{legenda}}% \\label{#{rotulo}} }{% \\begin{tabular}{ccc} \\toprule Nome & Nascimento & Documento \\\\ \\midrule \\midrule Maria da Silva & 11/11/1111 & 111.111.111-11 \\\\ \\midrule João Souza & 11/11/2111 & 211.111.111-11 \\\\ \\midrule Laura Vicuña & 05/04/1891 & 3111.111.111-11 \\\\ \\bottomrule \\end{tabular}% }{% \\fonte{#{fonte}}% #{nota_linha}} \\end{table} <!-- Para referenciar a tabela acima no texto utilize: Tabela \\ref\{#{rotulo}} --> TEX # say tabela_tex end
valida_figura_arquivo(arquivo)
click to toggle source
# File lib/limarka/cli.rb, line 335 def valida_figura_arquivo(arquivo) raise RuntimeError, "Arquivo especificado para a figura não existe: '#{arquivo}'." unless File.file?(arquivo) end
valida_figura_rotulo(rotulo)
click to toggle source
# File lib/limarka/cli.rb, line 324 def valida_figura_rotulo (rotulo) if (not rotulo =~ (/^[a-zA-Z][\w\-:]*$/)) then raise RuntimeError, "O rótulo não deve conter caracteres especiais. Forneça um rótulo ou remova os caracteres especiais do nome do arquivo. Rótulo atual: '#{rotulo}'" end end
valida_tabela_rotulo(rotulo)
click to toggle source
# File lib/limarka/cli.rb, line 329 def valida_tabela_rotulo (rotulo) if (not rotulo =~ (/^[a-zA-Z][\w\-:]*$/)) then raise RuntimeError, "O rótulo não deve conter caracteres especiais, rótulo atual: #{rotulo}" end end