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 +4 -4
- data/lib/polytexnic/postprocessors/html.rb +20 -6
- data/lib/polytexnic/preprocessors/html.rb +4 -2
- data/lib/polytexnic/utils.rb +1 -1
- data/lib/polytexnic/version.rb +1 -1
- data/lib/polytexnic.rb +2 -1
- data/spec/to_html/core_spec.rb +10 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 889d526bb149a5216215bcc4aec2ed9454214c56
|
4
|
+
data.tar.gz: b78febaefb8e5c65b5e353d96e79791088970a94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
#
|
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
|
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
|
-
|
127
|
+
key = digest($1)
|
128
|
+
literal_html_cache[key] = $1
|
129
|
+
xmlelement('literalhtml') { key }
|
128
130
|
end
|
129
131
|
end
|
130
132
|
|
data/lib/polytexnic/utils.rb
CHANGED
@@ -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
|
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
|
data/lib/polytexnic/version.rb
CHANGED
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?
|
data/spec/to_html/core_spec.rb
CHANGED
@@ -70,8 +70,16 @@ describe 'Polytexnic::Pipeline#to_html' do
|
|
70
70
|
end
|
71
71
|
|
72
72
|
context "with a percent-equals" do
|
73
|
-
|
74
|
-
|
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.
|
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-
|
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
|