polytexnic 1.1.14 → 1.2.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: 0c6f6685e4e82555b337e848db33c77a772d5f90
4
- data.tar.gz: 88de5d8700aac21bb873a6d0b6919370036cd581
3
+ metadata.gz: 889d526bb149a5216215bcc4aec2ed9454214c56
4
+ data.tar.gz: b78febaefb8e5c65b5e353d96e79791088970a94
5
5
  SHA512:
6
- metadata.gz: db3e10b6e1bcad49d628637bfd00ccde8ea347db3d1543be2065c0b9532b6f922bb5f315c31622365127fd80f56634c6f5ca3951ede46120406c0a63fa7bfa49
7
- data.tar.gz: 7d92261fdaa1607160bf36e2ac323c4827aadc1ed6b82e15ca2268b71620b40c3e23ab393e95ea5e1d6eb65b92f90f0cee7c80942a74bed950a64df7295028de
6
+ metadata.gz: a1830eef955e1288ca5d02cb3fc5e92894309f97094ee3882286fabcfb5b471f4f4e852a56b44a580601dc60b2f0f45e4e71688768eff75ee9cf1236c365682b
7
+ data.tar.gz: fc21b6e1e2daf2edf6e586433de3b0fd91b8840ccad145702576f473ff7f43ad0684495df566c2fe89ae15c69f4b3b45cda27bf1ec1baf59c2e430e5e18aa348
@@ -1238,18 +1238,31 @@ module Polytexnic
1238
1238
  # Trims empty paragraphs.
1239
1239
  # Sometimes a <p></p> creeps in due to idiosyncrasies of the
1240
1240
  # Tralics conversion.
1241
- def trim_empty_paragraphs(string)
1242
- string.gsub!(/<p>\s*<\/p>/, '')
1241
+ def trim_empty_paragraphs!(string)
1242
+ string.gsub!(/<p>\s*<\/p>/m, '')
1243
1243
  end
1244
1244
 
1245
- # Retores quotes or verse inside figure.
1245
+ # Restores quotes or verse inside figure.
1246
1246
  # This is a terrible hack.
1247
- def restore_figure_quotes(string)
1247
+ def restore_figure_quotes!(string)
1248
1248
  figure_quote_cache.each do |key, html|
1249
1249
  string.gsub!(/<p>\s*#{key}\s*<\/p>/m, html)
1250
1250
  end
1251
1251
  end
1252
1252
 
1253
+ # Retores literal HTML included via %=.
1254
+ # E.g., writing
1255
+ # %= </span>
1256
+ # inserts a literal closing span tag into the HTML output.
1257
+ def restore_literal_html!(string)
1258
+ literal_html_cache.each do |key, html|
1259
+ string.gsub!(/<p>\s*<literalhtml>#{key}<\/literalhtml>\s*<\/p>/m,
1260
+ html)
1261
+ string.gsub!(/<literalhtml>#{key}<\/literalhtml>/, html)
1262
+ end
1263
+ end
1264
+
1265
+
1253
1266
  # Converts a document to HTML.
1254
1267
  # Because there's no way to know which elements are block-level
1255
1268
  # (and hence can't be nested inside a paragraph tag), we first extract
@@ -1266,8 +1279,9 @@ module Polytexnic
1266
1279
  end
1267
1280
  body = doc.at_css('document').children.to_xhtml
1268
1281
  Nokogiri::HTML.fragment(body).to_xhtml.tap do |html|
1269
- trim_empty_paragraphs(html)
1270
- restore_figure_quotes(html)
1282
+ trim_empty_paragraphs!(html)
1283
+ restore_figure_quotes!(html)
1284
+ restore_literal_html!(html)
1271
1285
  end
1272
1286
  end
1273
1287
 
@@ -120,11 +120,13 @@ module Polytexnic
120
120
  end
121
121
 
122
122
  # Removes commented-out lines.
123
- # Contents of the special sequence `%=` are converted to HTML comments.
123
+ # Contents of the special sequence `%=` are converted to literal HTML.
124
124
  def remove_comments(output)
125
125
  output.gsub!(/[^\\]%[^=].*$/, '')
126
126
  output.gsub!(/[^\\]%=(.*)$/) do
127
- xmlelement('comment') { $1.gsub('_', underscore_digest) }
127
+ key = digest($1)
128
+ literal_html_cache[key] = $1
129
+ xmlelement('literalhtml') { key }
128
130
  end
129
131
  end
130
132
 
@@ -241,7 +241,7 @@ module Polytexnic
241
241
  # because in Ruby '\\foo' is the same as '\\\\foo', '\}' is '}', etc.
242
242
  # I thought I escaped (heh) this problem with the `escape_backslashes`
243
243
  # method, but here the problem is extremely specific. In particular,
244
- # \\\{\} is really \\ and \{ and \}, but Ruby doensn't know WTF to do
244
+ # \\\{\} is really \\ and \{ and \}, but Ruby doesn't know WTF to do
245
245
  # with it, and thinks that it's "\\{}", which is the same as '\{}'.
246
246
  # The solution is to replace '\\\\' with some number of backslashes.
247
247
  # How many? I literally had to just keep adding backslashes until
@@ -1,3 +1,3 @@
1
1
  module Polytexnic
2
- VERSION = "1.1.14"
2
+ VERSION = "1.2.0"
3
3
  end
data/lib/polytexnic.rb CHANGED
@@ -39,13 +39,14 @@ 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, :figure_quote_cache
42
+ :article, :figure_quote_cache, :literal_html_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
48
  @figure_quote_cache = {}
49
+ @literal_html_cache = {}
49
50
  @maketitle_elements = {}
50
51
  @article = options[:article]
51
52
  @language_labels = if (labels = options[:language_labels]).nil?
@@ -70,8 +70,16 @@ describe 'Polytexnic::Pipeline#to_html' do
70
70
  end
71
71
 
72
72
  context "with a percent-equals" do
73
- let(:polytex) { '%= literal_text' }
74
- it { should include '<!-- literal_text -->' }
73
+
74
+ context "with an opening tag" do
75
+ let(:polytex) { '%= <span id="foo" class="bar">' }
76
+ it { should eq '<span id="foo" class="bar">' }
77
+ end
78
+
79
+ context "with a closing tag" do
80
+ let(:polytex) { '%= </span>' }
81
+ it { should eq '</span>' }
82
+ end
75
83
  end
76
84
  end
77
85
 
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.14
4
+ version: 1.2.0
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: 2016-01-21 00:00:00.000000000 Z
12
+ date: 2016-02-17 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.4.5
295
+ rubygems_version: 2.4.5.1
296
296
  signing_key:
297
297
  specification_version: 4
298
298
  summary: Convert from PolyTeX & Markdown to HTML & LaTeX