polytexnic 0.5.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 +7 -0
- data/.gitignore +37 -0
- data/.pull_requests/1371777257 +0 -0
- data/.pull_requests/1371927975 +0 -0
- data/.pull_requests/1372804345 +0 -0
- data/.pull_requests/1374784075 +0 -0
- data/.pull_requests/1375304853 +0 -0
- data/.pull_requests/1375408308 +0 -0
- data/.pull_requests/1375409462 +0 -0
- data/.pull_requests/1375410668 +0 -0
- data/.pull_requests/1375472132 +0 -0
- data/.pull_requests/1375485496 +0 -0
- data/.pull_requests/1375487548 +0 -0
- data/.pull_requests/1375492835 +0 -0
- data/.pull_requests/1375497765 +0 -0
- data/.pull_requests/1375559547 +0 -0
- data/.pull_requests/1375589063 +0 -0
- data/.pull_requests/1375841786 +0 -0
- data/.pull_requests/1376352634 +0 -0
- data/.pull_requests/1376353299 +0 -0
- data/.pull_requests/1376449284 +0 -0
- data/.pull_requests/1376452696 +0 -0
- data/.pull_requests/1376454166 +0 -0
- data/.pull_requests/1376532291 +0 -0
- data/.pull_requests/1376625487 +0 -0
- data/.pull_requests/1376690108 +0 -0
- data/.pull_requests/1376699046 +0 -0
- data/.pull_requests/1376707642 +0 -0
- data/.pull_requests/1377230284 +0 -0
- data/.pull_requests/1379118478 +0 -0
- data/.pull_requests/1379123150 +0 -0
- data/.pull_requests/1380221847 +0 -0
- data/.pull_requests/1380589654 +0 -0
- data/.pull_requests/1380673142 +0 -0
- data/.pull_requests/1380850800 +0 -0
- data/.pull_requests/1381001264 +0 -0
- data/.pull_requests/1381005204 +0 -0
- data/.pull_requests/1381103022 +0 -0
- data/.pull_requests/1381252832 +0 -0
- data/.pull_requests/1381276624 +0 -0
- data/.pull_requests/1381344234 +0 -0
- data/.pull_requests/1381385297 +0 -0
- data/.pull_requests/1381427498 +0 -0
- data/.pull_requests/1381429761 +0 -0
- data/.pull_requests/1381873684 +0 -0
- data/.pull_requests/1382045490 +0 -0
- data/.pull_requests/1382056384 +0 -0
- data/.pull_requests/1382405223 +0 -0
- data/.pull_requests/1382478400 +0 -0
- data/.pull_requests/1382479780 +0 -0
- data/.pull_requests/1382485483 +0 -0
- data/.pull_requests/1382569911 +0 -0
- data/.pull_requests/1382646199 +0 -0
- data/.pull_requests/1382649778 +0 -0
- data/.pull_requests/1382660987 +0 -0
- data/.pull_requests/1382743927 +0 -0
- data/.pull_requests/1382840347 +0 -0
- data/.pull_requests/1383077676 +0 -0
- data/.pull_requests/1383086948 +0 -0
- data/.pull_requests/1383161978 +0 -0
- data/.pull_requests/1383263695 +0 -0
- data/.pull_requests/1383274008 +0 -0
- data/.pull_requests/1383327328 +0 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +15 -0
- data/Guardfile +15 -0
- data/LICENSE.txt +22 -0
- data/README.md +21 -0
- data/Rakefile +2 -0
- data/lib/polytexnic/literal.rb +299 -0
- data/lib/polytexnic/postprocessor.rb +28 -0
- data/lib/polytexnic/postprocessors/html.rb +1139 -0
- data/lib/polytexnic/postprocessors/latex.rb +18 -0
- data/lib/polytexnic/postprocessors/polytex.rb +44 -0
- data/lib/polytexnic/preprocessor.rb +23 -0
- data/lib/polytexnic/preprocessors/html.rb +349 -0
- data/lib/polytexnic/preprocessors/latex.rb +43 -0
- data/lib/polytexnic/preprocessors/polytex.rb +127 -0
- data/lib/polytexnic/utils.rb +176 -0
- data/lib/polytexnic/version.rb +3 -0
- data/lib/polytexnic.rb +92 -0
- data/notes/pandoc.md +41 -0
- data/polytexnic.gemspec +28 -0
- data/polytexnic_commands.sty +5 -0
- data/precompiled_binaries/tralics +0 -0
- data/spec/fixtures/code_listing.tex +14 -0
- data/spec/fixtures/figures.tex +8 -0
- data/spec/fixtures/inline_math.html +4 -0
- data/spec/fixtures/inline_math.tex +3 -0
- data/spec/fixtures/math_environments.html +50 -0
- data/spec/fixtures/math_environments.tex +56 -0
- data/spec/fixtures/section_xrefs.tex +9 -0
- data/spec/fixtures/sidebar.tex +10 -0
- data/spec/fixtures/tables.tex +8 -0
- data/spec/fixtures/verbatim_environments.html +11 -0
- data/spec/fixtures/verbatim_environments.tex +13 -0
- data/spec/integration_spec.rb +34 -0
- data/spec/markdown_to_polytex_spec.rb +192 -0
- data/spec/resemble_matcher_spec.rb +69 -0
- data/spec/spec_helper.rb +38 -0
- data/spec/support/resemble_matcher.rb +100 -0
- data/spec/to_html/asides_spec.rb +42 -0
- data/spec/to_html/chapters_and_sections_spec.rb +268 -0
- data/spec/to_html/characters_and_punctuation_spec.rb +138 -0
- data/spec/to_html/codelistings_spec.rb +70 -0
- data/spec/to_html/core_spec.rb +227 -0
- data/spec/to_html/eqref_spec.rb +32 -0
- data/spec/to_html/footnote_spec.rb +164 -0
- data/spec/to_html/graphics_and_figures_spec.rb +358 -0
- data/spec/to_html/lists_spec.rb +103 -0
- data/spec/to_html/literal_environments/code_spec.rb +141 -0
- data/spec/to_html/literal_environments/math_spec.rb +255 -0
- data/spec/to_html/literal_environments/unicode_spec.rb +12 -0
- data/spec/to_html/literal_environments/verbatim_spec.rb +168 -0
- data/spec/to_html/quotations_and_verse_spec.rb +86 -0
- data/spec/to_html/table_of_contents_spec.rb +93 -0
- data/spec/to_html/table_spec.rb +269 -0
- data/spec/to_html/text_formatting_spec.rb +50 -0
- data/spec/to_latex_spec.rb +197 -0
- data/tasks/bin/ruby_tests +41 -0
- data/tasks/run_tests_with_both_rubies.rake +5 -0
- data/tmp/.gitkeep +0 -0
- metadata +286 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# encoding=utf-8
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'Polytexnic::Pipeline#to_html' do
|
|
5
|
+
|
|
6
|
+
subject(:processed_text) { Polytexnic::Pipeline.new(polytex).to_html }
|
|
7
|
+
|
|
8
|
+
describe '\chapter' do
|
|
9
|
+
let(:polytex) do <<-'EOS'
|
|
10
|
+
\tableofcontents
|
|
11
|
+
\chapter{Foo}
|
|
12
|
+
\label{cha:foo}
|
|
13
|
+
|
|
14
|
+
\section{Bar}
|
|
15
|
+
\label{sec:bar}
|
|
16
|
+
|
|
17
|
+
\subsection{Baz}
|
|
18
|
+
\label{sec:baz}
|
|
19
|
+
|
|
20
|
+
\subsubsection{Null}
|
|
21
|
+
\label{sec:null}
|
|
22
|
+
|
|
23
|
+
\section{Quux}
|
|
24
|
+
\label{sec:quux}
|
|
25
|
+
|
|
26
|
+
\chapter{Lorem}
|
|
27
|
+
\label{cha:lorem}
|
|
28
|
+
|
|
29
|
+
EOS
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
let(:output) do <<-'EOS'
|
|
33
|
+
<h1 class="contents">Contents</h1>
|
|
34
|
+
<div id="table_of_contents">
|
|
35
|
+
<ul>
|
|
36
|
+
<li class="chapter"><a href="#cha-foo" class="heading hyperref"><span class="number">Chapter 1 </span>Foo</a></li>
|
|
37
|
+
<li>
|
|
38
|
+
<ul>
|
|
39
|
+
<li class="section"><a href="#sec-bar" class="heading hyperref"><span class="number">1.1 </span>Bar</a></li>
|
|
40
|
+
<li>
|
|
41
|
+
<ul>
|
|
42
|
+
<li class="subsection"><a href="#sec-baz" class="heading hyperref"><span class="number">1.1.1 </span>Baz</a></li>
|
|
43
|
+
</ul>
|
|
44
|
+
</li>
|
|
45
|
+
<li class="section">
|
|
46
|
+
<a href="#sec-quux" class="heading hyperref"><span class="number">1.2 </span>Quux</a></li>
|
|
47
|
+
</ul>
|
|
48
|
+
</li>
|
|
49
|
+
<li class="chapter"><a href="#cha-lorem" class="heading hyperref"><span class="number">Chapter 2 </span>Lorem</a></li>
|
|
50
|
+
</ul>
|
|
51
|
+
</div>
|
|
52
|
+
EOS
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it { should resemble output }
|
|
56
|
+
|
|
57
|
+
describe "HTML structure" do
|
|
58
|
+
subject(:toc) do
|
|
59
|
+
Nokogiri::HTML(processed_text).css('div#table_of_contents')
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it { should_not be_empty }
|
|
63
|
+
|
|
64
|
+
it "should have a 'depth' attribute" do
|
|
65
|
+
expect(toc.first['depth']).to be_nil
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should have a link to the first chapter" do
|
|
69
|
+
expect(toc.css('li>a')[0]['href']).to eq '#cha-foo'
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should have a link to the first section" do
|
|
73
|
+
expect(toc.css('li>a')[1]['href']).to eq '#sec-bar'
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "should have a link to the first subsection" do
|
|
77
|
+
expect(toc.css('li>a')[2]['href']).to eq '#sec-baz'
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "should have a link to the second section" do
|
|
81
|
+
expect(toc.css('li>a')[3]['href']).to eq '#sec-quux'
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "should have a link to the second chapter" do
|
|
85
|
+
expect(toc.css('li>a')[4]['href']).to eq '#cha-lorem'
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "should have the right number of lists" do
|
|
89
|
+
expect(toc.css('ul').length).to eq 3
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# encoding=utf-8
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'Polytexnic::Pipeline#to_html' do
|
|
5
|
+
|
|
6
|
+
subject(:processed_text) { Polytexnic::Pipeline.new(polytex).to_html }
|
|
7
|
+
|
|
8
|
+
describe "tabular environments" do
|
|
9
|
+
|
|
10
|
+
context "simple table with centered elements" do
|
|
11
|
+
|
|
12
|
+
let(:polytex) do <<-'EOS'
|
|
13
|
+
\begin{tabular}{cc}
|
|
14
|
+
\hline
|
|
15
|
+
HTTP request & URL \\
|
|
16
|
+
\hline
|
|
17
|
+
GET & /users \\
|
|
18
|
+
GET & /users/1
|
|
19
|
+
\end{tabular}
|
|
20
|
+
EOS
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
let(:output) do <<-'EOS'
|
|
24
|
+
<table class="tabular">
|
|
25
|
+
<tr class="top_border bottom_border"><td class="align_center">HTTP request</td>
|
|
26
|
+
<td class="align_center">URL</td>
|
|
27
|
+
</tr><tr><td class="align_center">GET</td>
|
|
28
|
+
<td class="align_center">/users</td>
|
|
29
|
+
</tr><tr><td class="align_center">GET</td>
|
|
30
|
+
<td class="align_center">/users/1</td>
|
|
31
|
+
</tr></table>
|
|
32
|
+
EOS
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it { should resemble output }
|
|
36
|
+
|
|
37
|
+
context "longtable" do
|
|
38
|
+
|
|
39
|
+
let(:polytex) do <<-'EOS'
|
|
40
|
+
\begin{longtable}{cc}
|
|
41
|
+
\hline
|
|
42
|
+
HTTP request & URL \\
|
|
43
|
+
\hline
|
|
44
|
+
GET & /users \\
|
|
45
|
+
GET & /users/1
|
|
46
|
+
\end{longtable}
|
|
47
|
+
EOS
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it { should resemble output }
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
context "more complicated left-aligned cells with lines" do
|
|
55
|
+
let(:polytex) do <<-'EOS'
|
|
56
|
+
\begin{tabular}{|l|lll|}
|
|
57
|
+
\multicolumn{4}{|c|}{Cell spanning four columns} \\
|
|
58
|
+
HTTP request & URL & Action & Purpose \\ \hline
|
|
59
|
+
|
|
60
|
+
GET & /users & index & page to list all users \\
|
|
61
|
+
GET & /users/1 & show & page to show user with id 1\\
|
|
62
|
+
GET & /users/new & new & page to make a new user \\
|
|
63
|
+
POST & /users & create & create a new user \\
|
|
64
|
+
GET & /users/1/edit & edit & page to edit user with id 1 \\
|
|
65
|
+
PATCH & /users/1 & update & update user with id 1 \\
|
|
66
|
+
DELETE & /users/1 & destroy & delete user with id 1
|
|
67
|
+
\end{tabular}
|
|
68
|
+
EOS
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it do
|
|
72
|
+
should resemble <<-'EOS'
|
|
73
|
+
<table class="tabular">
|
|
74
|
+
|
|
75
|
+
<tr>
|
|
76
|
+
<td colspan="4" class="left_border align_center right_border">Cell spanning four columns</td>
|
|
77
|
+
</tr>
|
|
78
|
+
<tr class="bottom_border">
|
|
79
|
+
<td class="left_border align_left right_border">HTTP request</td>
|
|
80
|
+
<td class="align_left">URL</td>
|
|
81
|
+
<td class="align_left">Action</td>
|
|
82
|
+
<td class="align_left right_border">Purpose</td>
|
|
83
|
+
</tr>
|
|
84
|
+
<tr>
|
|
85
|
+
<td class="left_border align_left right_border">GET</td>
|
|
86
|
+
<td class="align_left">/users</td>
|
|
87
|
+
<td class="align_left">index</td>
|
|
88
|
+
<td class="align_left right_border">page to list all users</td>
|
|
89
|
+
</tr>
|
|
90
|
+
<tr>
|
|
91
|
+
<td class="left_border align_left right_border">GET</td>
|
|
92
|
+
<td class="align_left">/users/1</td>
|
|
93
|
+
<td class="align_left">show</td>
|
|
94
|
+
<td class="align_left right_border">page to show user with id 1</td>
|
|
95
|
+
</tr>
|
|
96
|
+
<tr>
|
|
97
|
+
<td class="left_border align_left right_border">GET</td>
|
|
98
|
+
<td class="align_left">/users/new</td>
|
|
99
|
+
<td class="align_left">new</td>
|
|
100
|
+
<td class="align_left right_border">page to make a new user</td>
|
|
101
|
+
</tr>
|
|
102
|
+
<tr>
|
|
103
|
+
<td class="left_border align_left right_border">POST</td>
|
|
104
|
+
<td class="align_left">/users</td>
|
|
105
|
+
<td class="align_left">create</td>
|
|
106
|
+
<td class="align_left right_border">create a new user</td>
|
|
107
|
+
</tr>
|
|
108
|
+
<tr>
|
|
109
|
+
<td class="left_border align_left right_border">GET</td>
|
|
110
|
+
<td class="align_left">/users/1/edit</td>
|
|
111
|
+
<td class="align_left">edit</td>
|
|
112
|
+
<td class="align_left right_border">page to edit user with id 1</td>
|
|
113
|
+
</tr>
|
|
114
|
+
<tr>
|
|
115
|
+
<td class="left_border align_left right_border">PATCH</td>
|
|
116
|
+
<td class="align_left">/users/1</td>
|
|
117
|
+
<td class="align_left">update</td>
|
|
118
|
+
<td class="align_left right_border">update user with id 1</td>
|
|
119
|
+
</tr>
|
|
120
|
+
<tr>
|
|
121
|
+
<td class="left_border align_left right_border">DELETE</td>
|
|
122
|
+
<td class="align_left">/users/1</td>
|
|
123
|
+
<td class="align_left">destroy</td>
|
|
124
|
+
<td class="align_left right_border">delete user with id 1</td>
|
|
125
|
+
</tr>
|
|
126
|
+
</table>
|
|
127
|
+
EOS
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
context "table whose border used to break for some reason" do
|
|
132
|
+
let(:polytex) do <<-'EOS'
|
|
133
|
+
\begin{tabular}{l|l|ll}
|
|
134
|
+
DELETE & /users/1 & destroy & delete user with id 1
|
|
135
|
+
\end{tabular}
|
|
136
|
+
|
|
137
|
+
\begin{tabular}{|r|l|ll|}
|
|
138
|
+
DELETE & /users/1 & destroy & delete user with id 1
|
|
139
|
+
\end{tabular}
|
|
140
|
+
EOS
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it do
|
|
144
|
+
should resemble <<-'EOS'
|
|
145
|
+
<table class="tabular">
|
|
146
|
+
<tr>
|
|
147
|
+
<td class="align_left right_border">DELETE</td>
|
|
148
|
+
<td class="align_left right_border">/users/1</td>
|
|
149
|
+
<td class="align_left">destroy</td>
|
|
150
|
+
<td class="align_left">delete user with id 1</td>
|
|
151
|
+
</tr>
|
|
152
|
+
</table>
|
|
153
|
+
<table class="tabular">
|
|
154
|
+
<tr>
|
|
155
|
+
<td class="left_border align_right right_border">DELETE</td>
|
|
156
|
+
<td class="align_left right_border">/users/1</td>
|
|
157
|
+
<td class="align_left">destroy</td>
|
|
158
|
+
<td class="align_left right_border">delete user with id 1</td>
|
|
159
|
+
</tr>
|
|
160
|
+
</table>
|
|
161
|
+
EOS
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
describe "table environments" do
|
|
167
|
+
|
|
168
|
+
context "with a label and a cross-reference" do
|
|
169
|
+
let(:polytex) do <<-'EOS'
|
|
170
|
+
\begin{table}
|
|
171
|
+
\begin{tabular}{cc}
|
|
172
|
+
HTTP request & URL \\
|
|
173
|
+
GET & /users \\
|
|
174
|
+
GET & /users/1
|
|
175
|
+
\end{tabular}
|
|
176
|
+
\label{table:foo}
|
|
177
|
+
\end{table}
|
|
178
|
+
|
|
179
|
+
Table~\ref{table:foo}
|
|
180
|
+
EOS
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it do
|
|
184
|
+
should resemble <<-'EOS'
|
|
185
|
+
<div id="table-foo" data-tralics-id="uid1" data-number="1" class="table">
|
|
186
|
+
<table class="tabular"><tr><td class="align_center">HTTP request</td>
|
|
187
|
+
<td class="align_center">URL</td>
|
|
188
|
+
</tr><tr><td class="align_center">GET</td>
|
|
189
|
+
<td class="align_center">/users</td>
|
|
190
|
+
</tr><tr><td class="align_center">GET</td>
|
|
191
|
+
<td class="align_center">/users/1</td>
|
|
192
|
+
</tr></table>
|
|
193
|
+
<div class="caption">
|
|
194
|
+
<span class="header">Table 1</span>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
<p><a href="#table-foo" class="hyperref">Table <span class="ref">1</span></a></p>
|
|
198
|
+
EOS
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
context "with a caption" do
|
|
203
|
+
let(:polytex) do <<-'EOS'
|
|
204
|
+
\begin{table}
|
|
205
|
+
\begin{tabular}{cc}
|
|
206
|
+
HTTP request & URL \\
|
|
207
|
+
GET & /users \\
|
|
208
|
+
GET & /users/1
|
|
209
|
+
\end{tabular}
|
|
210
|
+
\caption{HTTP requests.}
|
|
211
|
+
\end{table}
|
|
212
|
+
EOS
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
it do
|
|
216
|
+
should resemble <<-'EOS'
|
|
217
|
+
<div id="uid1" data-tralics-id="uid1" data-number="1" class="table">
|
|
218
|
+
<table class="tabular"><tr><td class="align_center">HTTP request</td>
|
|
219
|
+
<td class="align_center">URL</td>
|
|
220
|
+
</tr><tr><td class="align_center">GET</td>
|
|
221
|
+
<td class="align_center">/users</td>
|
|
222
|
+
</tr><tr><td class="align_center">GET</td>
|
|
223
|
+
<td class="align_center">/users/1</td>
|
|
224
|
+
</tr></table>
|
|
225
|
+
<div class="caption">
|
|
226
|
+
<span class="header">Table 1:</span>
|
|
227
|
+
<span class="description">HTTP requests.</span>
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
EOS
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
context "with a caption and a label" do
|
|
234
|
+
let(:polytex) do <<-'EOS'
|
|
235
|
+
\begin{table}
|
|
236
|
+
\begin{tabular}{cc}
|
|
237
|
+
HTTP request & URL \\
|
|
238
|
+
GET & /users \\
|
|
239
|
+
GET & /users/1
|
|
240
|
+
\end{tabular}
|
|
241
|
+
\caption{HTTP requests.\label{table:foo}}
|
|
242
|
+
\end{table}
|
|
243
|
+
|
|
244
|
+
Table~\ref{table:foo}
|
|
245
|
+
EOS
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
it do
|
|
249
|
+
should resemble <<-'EOS'
|
|
250
|
+
<div id="table-foo" data-tralics-id="uid1" data-number="1" class="table">
|
|
251
|
+
<table class="tabular"><tr><td class="align_center">HTTP request</td>
|
|
252
|
+
<td class="align_center">URL</td>
|
|
253
|
+
</tr><tr><td class="align_center">GET</td>
|
|
254
|
+
<td class="align_center">/users</td>
|
|
255
|
+
</tr><tr><td class="align_center">GET</td>
|
|
256
|
+
<td class="align_center">/users/1</td>
|
|
257
|
+
</tr></table>
|
|
258
|
+
<div class="caption">
|
|
259
|
+
<span class="header">Table 1: </span>
|
|
260
|
+
<span class="description">HTTP requests.</span>
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
<p><a href="#table-foo" class="hyperref">Table <span class="ref">1</span></a></p>
|
|
264
|
+
EOS
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# encoding=utf-8
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'Polytexnic::Pipeline#to_html' do
|
|
5
|
+
|
|
6
|
+
subject(:processed_text) { Polytexnic::Pipeline.new(polytex).to_html }
|
|
7
|
+
|
|
8
|
+
describe "text formatting" do
|
|
9
|
+
|
|
10
|
+
describe "italics" do
|
|
11
|
+
let(:polytex) { '\emph{foo bar}' }
|
|
12
|
+
it { should resemble '<em>foo bar</em>' }
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
context "multiple instances" do
|
|
16
|
+
let(:polytex) do
|
|
17
|
+
'\emph{foo bar} and also \emph{baz quux}'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it { should resemble '<em>foo bar</em>' }
|
|
21
|
+
it { should resemble '<em>baz quux</em>' }
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "boldface" do
|
|
26
|
+
let(:polytex) { '\textbf{boldface}' }
|
|
27
|
+
it { should resemble '<strong>boldface</strong>' }
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe "small caps" do
|
|
31
|
+
let(:polytex) { '\textsc{small caps}' }
|
|
32
|
+
it { should resemble '<span class="sc">small caps</span>' }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "typewriter text" do
|
|
36
|
+
let(:polytex) { '\texttt{typewriter text}' }
|
|
37
|
+
it { should resemble '<span class="tt">typewriter text</span>' }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe "strikeout text" do
|
|
41
|
+
let(:polytex) { '\sout{foo} bar' }
|
|
42
|
+
it { should resemble '<del>foo</del> bar' }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe "custom kode command" do
|
|
46
|
+
let(:polytex) { '\kode{function\_name}' }
|
|
47
|
+
it { should resemble '<code>function_name</code>' }
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# encoding=utf-8
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe Polytexnic::Pipeline do
|
|
5
|
+
|
|
6
|
+
before(:all) do
|
|
7
|
+
FileUtils.rm('.highlight_cache') if File.exist?('.highlight_cache')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe '#to_latex' do
|
|
11
|
+
subject(:processed_text) { Polytexnic::Pipeline.new(polytex).to_latex }
|
|
12
|
+
|
|
13
|
+
describe "for vanilla LaTeX" do
|
|
14
|
+
let(:polytex) { '\emph{foo}' }
|
|
15
|
+
it { should include(polytex) }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe "with source code highlighting" do
|
|
19
|
+
let(:polytex) do <<-'EOS'
|
|
20
|
+
%= lang:ruby
|
|
21
|
+
\begin{code}
|
|
22
|
+
def hello
|
|
23
|
+
"hello, world!"
|
|
24
|
+
end
|
|
25
|
+
\end{code}
|
|
26
|
+
|
|
27
|
+
Make a code listing as in Listing~\ref{code:hello}.
|
|
28
|
+
|
|
29
|
+
\begin{codelisting}
|
|
30
|
+
\label{code:hello}
|
|
31
|
+
\codecaption{A hello program in Ruby.}
|
|
32
|
+
%= lang:ruby
|
|
33
|
+
\begin{code}
|
|
34
|
+
def hello
|
|
35
|
+
"hello, world!"
|
|
36
|
+
end
|
|
37
|
+
\end{code}
|
|
38
|
+
\end{codelisting}
|
|
39
|
+
|
|
40
|
+
\noindent lorem ipsum
|
|
41
|
+
EOS
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it { should resemble '\begin{framed_shaded}' + "\n" }
|
|
45
|
+
it { should resemble "\n" + '\end{framed_shaded}' }
|
|
46
|
+
it { should_not resemble "\n" + '\end{framed_shaded})' }
|
|
47
|
+
it { should resemble "commandchars=\\\\\\{" }
|
|
48
|
+
it { should resemble '\begin{Verbatim}' }
|
|
49
|
+
it { should resemble 'commandchars' }
|
|
50
|
+
it { should resemble '\end{Verbatim}' }
|
|
51
|
+
it { should_not resemble 'def hello' }
|
|
52
|
+
it { should resemble '\noindent lorem ipsum' }
|
|
53
|
+
|
|
54
|
+
describe "in the middle of a line" do
|
|
55
|
+
let(:polytex) { 'Use \verb+%= lang:ruby+ to highlight Ruby code' }
|
|
56
|
+
it { should resemble '\verb' }
|
|
57
|
+
it { should_not resemble '<div class="highlight">' }
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
context "with the metacode environment" do
|
|
62
|
+
let(:polytex) do <<-'EOS'
|
|
63
|
+
%= lang:latex
|
|
64
|
+
\begin{metacode}
|
|
65
|
+
%= lang:ruby
|
|
66
|
+
\begin{code}
|
|
67
|
+
def foo
|
|
68
|
+
"bar"
|
|
69
|
+
end
|
|
70
|
+
\end{code}
|
|
71
|
+
\end{metacode}
|
|
72
|
+
|
|
73
|
+
\noindent lorem ipsum
|
|
74
|
+
EOS
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it { should resemble '\begin{framed_shaded}' + "\n" }
|
|
78
|
+
it { should resemble "\n" + '\end{framed_shaded}' }
|
|
79
|
+
it { should resemble "commandchars=\\\\\\{" }
|
|
80
|
+
it { should_not resemble '%= lang:ruby' }
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe "verbatim environments" do
|
|
84
|
+
let(:polytex) do <<-'EOS'
|
|
85
|
+
\begin{verbatim}
|
|
86
|
+
def foo
|
|
87
|
+
"bar"
|
|
88
|
+
end
|
|
89
|
+
\end{verbatim}
|
|
90
|
+
|
|
91
|
+
\begin{Verbatim}
|
|
92
|
+
def foo
|
|
93
|
+
"bar"
|
|
94
|
+
end
|
|
95
|
+
\end{Verbatim}
|
|
96
|
+
|
|
97
|
+
\begin{Verbatim}
|
|
98
|
+
x
|
|
99
|
+
\end{equation}
|
|
100
|
+
\end{Verbatim}
|
|
101
|
+
EOS
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it { should resemble polytex }
|
|
105
|
+
|
|
106
|
+
context "containing an example of highlighted code" do
|
|
107
|
+
let(:polytex) do <<-'EOS'
|
|
108
|
+
\begin{verbatim}
|
|
109
|
+
%= lang:ruby
|
|
110
|
+
def foo
|
|
111
|
+
"bar"
|
|
112
|
+
end
|
|
113
|
+
\end{verbatim}
|
|
114
|
+
EOS
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it { should resemble polytex }
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
context "with an equation" do
|
|
121
|
+
let(:polytex) do <<-'EOS'
|
|
122
|
+
\begin{equation}
|
|
123
|
+
\label{eq:x_y}
|
|
124
|
+
x_y
|
|
125
|
+
\end{equation}
|
|
126
|
+
EOS
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it { should resemble polytex }
|
|
130
|
+
it { should_not resemble 'xmlelement' }
|
|
131
|
+
it { should_not resemble 'xbox' }
|
|
132
|
+
it "should have only one '\end{equation}'" do
|
|
133
|
+
n_ends = processed_text.scan(/\\end{equation}/).length
|
|
134
|
+
expect(n_ends).to eq 1
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
describe "hyperref links" do
|
|
140
|
+
let(:polytex) do <<-'EOS'
|
|
141
|
+
Chapter~\ref{cha:foo}
|
|
142
|
+
EOS
|
|
143
|
+
end
|
|
144
|
+
let(:output) { '\hyperref[cha:foo]{Chapter~\ref{cha:foo}' }
|
|
145
|
+
it { should resemble output }
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
describe "asides" do
|
|
149
|
+
|
|
150
|
+
context "with headings and labels" do
|
|
151
|
+
let(:polytex) do <<-'EOS'
|
|
152
|
+
\begin{aside}
|
|
153
|
+
\heading{Foo \emph{are} bar.}
|
|
154
|
+
\label{aside:foo}
|
|
155
|
+
|
|
156
|
+
lorem ipsum
|
|
157
|
+
|
|
158
|
+
\end{aside}
|
|
159
|
+
EOS
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
let(:output) do <<-'EOS'
|
|
163
|
+
\begin{shaded_aside}{Foo \emph{are} bar.}{aside:foo}
|
|
164
|
+
|
|
165
|
+
lorem ipsum
|
|
166
|
+
|
|
167
|
+
\end{shaded_aside}
|
|
168
|
+
EOS
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
it { should resemble output }
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
describe "tables" do
|
|
176
|
+
|
|
177
|
+
let(:polytex) do <<-'EOS'
|
|
178
|
+
\begin{table}
|
|
179
|
+
lorem ipsum
|
|
180
|
+
\end{table}
|
|
181
|
+
EOS
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
let(:output) do <<-'EOS'
|
|
185
|
+
\begin{table}
|
|
186
|
+
\begin{center}
|
|
187
|
+
\small
|
|
188
|
+
lorem ipsum
|
|
189
|
+
\end{center}
|
|
190
|
+
\end{table}
|
|
191
|
+
EOS
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
it { should resemble output }
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
if hash rbenv 2>/dev/null; then
|
|
4
|
+
eval "$(rbenv init -)"
|
|
5
|
+
|
|
6
|
+
echo "Running tests under Ruby 1.9.3"
|
|
7
|
+
rbenv shell 1.9.3-p194
|
|
8
|
+
gem install pivotal-github
|
|
9
|
+
bundle
|
|
10
|
+
rspec spec
|
|
11
|
+
echo "Running tests under Ruby 2.0.0"
|
|
12
|
+
rbenv shell 2.0.0-p0
|
|
13
|
+
gem instsll pivotal-github
|
|
14
|
+
bundle
|
|
15
|
+
rspec spec
|
|
16
|
+
|
|
17
|
+
rbenv shell --unset
|
|
18
|
+
else
|
|
19
|
+
|
|
20
|
+
# Load RVM into a shell session *as a function*
|
|
21
|
+
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
|
|
22
|
+
# First try to load from a user install
|
|
23
|
+
source "$HOME/.rvm/scripts/rvm"
|
|
24
|
+
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
|
|
25
|
+
# Then try to load from a root install
|
|
26
|
+
source "/usr/local/rvm/scripts/rvm"
|
|
27
|
+
else
|
|
28
|
+
printf "ERROR: An RVM installation was not found.\n"
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
echo "Running tests under Ruby 1.9.3"
|
|
32
|
+
rvm use 1.9.3@polytexnic
|
|
33
|
+
gem install pivotal-github
|
|
34
|
+
bundle
|
|
35
|
+
rspec spec
|
|
36
|
+
echo "Running tests under Ruby 2.0.0"
|
|
37
|
+
rvm use 2.0.0@polytexnic
|
|
38
|
+
gem install pivotal-github
|
|
39
|
+
bundle
|
|
40
|
+
rspec spec
|
|
41
|
+
fi
|
data/tmp/.gitkeep
ADDED
|
File without changes
|