polytexnic 1.1.8 → 1.1.9

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: 3d8a0e3879d0e276f8bbabd88041561c844f1579
4
- data.tar.gz: ee6e0ba56c32487b01d1e2b93566ea409d0c2d80
3
+ metadata.gz: ac7a3fa330f197e8af6715e2626d7e9be2261f3d
4
+ data.tar.gz: 8b4e4f88a82246ed1aa6932913340ff77cd45425
5
5
  SHA512:
6
- metadata.gz: a5ba6824073010e0666a908b846ecf68e5a9dab829bee1063184bdba3f90c37044b369f8a889bdc487ca11c70316a1625214050d51b552eed48ae2ffa00211c1
7
- data.tar.gz: 0884a8bfcb671fb813d2b6ebfaeb278f0d313cfb86d7a2cd4ca703a9e36a6ad626704732f9427170a0f960f9edfa30da248b9eed13fc009f1b7978e265a9ed1d
6
+ metadata.gz: 0db08f8612eb672b9393e2c8d7fc54509a85d21a93d144b330d9614d7de8edd5752651287777617710dc48ed87cc6a242f71b33e6ec9d783fdbfb8ce481f8b57
7
+ data.tar.gz: 8b40839422d8fb170b0e89de00bd62e23ff5b68ff801db330646b087dcb71c0b92787fb41ec96a9e9032bdb504dc31fbda874924c08178aec45f7974aa76a101
@@ -1242,6 +1242,14 @@ module Polytexnic
1242
1242
  string.gsub!(/<p>\s*<\/p>/, '')
1243
1243
  end
1244
1244
 
1245
+ # Retores quotes or verse inside figure.
1246
+ # This is a terrible hack.
1247
+ def restore_figure_quotes(string)
1248
+ figure_quote_cache.each do |key, html|
1249
+ string.gsub!(/<p>\s*#{key}\s*<\/p>/m, html)
1250
+ end
1251
+ end
1252
+
1245
1253
  # Converts a document to HTML.
1246
1254
  # Because there's no way to know which elements are block-level
1247
1255
  # (and hence can't be nested inside a paragraph tag), we first extract
@@ -1259,6 +1267,7 @@ module Polytexnic
1259
1267
  body = doc.at_css('document').children.to_xhtml
1260
1268
  Nokogiri::HTML.fragment(body).to_xhtml.tap do |html|
1261
1269
  trim_empty_paragraphs(html)
1270
+ restore_figure_quotes(html)
1262
1271
  end
1263
1272
  end
1264
1273
 
@@ -209,29 +209,48 @@ module Polytexnic
209
209
  # is to use \centering anyway, so this kludge is actually better LaTeX.
210
210
  def convert_float_centering(output)
211
211
  @in_float = false
212
- centered = output.split("\n").map do |line|
212
+ centered = []
213
+ quote_or_verse = []
214
+ output.split("\n").each do |line|
213
215
  if line =~ /^\s*\\begin\{(figure|table)\}/
214
216
  @in_float = true
215
217
  @float_type = $1
216
- line
218
+ centered << line
217
219
  elsif @in_float && line =~ /^\s*\\begin\{center\}/
218
- '\centering'
220
+ centered << '\centering'
219
221
  elsif @in_float && line =~ /^\s*\\end\{center\}/
220
- ''
222
+ centered << ''
221
223
  elsif @in_float && line =~/^\s*\\footnotesize/
222
224
  # Removes \footnotesize in floats.
223
225
  # This sizing is useful for tables
224
226
  # in some LaTeX PDF contexts, but not in HTML,
225
227
  # and it messes up the conversion.
226
- ''
228
+ centered << ''
227
229
  elsif @in_float && line =~ /^\s*\\end\{#{@float_type}\}/
228
230
  @in_float = false
229
- line
231
+ centered << line
232
+ elsif @in_float && line =~ /^\s*\\begin\{(?:verse|quote)\}/
233
+ quote_or_verse << line
234
+ @in_quote = true
235
+ centered << ''
236
+ elsif @in_float && line =~ /^\s*\\end\{(?:verse|quote)\}/
237
+ quote_or_verse << line
238
+ quote = quote_or_verse.join("\n")
239
+ key = digest(latex)
240
+ html = Polytexnic::Pipeline.new(quote,
241
+ literal_cache: literal_cache).to_html
242
+ figure_quote_cache[key] = html
243
+ @in_quote = false
244
+ quote_or_verse = []
245
+ centered << key
246
+ elsif @in_quote
247
+ quote_or_verse << line
248
+ centered << ''
230
249
  else
231
- line
250
+ centered << line
232
251
  end
233
- end.join("\n")
234
- output.replace(centered)
252
+ end
253
+ output.replace(centered.join("\n"))
235
254
  end
236
255
 
237
256
  # Converts the alt table environments to simple tabular.
@@ -1,3 +1,3 @@
1
1
  module Polytexnic
2
- VERSION = "1.1.8"
2
+ VERSION = "1.1.9"
3
3
  end
data/lib/polytexnic.rb CHANGED
@@ -39,12 +39,13 @@ module Polytexnic
39
39
  attr_accessor :literal_cache, :code_cache, :polytex, :xml, :html,
40
40
  :math_label_cache, :highlight_cache, :maketitle_elements,
41
41
  :custom_commands, :language_labels, :unicode_cache,
42
- :article
42
+ :article, :figure_quote_cache
43
43
 
44
44
  def initialize(source, options = {})
45
45
  @literal_cache = options[:literal_cache] || {}
46
46
  @unicode_cache = {}
47
47
  @code_cache = {}
48
+ @figure_quote_cache = {}
48
49
  @maketitle_elements = {}
49
50
  @article = options[:article]
50
51
  @language_labels = if (labels = options[:language_labels]).nil?
@@ -82,10 +82,12 @@ describe 'Polytexnic::Pipeline#to_html' do
82
82
  end
83
83
  end
84
84
 
85
- context "with a label and a cross-reference" do
85
+ context "with a label and a cross-reference and a quote" do
86
86
  let(:polytex) do <<-'EOS'
87
- \begin{figure}[h]
87
+ \begin{figure}
88
+ \begin{quote}
88
89
  lorem
90
+ \end{quote}
89
91
  \label{fig:foo}
90
92
  \end{figure}
91
93
 
@@ -96,7 +98,9 @@ describe 'Polytexnic::Pipeline#to_html' do
96
98
  it do
97
99
  should resemble <<-'EOS'
98
100
  <div id="fig-foo" data-tralics-id="uid1" data-number="1" class="figure">
99
- <p>lorem</p>
101
+ <blockquote class="quotation">
102
+ <p class="quote">lorem</p>
103
+ </blockquote>
100
104
  <div class="caption">
101
105
  <span class="header">Figure 1</span>
102
106
  </div>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polytexnic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.8
4
+ version: 1.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Hartl
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-07-11 00:00:00.000000000 Z
12
+ date: 2015-09-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -292,7 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
292
  version: '0'
293
293
  requirements: []
294
294
  rubyforge_project:
295
- rubygems_version: 2.2.2
295
+ rubygems_version: 2.4.5
296
296
  signing_key:
297
297
  specification_version: 4
298
298
  summary: Convert from PolyTeX & Markdown to HTML & LaTeX