limarka 0.3.0 → 0.4.0

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 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
  - - ">="