limarka 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e81e9fb7ab1a5345d2feb776e012ed8757954f0
4
- data.tar.gz: 923a53d79a612a541cee3ec1ec6a2368c4d8904a
3
+ metadata.gz: fa1896b0e71ab909e97ba9c80795702b4adb45af
4
+ data.tar.gz: 4977d97a73b3fd227dae4049bdad1be25ba5010f
5
5
  SHA512:
6
- metadata.gz: f6a4ec252ff8d4382f67a948ce1485a8c08d0e98ccc3138ae7a9be0480284df68e132ad7a01c2cd43ab07a51b682f8be737a51ee4d30cf6f26a2bd911d75bd01
7
- data.tar.gz: b8ab8e483dde30ae3903c985549004331b227a83b5055d83b828005b927c099d942036fb4031ab49a5a13649033682e316fa27077c2673ec79e689aab7c630c0
6
+ metadata.gz: f6928663dd2c372bd139691c3d703f443dac9adc44c9f47bd235786d3d3b5ee6122d6b6212ef3984b11cfa20309322e901b00c75f2c3673c27a7e1da3e4c2298
7
+ data.tar.gz: d81246bb185e683269733b24e29ec4c4907ba317eb774aab39e5a29f0b7a2a894a89fb372d0f2438cabe74f442c76163b6fd46b4b483ba55e30bddc2a1f923eb
@@ -1,7 +1,15 @@
1
1
  # Change Log
2
2
 
3
- ## [0.3.0](https://github.com/abntex/limarka/tree/0.3.0) (2016-11-02)
4
- [Full Changelog](https://github.com/abntex/limarka/compare/0.2.0...0.3.0)
3
+ ## [0.4.0](https://github.com/abntex/limarka/tree/0.4.0) (2016-11-16)
4
+ [Full Changelog](https://github.com/abntex/limarka/compare/v0.3.0...0.4.0)
5
+
6
+ **Implemented enhancements:**
7
+
8
+ - Indicar a versão de utilização do limarka [\#64](https://github.com/abntex/limarka/issues/64)
9
+ - Aumentar o provisionamento de inclusão de Figura [\#39](https://github.com/abntex/limarka/issues/39)
10
+
11
+ ## [v0.3.0](https://github.com/abntex/limarka/tree/v0.3.0) (2016-11-02)
12
+ [Full Changelog](https://github.com/abntex/limarka/compare/0.2.0...v0.3.0)
5
13
 
6
14
  **Fixed bugs:**
7
15
 
data/README.md CHANGED
@@ -1,18 +1,53 @@
1
- # Limarka
1
+ # O que é o limarka?
2
2
 
3
- Gere o PDF do seu trabalho de conclusão de curso (monografia, dissertação ou teste), formatado automaticamente com as normas da ABNT, escrevendo-o no formato Markdown.
3
+ O limarka é uma ferramenta que possibilita o usuário escrever o seu trabalho de conclusão de curso (monografia, dissertação ou teste) em Markdown e produzir PDFs em conformidade com as normas da ABNT.
4
4
 
5
- # Informações técnicas
5
+ # Por que escrever em Markdown ao invés de Latex?
6
6
 
7
- - Escreva o texto utilizando a linguagem Markdown
8
- - O texto será convertido em Latex, através da ferramenta [pandoc](http://pandoc.org) e templates baseados no [abntex2](http://www.abntex.net.br)
9
- - O código Latex é compilado e gerado o PDF em conformidade com as normas mais recentes da ABNT.
7
+ O LaTeX é ótimo e bastante útil para quem deseja percorrer uma carreira de Pesquisador. Muitos *journals* disponibilizam modelos somente em LaTeX para produção de artigos, aprender LaTeX irá ser útil nessa carreira.
10
8
 
9
+ Mas se você não pretende utilizar LaTeX após a conclusão do seu curso, por que investir na longa curva de aprendizado do LaTeX?
11
10
 
12
- # Documentação
11
+ > Uma reposta seria: *Com o Latex e abnTeX eu serei capaz de produzir um trabalho em conformidade com as normas da ABNT, isso por si só já compensaria o investimento*.
12
+
13
+
14
+ ## Markdown como alternativa de aprendizado
15
+
16
+ Com o limarka você agora possui outra escolha de investimento para elaborar um trabalho de conclusão do curso em conformidade com as Normas da ABNT: *aprender Markdown*.
17
+
18
+ O [Markdown](https://pt.wikipedia.org/wiki/Markdown) é uma [linguagem simples de marcação](https://en.wikipedia.org/wiki/Lightweight_markup_language). Os princípios das linguagem simples de marcação estão sendo popularizados em diversas ferramentas de interação social, veja alguns exemplos: [Github](https://help.github.com/articles/basic-writing-and-formatting-syntax/), [Moodle](https://docs.moodle.org/23/en/Markdown), [WhatsApp](https://www.whatsapp.com/faq/en/general/26000002), [Facebook](http://wersm.com/facebook-is-testing-rich-text-formatting-with-markdown/) [Google Plus](https://plus.google.com/+SarahHill/posts/TWYwPctEpJp), [Jekyll](http://jekyllrb.com), etc.
19
+
20
+ Após ou durante conclusão do seu curso, você pretende:
21
+
22
+ - Interagir através da escrita em redes sociais ou fóruns de discussão?
23
+ - Editar Wikis ou formatar mensagens?
24
+ - Participar em projetos no Github?
25
+ - Escrever documentações de softwares?
26
+ - Gerar código HTML a partir de texto?
27
+ - Elaborar *ebooks*?
28
+
29
+ Se você respondeu afirmativamente a algumas dessas perguntas, aprender uma linguagem simples de marcação (como o Markdown) é um investimento que provavelmente agilizará as realizações destas ações.
30
+
31
+ **OBS:** A implementação atual do limarka ainda exige conhecimentos mínimos do Latex.
13
32
 
14
- A documentação do projeto será mantida no [wiki](https://github.com/abntex/limarka/wiki)
15
33
 
34
+ # Qual a relação do limarka com o abnTeX?
35
+
36
+ O [abnTeX](https://github.com/abntex) provém uma suíte para LaTeX que atende os requisitos das normas da ABNT (Associação Brasileira de Normas Técnicas) para elaboração de trabalhos acadêmicos como teses, dissertações, projetos de pesquisa e outros documentos do gênero.
37
+
38
+ O limarka converte os textos produzidos em Markdown para LaTeX, utilizando os modelos do abnTeX2 que são extensivamente testados e incrementados pela comunidade nacional. O limarka é um projeto pertencente ao grupo do [abnTeX](https://github.com/abntex).
39
+
40
+
41
+ # Informações técnicas
42
+
43
+ - Escreva o texto utilizando a linguagem Markdown;
44
+ - Configure diversos aspectos do trabalho através de um formulário PDF;
45
+ - O texto será convertido em Latex, através da ferramenta [pandoc](http://pandoc.org), templates baseados no [abntex2](http://www.abntex.net.br) e as configurações do formulário;
46
+ - Um PDF em conformidade com as normas mais recentes da ABNT é gerado através da compilação do código Latex.
47
+
48
+ # Documentação
49
+
50
+ A documentação do limarka será mantida no [wiki do projeto](https://github.com/abntex/limarka/wiki).
16
51
 
17
52
  # Origem do projeto
18
53
 
@@ -7,10 +7,13 @@ require 'open3'
7
7
 
8
8
  require 'limarka/configuracao'
9
9
  require 'limarka/conversor'
10
+ require 'clipboard'
10
11
 
11
12
  module Limarka
12
13
 
13
14
  class Cli < Thor
15
+ include Thor::Actions
16
+
14
17
  default_command :exec
15
18
 
16
19
  method_option :configuracao_yaml, :aliases => '-y', :type => :boolean, :desc => 'Ler configuração exportada (configuracao.yaml) em vez de configuracao.pdf', :default => false
@@ -19,8 +22,16 @@ module Limarka
19
22
  method_option :compila_tex, :aliases => '-c', :desc => 'Compila arquivo tex gerando um PDF', :default => true, :type => :boolean
20
23
  method_option :templates_dir, :aliases => '-t', :desc => 'Diretório que contem a pasta templates (pandoc --data-dir)', :default => Dir.pwd
21
24
  method_option :verbose, :aliases => '-v', :desc => 'Imprime mais detalhes da execução', :default => false, :type => :boolean
25
+ method_option :version, :desc => 'Imprime a versão do limarka', :default => false, :type => :boolean
26
+
22
27
  desc "exec", "Executa o sistema para geração do documento latex e compilação"
23
28
  def exec
29
+
30
+ if (options[:version]) then
31
+ puts "limarka "+Limarka::VERSION
32
+ return
33
+ end
34
+
24
35
  #options[:output_dir] = File.absolute_path(options[:output_dir])
25
36
  Dir.chdir(options[:input_dir]) do
26
37
  t = Limarka::Trabalho.new
@@ -39,6 +50,150 @@ module Limarka
39
50
  system "pandoc", "-t", "markdown", "-o", "#{diretorio}/trabalho-academico.md", arquivo
40
51
  end
41
52
 
53
+ method_option :interativo, :aliases => '-i', :desc => 'Solicita os parâmetros de forma interativa.', :type => :boolean, :default => false
54
+ method_option :clipboard, :aliases => '-c', :desc => 'Utiliza o conteúdo da área de transferência como o nome do arquivo.', :type => :boolean, :default => false
55
+
56
+ # method_option :arquivo, :aliases => '-a', :desc => 'Caminho completo ou apenas o nome do arquivo na pasta imagens. Somente arquivos existêntes são válidos. Se não for especificado e o nome do arquivo esteja copiado (na área de transferência), e o arquivo existir, ele será utilizado.'
57
+ method_option :legenda, :aliases => '-l', :desc => 'Legenda da figura.', :default => "Legenda da figura."
58
+ method_option :fonte, :aliases => '-f', :desc => 'Fonte da imagem.', :default => "Autor."
59
+ method_option :rotulo, :aliases => '-r', :desc => 'Rótulo para ser utilizado na referenciação da figura, caso não especificado um será proposto.'
60
+ method_option :dimensoes, :aliases => '-d', :desc => 'Dimensões percentuais para redimencionar a figura. Se mais de uma dimensão for especificada será apresentado um código para inclusão da imagem para cada dimensão. Útil quando deseja experimentar diversas dimensões para a Figura. Ex: 80 90 100', :default => [100], :type => :array
61
+
62
+ long_desc <<-DESC
63
+ Esse comando imprime (1) o código para inclusão de uma figura (2) e como referenciá-la no texto. Para as figuras serem apresentadas, em conformidade com as Normas da ABNT, elas precisam serem incluídas como código Latex (abnTeX2).
64
+ DESC
65
+ desc "fig ARQUIVO", "Imprime códigos para inclusão de imagens em conformidade com ABNT (em LaTeX)"
66
+ def fig(arquivo=nil)
67
+
68
+ if (options[:clipboard]) then
69
+ arquivo = Clipboard.paste # Ler do clipboard, requer xclip: sudo apt-get install xclip
70
+ end
71
+
72
+ if (arquivo) then
73
+ if arquivo.start_with?("file://") then
74
+ arquivo = arquivo[7,-1]
75
+ end
76
+ end
77
+
78
+
79
+ if (options[:interativo]) then
80
+ arquivo = ask_figura_arquivo(arquivo)
81
+ legenda = ask_figura_legenda
82
+ fonte = ask_figura_fonte
83
+ rotulo = ask_figura_rotulo(rotulo, arquivo)
84
+ dimensoes = ask_figura_dimensoes
85
+ else
86
+ legenda = options[:legenda]
87
+ fonte = options[:fonte]
88
+ rotulo = options[:rotulo]
89
+ if (not arquivo) then
90
+ arquivo = ask_figura_arquivo(nil)
91
+ end
92
+ rotulo = "fig:" + propoe_rotulo(File.basename arquivo, ".*") if rotulo.nil?
93
+ dimensoes = options[:dimensoes]
94
+ end
95
+
96
+ valida_figura_arquivo(arquivo)
97
+ valida_figura_rotulo(rotulo)
98
+
99
+ say "\n<!--\nPara referenciar essa figura no texto utilize: Figura \\ref\{#{rotulo}} \n-->\n"
100
+ dimensoes.each do |dim|
101
+
102
+ legenda = options[:legenda]
103
+ escala = (dim.to_f)/100
104
+
105
+ figura_tex = <<TEX
106
+ \\begin{figure}[htbp]
107
+ \\caption{\\label{#{rotulo}}#{legenda}}
108
+ \\begin{center}
109
+ \\includegraphics[width=#{escala}\\textwidth]{#{arquivo}}
110
+ \\end{center}
111
+ \\legend{Fonte: #{fonte}}
112
+ \\end{figure}
113
+
114
+ TEX
115
+
116
+ say figura_tex
117
+ end
118
+ end
119
+
120
+ no_commands do
121
+ def valida_figura_rotulo (rotulo)
122
+ if (not rotulo =~ (/^[a-zA-Z][\w\-:]*$/)) then
123
+ 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}"
124
+ end
125
+ end
126
+
127
+ def valida_figura_arquivo(arquivo)
128
+ raise RuntimeError, "Arquivo especificado para a figura não existe: '#{arquivo}'." unless File.file?(arquivo)
129
+ end
130
+
131
+ def ask_figura_arquivo(arquivo = nil)
132
+ if arquivo.nil? then
133
+ arquivos = Dir["imagens/*"].select{ |f| File.file? f }.sort
134
+ print_table arquivos.map.with_index{ |a, i| [i+1, *a]}
135
+ selecao = ask("Escolha um arquivo para a Figura:").to_i
136
+ arquivo=arquivos[selecao-1]
137
+ end
138
+
139
+ arquivo
140
+ end
141
+ def ask_figura_legenda
142
+ legenda_padrao = "Legenda da figura."
143
+ legenda_lida = ask("Insira o texto da legenda [#{legenda_padrao}]):")
144
+ if legenda_lida == "" then
145
+ legenda = legenda_padrao
146
+ else
147
+ legenda = legenda_lida
148
+ end
149
+ end
150
+
151
+ def ask_figura_fonte
152
+ fonte_padrao = "Autor."
153
+ fonte_lida = ask("Insira o texto da fonte [#{fonte_padrao}]):")
154
+ if fonte_lida == "" then
155
+ fonte = fonte_padrao
156
+ else
157
+ fonte = fonte_lida
158
+ end
159
+ end
160
+ def ask_figura_rotulo(rotulo, arquivo)
161
+ # http://stackoverflow.com/questions/1268289/how-to-get-rid-of-non-ascii-characters-in-ruby
162
+
163
+ if (not rotulo) then
164
+ rotulo_proposto = "fig:" + propoe_rotulo(File.basename arquivo, ".*")
165
+ rotulo_lido = ask("Rótulo para referenciar a figura [#{rotulo_proposto}]. fig:" )
166
+ if rotulo_lido.empty? then
167
+ rotulo = rotulo_proposto
168
+ else
169
+ rotulo = "fig:"+rotulo_lido
170
+ end
171
+ end
172
+ rotulo
173
+ end
174
+
175
+ def propoe_rotulo(string_base)
176
+ encoding_options = {
177
+ :invalid => :replace, # Replace invalid byte sequences
178
+ :undef => :replace, # Replace anything not defined in ASCII
179
+ :replace => '-', # Use a blank for those replacements
180
+ }
181
+
182
+ rotulo_proposto = string_base.gsub(/\s+/, '-').encode(Encoding.find('ASCII'), encoding_options)
183
+ end
184
+
185
+ def ask_figura_dimensoes
186
+ dimensoes = ask("Forneça as dimensões separadas por espaço [100]:")
187
+ if dimensoes.empty? then
188
+ [100]
189
+ else
190
+ dimensoes.split(" ")
191
+ end
192
+ end
193
+ end
194
+
195
+
196
+
42
197
  =begin
43
198
  method_option :entrada, :default => "configuracao.pdf", :aliases => "-i", :banner => "FILE"
44
199
  method_option :saida, :default => "templates/configuracao.yaml", :aliases => "-o", :banner => "FILE"
@@ -1,3 +1,3 @@
1
1
  module Limarka
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -22,8 +22,9 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake", "~> 11.0"
23
23
  spec.add_development_dependency "rspec", "~> 3.5"
24
24
  spec.add_development_dependency "pry-byebug"
25
- spec.add_dependency "github_changelog_generator"
25
+ spec.add_development_dependency "github_changelog_generator"
26
26
 
27
+ spec.add_dependency "clipboard"
27
28
  spec.add_dependency "colorize"
28
29
  spec.add_dependency "pdf-forms", "~> 1.1.1"
29
30
  spec.add_dependency "pandoc-ruby"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: limarka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo de Santana Medeiros Alexandre
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-02 00:00:00.000000000 Z
11
+ date: 2016-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -68,6 +68,20 @@ dependencies:
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: github_changelog_generator
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: clipboard
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ">="