review-peg 0.1.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 +36 -0
- data/.rubocop.yml +47 -0
- data/.rubocop_todo.yml +605 -0
- data/.travis.yml +18 -0
- data/COPYING +515 -0
- data/ChangeLog +2449 -0
- data/Dockerfile +22 -0
- data/Gemfile +6 -0
- data/README.rdoc +81 -0
- data/Rakefile +51 -0
- data/bin/review-catalog-converter-peg +129 -0
- data/bin/review-check-peg +169 -0
- data/bin/review-checkdep-peg +63 -0
- data/bin/review-compile-peg +202 -0
- data/bin/review-epubmaker-legacy-peg +1024 -0
- data/bin/review-epubmaker-peg +44 -0
- data/bin/review-index-peg +110 -0
- data/bin/review-init-peg +151 -0
- data/bin/review-pdfmaker-peg +18 -0
- data/bin/review-preproc-peg +131 -0
- data/bin/review-validate-peg +51 -0
- data/bin/review-vol-peg +100 -0
- data/debian/README.Debian +12 -0
- data/debian/README.source +5 -0
- data/debian/changelog +5 -0
- data/debian/compat +1 -0
- data/debian/control +22 -0
- data/debian/copyright +62 -0
- data/debian/docs +6 -0
- data/debian/manpage.1.ex +59 -0
- data/debian/patches/path.diff +91 -0
- data/debian/patches/series +1 -0
- data/debian/review.install +13 -0
- data/debian/review.links +4 -0
- data/debian/rules +13 -0
- data/debian/source/format +1 -0
- data/doc/NEWS.ja.md +350 -0
- data/doc/NEWS.md +354 -0
- data/doc/catalog.ja.md +53 -0
- data/doc/catalog.md +52 -0
- data/doc/format.ja.md +734 -0
- data/doc/format.md +746 -0
- data/doc/format_idg.ja.md +203 -0
- data/doc/quickstart.ja.md +222 -0
- data/doc/quickstart.md +252 -0
- data/doc/ruby-uuid/README +11 -0
- data/doc/ruby-uuid/README.ja +34 -0
- data/doc/sample.css +108 -0
- data/doc/sample.yml +238 -0
- data/lib/epubmaker.rb +24 -0
- data/lib/epubmaker/content.rb +93 -0
- data/lib/epubmaker/epubcommon.rb +424 -0
- data/lib/epubmaker/epubv2.rb +139 -0
- data/lib/epubmaker/epubv3.rb +222 -0
- data/lib/epubmaker/producer.rb +330 -0
- data/lib/lineinput.rb +107 -0
- data/lib/review.rb +3 -0
- data/lib/review/book.rb +43 -0
- data/lib/review/book/base.rb +401 -0
- data/lib/review/book/chapter.rb +100 -0
- data/lib/review/book/compilable.rb +184 -0
- data/lib/review/book/image_finder.rb +71 -0
- data/lib/review/book/index.rb +413 -0
- data/lib/review/book/page_metric.rb +47 -0
- data/lib/review/book/part.rb +54 -0
- data/lib/review/book/volume.rb +67 -0
- data/lib/review/builder.rb +452 -0
- data/lib/review/catalog.rb +52 -0
- data/lib/review/compiler.rb +5183 -0
- data/lib/review/compiler/literals_1_9.kpeg +22 -0
- data/lib/review/compiler/literals_1_9.rb +435 -0
- data/lib/review/configure.rb +64 -0
- data/lib/review/epubbuilder.rb +18 -0
- data/lib/review/epubmaker.rb +480 -0
- data/lib/review/ewbbuilder.rb +381 -0
- data/lib/review/exception.rb +21 -0
- data/lib/review/extentions.rb +4 -0
- data/lib/review/extentions/array.rb +25 -0
- data/lib/review/extentions/object.rb +9 -0
- data/lib/review/extentions/string.rb +33 -0
- data/lib/review/htmlbuilder.rb +1166 -0
- data/lib/review/htmllayout.rb +41 -0
- data/lib/review/htmltoc.rb +45 -0
- data/lib/review/htmlutils.rb +90 -0
- data/lib/review/i18n.rb +96 -0
- data/lib/review/i18n.yml +169 -0
- data/lib/review/idgxmlbuilder.rb +1233 -0
- data/lib/review/inaobuilder.rb +357 -0
- data/lib/review/latexbuilder.rb +941 -0
- data/lib/review/latexindex.rb +35 -0
- data/lib/review/latexutils.rb +95 -0
- data/lib/review/layout.tex.erb +340 -0
- data/lib/review/lineinput.rb +17 -0
- data/lib/review/location.rb +24 -0
- data/lib/review/makerhelper.rb +67 -0
- data/lib/review/markdownbuilder.rb +339 -0
- data/lib/review/node.rb +288 -0
- data/lib/review/pdfmaker.rb +332 -0
- data/lib/review/preprocessor.rb +530 -0
- data/lib/review/review.kpeg +745 -0
- data/lib/review/sec_counter.rb +69 -0
- data/lib/review/template.rb +21 -0
- data/lib/review/textbuilder.rb +17 -0
- data/lib/review/textutils.rb +16 -0
- data/lib/review/tocparser.rb +348 -0
- data/lib/review/tocprinter.rb +205 -0
- data/lib/review/topbuilder.rb +796 -0
- data/lib/review/unfold.rb +138 -0
- data/lib/review/version.rb +3 -0
- data/lib/uuid.rb +312 -0
- data/review.gemspec +32 -0
- data/templates/html/layout-html5.html.erb +17 -0
- data/templates/html/layout-xhtml1.html.erb +20 -0
- data/templates/ncx/epubv2.ncx.erb +11 -0
- data/templates/opf/epubv2.opf.erb +21 -0
- data/templates/opf/epubv3.opf.erb +18 -0
- data/templates/xml/container.xml.erb +6 -0
- data/test/CHAPS +2 -0
- data/test/assets/test.xml.erb +3 -0
- data/test/assets/test_template.tex +255 -0
- data/test/assets/test_template_backmatter.tex +32 -0
- data/test/bib.re +13 -0
- data/test/book_test_helper.rb +35 -0
- data/test/sample-book/README.md +7 -0
- data/test/sample-book/src/Rakefile +58 -0
- data/test/sample-book/src/_cover.html +3 -0
- data/test/sample-book/src/catalog.yml +10 -0
- data/test/sample-book/src/ch01.re +71 -0
- data/test/sample-book/src/ch02.re +3 -0
- data/test/sample-book/src/config.yml +186 -0
- data/test/sample-book/src/images/ch01-imgsample.jpg +0 -0
- data/test/sample-book/src/images/cover.jpg +0 -0
- data/test/sample-book/src/preface.re +15 -0
- data/test/sample-book/src/sty/jumoline.sty +310 -0
- data/test/sample-book/src/sty/reviewmacro.sty +39 -0
- data/test/sample-book/src/style.css +251 -0
- data/test/sample-book/src/vendor/jumoline/README +29 -0
- data/test/sample-book/src/vendor/jumoline/jumoline.dtx +2988 -0
- data/test/sample-book/src/vendor/jumoline/jumoline.ins +6 -0
- data/test/test.re +43 -0
- data/test/test_book.rb +556 -0
- data/test/test_book_chapter.rb +280 -0
- data/test/test_book_part.rb +54 -0
- data/test/test_builder.rb +80 -0
- data/test/test_catalog.rb +119 -0
- data/test/test_catalog_converter_cmd.rb +73 -0
- data/test/test_compiler.rb +92 -0
- data/test/test_configure.rb +50 -0
- data/test/test_epub3maker.rb +529 -0
- data/test/test_epubmaker.rb +569 -0
- data/test/test_epubmaker_cmd.rb +40 -0
- data/test/test_helper.rb +92 -0
- data/test/test_htmlbuilder.rb +1114 -0
- data/test/test_htmltoc.rb +32 -0
- data/test/test_htmlutils.rb +50 -0
- data/test/test_i18n.rb +180 -0
- data/test/test_idgxmlbuilder.rb +608 -0
- data/test/test_image_finder.rb +82 -0
- data/test/test_inaobuilder.rb +245 -0
- data/test/test_index.rb +174 -0
- data/test/test_latexbuilder.rb +732 -0
- data/test/test_lineinput.rb +182 -0
- data/test/test_makerhelper.rb +66 -0
- data/test/test_markdownbuilder.rb +125 -0
- data/test/test_pdfmaker.rb +171 -0
- data/test/test_pdfmaker_cmd.rb +40 -0
- data/test/test_preprocessor.rb +23 -0
- data/test/test_review_ext.rb +31 -0
- data/test/test_template.rb +26 -0
- data/test/test_textutils.rb +32 -0
- data/test/test_topbuilder.rb +291 -0
- data/test/test_uuid.rb +157 -0
- metadata +357 -0
@@ -0,0 +1,732 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'test_helper'
|
3
|
+
require 'review/book'
|
4
|
+
require 'review/compiler'
|
5
|
+
require 'review/latexbuilder'
|
6
|
+
require 'review/i18n'
|
7
|
+
|
8
|
+
class LATEXBuidlerTest < Test::Unit::TestCase
|
9
|
+
include ReVIEW
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@builder = LATEXBuilder.new()
|
13
|
+
@config = ReVIEW::Configure.values
|
14
|
+
@config.merge!( {
|
15
|
+
"secnolevel" => 2, # for IDGXMLBuilder, EPUBBuilder
|
16
|
+
"toclevel" => 2,
|
17
|
+
"stylesheet" => nil, # for EPUBBuilder
|
18
|
+
})
|
19
|
+
@book = Book::Base.new(nil)
|
20
|
+
@book.config = @config
|
21
|
+
@compiler = ReVIEW::Compiler.new(@builder)
|
22
|
+
@chapter = Book::Chapter.new(@book, 1, 'chap1', nil, StringIO.new)
|
23
|
+
location = Location.new(nil, nil)
|
24
|
+
@builder.bind(@compiler, @chapter, location)
|
25
|
+
I18n.setup("ja")
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_headline_level1
|
29
|
+
actual = compile_block("={test} this is test.\n")
|
30
|
+
assert_equal %Q|\\chapter{this is test.}\n\\label{chap:chap1}\n|, actual
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_headline_level1_without_secno
|
34
|
+
@config["secnolevel"] = 0
|
35
|
+
actual = compile_block("={test} this is test.\n")
|
36
|
+
assert_equal %Q|\\chapter*{this is test.}\n\\addcontentsline{toc}{chapter}{this is test.}\n\\label{chap:chap1}\n|, actual
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_headline_level1_with_inlinetag
|
40
|
+
actual = compile_block("={test} this @<b>{is} test.<&\"_>\n")
|
41
|
+
assert_equal %Q|\\chapter{this \\textbf{is} test.\\textless{}\\&\"\\textunderscore{}\\textgreater{}}\n\\label{chap:chap1}\n|, actual
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_headline_level2
|
45
|
+
actual = compile_block("=={test} this is test.\n")
|
46
|
+
assert_equal %Q|\\section{this is test.}\n\\label{sec:1-1}\n|, actual
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_headline_level3
|
50
|
+
actual = compile_block("==={test} this is test.\n")
|
51
|
+
assert_equal %Q|\\subsection*{this is test.}\n\\label{sec:1-0-1}\n|, actual
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
def test_headline_level3_with_secno
|
56
|
+
@config["secnolevel"] = 3
|
57
|
+
actual = compile_block("==={test} this is test.\n")
|
58
|
+
assert_equal %Q|\\subsection{this is test.}\n\\label{sec:1-0-1}\n|, actual
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_label
|
62
|
+
actual = compile_block("//label[label_test]\n")
|
63
|
+
assert_equal %Q|\\label{label_test}\n|, actual
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_href
|
67
|
+
actual = compile_inline("@<href>{http://github.com,GitHub}")
|
68
|
+
assert_equal %Q|\\href{http://github.com}{GitHub}|, actual
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_inline_href
|
72
|
+
actual = compile_inline('@<href>{http://github.com,Git\\,Hub}')
|
73
|
+
assert_equal %Q|\\href{http://github.com}{Git,Hub}|, actual
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_href_without_label
|
77
|
+
actual = compile_inline('@<href>{http://github.com}')
|
78
|
+
assert_equal %Q|\\url{http://github.com}|, actual
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_href_with_underscore
|
82
|
+
actual = compile_inline('@<href>{http://example.com/aaa/bbb, AAA_BBB}')
|
83
|
+
assert_equal %Q|\\href{http://example.com/aaa/bbb}{AAA\\textunderscore{}BBB}|, actual
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_href_mailto
|
87
|
+
actual = compile_inline('@<href>{mailto:takahashim@example.com, takahashim@example.com}')
|
88
|
+
assert_equal %Q|\\href{mailto:takahashim@example.com}{takahashim@example.com}|, actual
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_inline_br
|
92
|
+
actual = compile_inline("@<br>{}")
|
93
|
+
assert_equal %Q|\\\\\n|, actual
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_inline_br_with_other_strings
|
97
|
+
actual = compile_inline("abc@<br>{}def")
|
98
|
+
assert_equal %Q|abc\\\\\ndef|, actual
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_inline_i
|
102
|
+
actual = compile_inline("abc@<i>{def}ghi")
|
103
|
+
assert_equal %Q|abc\\textit{def}ghi|, actual
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_inline_i_and_escape
|
107
|
+
actual = compile_inline("test @<i>{inline<&;\\ test} test2")
|
108
|
+
assert_equal %Q|test \\textit{inline\\textless{}\\&;\\reviewbackslash{} test} test2|, actual
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_inline_dtp
|
112
|
+
actual = compile_inline("abc@<dtp>{def}ghi")
|
113
|
+
assert_equal %Q|abcghi|, actual
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_inline_code
|
117
|
+
actual = compile_inline("abc@<code>{def}ghi")
|
118
|
+
assert_equal %Q|abc\\texttt{def}ghi|, actual
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_inline_raw
|
122
|
+
actual = compile_inline("@<raw>{@<tt>{inline!$%\\}}")
|
123
|
+
assert_equal "@<tt>{inline!$%}", actual
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_inline_sup
|
127
|
+
actual = compile_inline("abc@<sup>{def}")
|
128
|
+
assert_equal %Q|abc\\textsuperscript{def}|, actual
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_inline_sub
|
132
|
+
actual = compile_inline("abc@<sub>{def}")
|
133
|
+
assert_equal %Q|abc\\textsubscript{def}|, actual
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_inline_b
|
137
|
+
actual = compile_inline("abc@<b>{def}")
|
138
|
+
assert_equal %Q|abc\\textbf{def}|, actual
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_inline_b_and_escape
|
142
|
+
actual = compile_inline("test @<b>{inline<&;\\ test} test2")
|
143
|
+
assert_equal %Q|test \\textbf{inline\\textless{}\\&;\\reviewbackslash{} test} test2|, actual
|
144
|
+
end
|
145
|
+
def test_inline_em
|
146
|
+
actual = compile_inline("abc@<em>{def}")
|
147
|
+
assert_equal %Q|abc\\reviewem{def}|, actual
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_inline_strong
|
151
|
+
actual = compile_inline("abc@<strong>{def}")
|
152
|
+
assert_equal %Q|abc\\reviewstrong{def}|, actual
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_inline_u
|
156
|
+
actual = compile_inline("abc@<u>{def}ghi")
|
157
|
+
assert_equal %Q|abc\\Underline{def}ghi|, actual
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_inline_m
|
161
|
+
actual = compile_inline("abc@<m>{\\alpha^n = \inf < 2}ghi")
|
162
|
+
assert_equal "abc $\\alpha^n = inf < 2$ ghi", actual
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_inline_tt
|
166
|
+
actual = compile_inline("test @<tt>{inline test} test2")
|
167
|
+
assert_equal %Q|test \\texttt{inline test} test2|, actual
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_inline_tt_endash
|
171
|
+
actual = compile_inline("test @<tt>{in-line --test ---foo ----bar -----buz} --test2")
|
172
|
+
assert_equal %Q|test \\texttt{in{-}line {-}{-}test {-}{-}{-}foo {-}{-}{-}{-}bar {-}{-}{-}{-}{-}buz} {-}{-}test2|, actual
|
173
|
+
end
|
174
|
+
|
175
|
+
def test_inline_tti
|
176
|
+
actual = compile_inline("test @<tti>{inline test} test2")
|
177
|
+
assert_equal %Q|test \\texttt{\\textit{inline test}} test2|, actual
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_inline_ttb
|
181
|
+
actual = compile_inline("test @<ttb>{inline test} test2")
|
182
|
+
assert_equal %Q|test \\texttt{\\textbf{inline test}} test2|, actual
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_inline_hd_chap
|
186
|
+
def @chapter.headline_index
|
187
|
+
items = [Book::HeadlineIndex::Item.new("chap1|test", [1, 1], "te_st")]
|
188
|
+
Book::HeadlineIndex.new(items, self)
|
189
|
+
end
|
190
|
+
|
191
|
+
@config["secnolevel"] = 3
|
192
|
+
actual = compile_inline("test @<hd>{chap1|test} test2")
|
193
|
+
assert_equal %Q|test 「1.1.1 te\\textunderscore{}st」 test2|, actual
|
194
|
+
end
|
195
|
+
|
196
|
+
def test_inline_ruby_comma
|
197
|
+
actual = compile_inline("@<ruby>{foo\\, bar\\, buz,フー・バー・バズ}")
|
198
|
+
assert_equal "\\ruby{foo, bar, buz}{フー・バー・バズ}", actual
|
199
|
+
end
|
200
|
+
|
201
|
+
def test_inline_uchar
|
202
|
+
actual = compile_inline("test @<uchar>{2460} test2")
|
203
|
+
assert_equal %Q|test \\UTF{2460} test2|, actual
|
204
|
+
end
|
205
|
+
|
206
|
+
def test_inline_idx
|
207
|
+
actual = compile_inline("@<idx>{__TEST%$}, @<hidx>{__TEST%$}")
|
208
|
+
assert_equal %Q|\\textunderscore{}\\textunderscore{}TEST\\%\\textdollar{}\\index{__TEST%$}, \\index{__TEST%$}|, actual
|
209
|
+
end
|
210
|
+
|
211
|
+
def test_jis_x_0201_kana
|
212
|
+
actual = compile_inline("foo・カンジ、テスト")
|
213
|
+
assert_equal %Q|foo\\aj半角{・}\\aj半角{カ}\\aj半角{ン}\\aj半角{シ}\\aj半角{゛}\\aj半角{、}テスト|, actual
|
214
|
+
end
|
215
|
+
|
216
|
+
def test_dlist
|
217
|
+
actual = compile_block(": foo\n foo.\n bar.\n")
|
218
|
+
assert_equal %Q|\n\\begin{description}\n\\item[foo] \\mbox{} \\\\\nfoo.bar.\n\\end{description}\n|, actual
|
219
|
+
end
|
220
|
+
|
221
|
+
def test_dlist_with_bracket
|
222
|
+
actual = compile_block(": foo[bar]\n foo.\n bar.\n")
|
223
|
+
assert_equal %Q|\n\\begin{description}\n\\item[foo\\lbrack{}bar\\rbrack{}] \\mbox{} \\\\\nfoo.bar.\n\\end{description}\n|, actual
|
224
|
+
end
|
225
|
+
|
226
|
+
def test_cmd
|
227
|
+
actual = compile_block("//cmd{\nfoo\nbar\n\nbuz\n//}\n")
|
228
|
+
assert_equal %Q|\n\\begin{reviewcmd}\nfoo\nbar\n\nbuz\n\\end{reviewcmd}\n|, actual
|
229
|
+
end
|
230
|
+
|
231
|
+
def test_cmd_caption
|
232
|
+
actual = compile_block("//cmd[cap1]{\nfoo\nbar\n\nbuz\n//}\n")
|
233
|
+
assert_equal %Q|\n\\reviewcmdcaption{cap1}\n\\begin{reviewcmd}\nfoo\nbar\n\nbuz\n\\end{reviewcmd}\n|, actual
|
234
|
+
end
|
235
|
+
|
236
|
+
def test_cmd_lst
|
237
|
+
@book.config["highlight"] = {}
|
238
|
+
@book.config["highlight"]["latex"] = "listings"
|
239
|
+
actual = compile_block("//cmd{\nfoo\nbar\n\nbuz\n//}\n")
|
240
|
+
assert_equal %Q|\\vspace{-1.5em}\\begin{reviewcmdlst}[title={\\relax},language={}]\nfoo\nbar\n\nbuz\n\\end{reviewcmdlst}\n|, actual
|
241
|
+
end
|
242
|
+
|
243
|
+
def test_emlist
|
244
|
+
actual = compile_block("//emlist{\nfoo\nbar\n\nbuz\n//}\n")
|
245
|
+
assert_equal %Q|\n\\begin{reviewemlist}\nfoo\nbar\n\nbuz\n\\end{reviewemlist}\n|, actual
|
246
|
+
end
|
247
|
+
|
248
|
+
def test_emlist_lst
|
249
|
+
@book.config["highlight"] = {}
|
250
|
+
@book.config["highlight"]["latex"] = "listings"
|
251
|
+
actual = compile_block("//emlist[][sql]{\nSELECT COUNT(*) FROM tests WHERE tests.no > 10 AND test.name LIKE 'ABC%'\n//}\n")
|
252
|
+
assert_equal %Q|\n\\vspace{-1.5em}\\begin{reviewemlistlst}[title={\\relax},language={sql}]\nSELECT COUNT(*) FROM tests WHERE tests.no > 10 AND test.name LIKE 'ABC%'\n\\end{reviewemlistlst}\n|, actual
|
253
|
+
end
|
254
|
+
|
255
|
+
def test_emlist_lst_without_lang
|
256
|
+
@book.config["highlight"] = {}
|
257
|
+
@book.config["highlight"]["latex"] = "listings"
|
258
|
+
@book.config["highlight"]["lang"] = "sql"
|
259
|
+
actual = compile_block("//emlist[]{\nSELECT COUNT(*) FROM tests WHERE tests.no > 10 AND test.name LIKE 'ABC%'\n//}\n")
|
260
|
+
assert_equal %Q|\n\\vspace{-1.5em}\\begin{reviewemlistlst}[title={\\relax},language={sql}]\nSELECT COUNT(*) FROM tests WHERE tests.no > 10 AND test.name LIKE 'ABC%'\n\\end{reviewemlistlst}\n|, actual
|
261
|
+
end
|
262
|
+
|
263
|
+
|
264
|
+
def test_emlist_caption
|
265
|
+
actual = compile_block("//emlist[cap1]{\nfoo\nbar\n\nbuz\n//}\n")
|
266
|
+
assert_equal %Q|\n\\reviewemlistcaption{cap1}\n\\begin{reviewemlist}\nfoo\nbar\n\nbuz\n\\end{reviewemlist}\n|, actual
|
267
|
+
end
|
268
|
+
|
269
|
+
def test_emlist_with_tab
|
270
|
+
actual = compile_block("//emlist{\n\tfoo\n\t\tbar\n\n\tbuz\n//}\n")
|
271
|
+
assert_equal %Q|\n\\begin{reviewemlist}\n foo\n bar\n\n buz\n\\end{reviewemlist}\n|, actual
|
272
|
+
end
|
273
|
+
|
274
|
+
def test_emlist_with_tab4
|
275
|
+
@config["tabwidth"] = 4
|
276
|
+
actual = compile_block("//emlist{\n\tfoo\n\t\tbar\n\n\tbuz\n//}\n")
|
277
|
+
assert_equal %Q|\n\\begin{reviewemlist}\n foo\n bar\n\n buz\n\\end{reviewemlist}\n|, actual
|
278
|
+
end
|
279
|
+
|
280
|
+
def test_listnum
|
281
|
+
actual = compile_block("//listnum[test1][ruby]{\nclass Foo\n def foo\n bar\n\n buz\n end\nend\n//}\n")
|
282
|
+
assert_equal %Q|\\reviewlistcaption{リスト1.1: ruby}\n\\reviewlistcaption{ruby}\n\\begin{reviewlist}\n 1: class Foo\n 2: def foo\n 3: bar\n 4: \n 5: buz\n 6: end\n 7: end\n\\end{reviewlist}\n|, actual
|
283
|
+
end
|
284
|
+
|
285
|
+
def test_listnum_lst
|
286
|
+
@book.config["highlight"] = {}
|
287
|
+
@book.config["highlight"]["latex"] = "listings"
|
288
|
+
actual = compile_block("//listnum[test1][ruby]{\nclass Foo\n def foo\n bar\n\n buz\n end\nend\n//}\n")
|
289
|
+
assert_equal %Q|\\begin{reviewlistnumlst}[caption={ruby},language={}]\nclass Foo\n def foo\n bar\n\n buz\n end\nend\n\\end{reviewlistnumlst}\n|, actual
|
290
|
+
end
|
291
|
+
|
292
|
+
def test_quote
|
293
|
+
actual = compile_block("//quote{\nfoo\nbar\n\nbuz\n//}\n")
|
294
|
+
assert_equal %Q|\n\\begin{quote}\nfoobar\n\nbuz\n\\end{quote}\n|, actual
|
295
|
+
end
|
296
|
+
|
297
|
+
def test_memo
|
298
|
+
actual = compile_block("//memo[this is @<b>{test}<&>_]{\ntest1\n\ntest@<i>{2}\n//}\n")
|
299
|
+
assert_equal %Q|\\begin{reviewminicolumn}\n\\reviewminicolumntitle{this is \\textbf{test}\\textless{}\\&\\textgreater{}\\textunderscore{}}\ntest1\n\ntest\\textit{2}\n\\end{reviewminicolumn}\n|, actual
|
300
|
+
end
|
301
|
+
|
302
|
+
def test_flushright
|
303
|
+
actual = compile_block("//flushright{\nfoo\nbar\n\nbuz\n//}\n")
|
304
|
+
assert_equal %Q|\n\\begin{flushright}\nfoobar\n\nbuz\n\\end{flushright}\n|, actual
|
305
|
+
end
|
306
|
+
|
307
|
+
def test_centering
|
308
|
+
actual = compile_block("//centering{\nfoo\nbar\n\nbuz\n//}\n")
|
309
|
+
assert_equal %Q|\n\\begin{center}\nfoobar\n\nbuz\n\\end{center}\n|, actual
|
310
|
+
end
|
311
|
+
|
312
|
+
def test_noindent
|
313
|
+
actual = compile_block("//noindent\nfoo\nbar\n\nfoo2\nbar2\n")
|
314
|
+
assert_equal %Q|\\noindent\nfoobar\n\nfoo2bar2\n|, actual
|
315
|
+
end
|
316
|
+
|
317
|
+
def test_image
|
318
|
+
def @chapter.image(id)
|
319
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
320
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
321
|
+
item
|
322
|
+
end
|
323
|
+
|
324
|
+
actual = compile_block("//image[sampleimg][sample photo]{\n//}\n")
|
325
|
+
assert_equal %Q|\\begin{reviewimage}\n\\includegraphics[width=\\maxwidth]{./images/chap1-sampleimg.png}\n\\caption{sample photo}\n\\label{image:chap1:sampleimg}\n\\end{reviewimage}\n|, actual
|
326
|
+
end
|
327
|
+
|
328
|
+
def test_image_with_metric
|
329
|
+
def @chapter.image(id)
|
330
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
331
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
332
|
+
item
|
333
|
+
end
|
334
|
+
|
335
|
+
actual = compile_block("//image[sampleimg][sample photo][scale=1.2]{\n//}\n")
|
336
|
+
assert_equal %Q|\\begin{reviewimage}\n\\includegraphics[scale=1.2]{./images/chap1-sampleimg.png}\n\\caption{sample photo}\n\\label{image:chap1:sampleimg}\n\\end{reviewimage}\n|, actual
|
337
|
+
end
|
338
|
+
|
339
|
+
def test_image_with_metric2
|
340
|
+
def @chapter.image(id)
|
341
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
342
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
343
|
+
item
|
344
|
+
end
|
345
|
+
|
346
|
+
actual = compile_block("//image[sampleimg][sample photo][scale=1.2,html::class=sample,latex::ignore=params]{\n//}\n")
|
347
|
+
assert_equal %Q|\\begin{reviewimage}\n\\includegraphics[scale=1.2,ignore=params]{./images/chap1-sampleimg.png}\n\\caption{sample photo}\n\\label{image:chap1:sampleimg}\n\\end{reviewimage}\n|, actual
|
348
|
+
end
|
349
|
+
|
350
|
+
def test_indepimage
|
351
|
+
def @chapter.image(id)
|
352
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
353
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
354
|
+
item
|
355
|
+
end
|
356
|
+
|
357
|
+
actual = compile_block("//indepimage[sampleimg][sample photo]\n")
|
358
|
+
assert_equal %Q|\\begin{reviewimage}\n\\includegraphics[width=\\maxwidth]{./images/chap1-sampleimg.png}\n\\reviewindepimagecaption{図: sample photo}\n\\end{reviewimage}\n|, actual
|
359
|
+
end
|
360
|
+
|
361
|
+
def test_indepimage_esc
|
362
|
+
def @chapter.image(id)
|
363
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
364
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
365
|
+
item
|
366
|
+
end
|
367
|
+
|
368
|
+
actual = compile_block("//indepimage[sean_2_10][sample photo][]\n")
|
369
|
+
assert_equal %Q|\\begin{reviewimage}\n\\includegraphics[width=\\maxwidth]{./images/chap1-sampleimg.png}\n\\reviewindepimagecaption{図: sample photo}\n\\end{reviewimage}\n|, actual
|
370
|
+
end
|
371
|
+
|
372
|
+
def test_indepimage_without_caption
|
373
|
+
def @chapter.image(id)
|
374
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
375
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
376
|
+
item
|
377
|
+
end
|
378
|
+
|
379
|
+
# FIXME: indepimage's caption should not be with a counter.
|
380
|
+
actual = compile_block("//indepimage[sampleimg]\n")
|
381
|
+
assert_equal %Q|\\begin{reviewimage}\n\\includegraphics[width=\\maxwidth]{./images/chap1-sampleimg.png}\n\\end{reviewimage}\n|, actual
|
382
|
+
end
|
383
|
+
|
384
|
+
def test_indepimage_with_metric
|
385
|
+
def @chapter.image(id)
|
386
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
387
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
388
|
+
item
|
389
|
+
end
|
390
|
+
|
391
|
+
actual = compile_block("//indepimage[sampleimg][sample photo][scale=1.2]\n")
|
392
|
+
assert_equal %Q|\\begin{reviewimage}\n\\includegraphics[scale=1.2]{./images/chap1-sampleimg.png}\n\\reviewindepimagecaption{図: sample photo}\n\\end{reviewimage}\n|, actual
|
393
|
+
end
|
394
|
+
|
395
|
+
def test_indepimage_with_metric2
|
396
|
+
def @chapter.image(id)
|
397
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
398
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
399
|
+
item
|
400
|
+
end
|
401
|
+
|
402
|
+
actual = compile_block("//indepimage[sampleimg][sample photo][scale=1.2, html::class=\"sample\",latex::ignore=params]\n")
|
403
|
+
assert_equal %Q|\\begin{reviewimage}\n\\includegraphics[scale=1.2,ignore=params]{./images/chap1-sampleimg.png}\n\\reviewindepimagecaption{図: sample photo}\n\\end{reviewimage}\n|, actual
|
404
|
+
end
|
405
|
+
|
406
|
+
def test_indepimage_without_caption_but_with_metric
|
407
|
+
def @chapter.image(id)
|
408
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
409
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
410
|
+
item
|
411
|
+
end
|
412
|
+
|
413
|
+
# FIXME: indepimage's caption should not be with a counter.
|
414
|
+
actual = compile_block("//indepimage[sampleimg][][scale=1.2]\n")
|
415
|
+
assert_equal %Q|\\begin{reviewimage}\n\\includegraphics[scale=1.2]{./images/chap1-sampleimg.png}\n\\end{reviewimage}\n|, actual
|
416
|
+
end
|
417
|
+
|
418
|
+
def test_bib
|
419
|
+
def @chapter.bibpaper(id)
|
420
|
+
Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
|
421
|
+
end
|
422
|
+
|
423
|
+
assert_equal "\\reviewbibref{[1]}{bib:samplebib}", compile_inline("@<bib>{samplebib}")
|
424
|
+
end
|
425
|
+
|
426
|
+
def test_bibpaper
|
427
|
+
def @chapter.bibpaper(id)
|
428
|
+
Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
|
429
|
+
end
|
430
|
+
|
431
|
+
actual = compile_block("//bibpaper[samplebib][sample bib @<b>{bold}]{\na\nb\n//}\n")
|
432
|
+
assert_equal %Q|[1] sample bib \\textbf{bold}\n\\label{bib:samplebib}\n\nab\n\n|, actual
|
433
|
+
end
|
434
|
+
|
435
|
+
def test_bibpaper_without_body
|
436
|
+
def @chapter.bibpaper(id)
|
437
|
+
Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
|
438
|
+
end
|
439
|
+
|
440
|
+
actual = compile_block("//bibpaper[samplebib][sample bib]\n")
|
441
|
+
assert_equal %Q|[1] sample bib\n\\label{bib:samplebib}\n\n|, actual
|
442
|
+
end
|
443
|
+
|
444
|
+
def column_helper(review)
|
445
|
+
compile_block(review)
|
446
|
+
end
|
447
|
+
|
448
|
+
def test_column_1
|
449
|
+
review =<<-EOS
|
450
|
+
===[column] prev column
|
451
|
+
|
452
|
+
inside prev column
|
453
|
+
|
454
|
+
===[column] test
|
455
|
+
|
456
|
+
inside column
|
457
|
+
|
458
|
+
===[/column]
|
459
|
+
EOS
|
460
|
+
expected =<<-EOS
|
461
|
+
|
462
|
+
\\begin{reviewcolumn}
|
463
|
+
\\hypertarget{column:chap1:1}{}
|
464
|
+
\\reviewcolumnhead{}{prev column}
|
465
|
+
\\addcontentsline{toc}{subsection}{prev column}
|
466
|
+
|
467
|
+
inside prev column
|
468
|
+
\\end{reviewcolumn}
|
469
|
+
|
470
|
+
\\begin{reviewcolumn}
|
471
|
+
\\hypertarget{column:chap1:2}{}
|
472
|
+
\\reviewcolumnhead{}{test}
|
473
|
+
\\addcontentsline{toc}{subsection}{test}
|
474
|
+
|
475
|
+
inside column
|
476
|
+
\\end{reviewcolumn}
|
477
|
+
EOS
|
478
|
+
@config["toclevel"] = 3
|
479
|
+
assert_equal expected, column_helper(review)
|
480
|
+
end
|
481
|
+
|
482
|
+
def test_column_2
|
483
|
+
review =<<-EOS
|
484
|
+
===[column] test
|
485
|
+
|
486
|
+
inside column
|
487
|
+
|
488
|
+
=== next level
|
489
|
+
EOS
|
490
|
+
expected =<<-EOS
|
491
|
+
|
492
|
+
\\begin{reviewcolumn}
|
493
|
+
\\hypertarget{column:chap1:1}{}
|
494
|
+
\\reviewcolumnhead{}{test}
|
495
|
+
|
496
|
+
inside column
|
497
|
+
\\end{reviewcolumn}
|
498
|
+
\\subsection*{next level}
|
499
|
+
\\label{sec:1-0-1}
|
500
|
+
EOS
|
501
|
+
|
502
|
+
@config["toclevel"] = 1
|
503
|
+
assert_equal expected, column_helper(review)
|
504
|
+
end
|
505
|
+
|
506
|
+
def test_column_3
|
507
|
+
review =<<-EOS
|
508
|
+
===[column] test
|
509
|
+
|
510
|
+
inside column
|
511
|
+
|
512
|
+
===[/column_dummy]
|
513
|
+
EOS
|
514
|
+
assert_raise(ReVIEW::CompileError) do
|
515
|
+
column_helper(review)
|
516
|
+
end
|
517
|
+
end
|
518
|
+
|
519
|
+
def test_ul
|
520
|
+
src =<<-EOS
|
521
|
+
* AAA
|
522
|
+
* BBB
|
523
|
+
EOS
|
524
|
+
expected =<<-EOS
|
525
|
+
|
526
|
+
\\begin{itemize}
|
527
|
+
\\item AAA
|
528
|
+
\\item BBB
|
529
|
+
\\end{itemize}
|
530
|
+
EOS
|
531
|
+
actual = compile_block(src)
|
532
|
+
assert_equal expected, actual
|
533
|
+
end
|
534
|
+
|
535
|
+
def test_ul_with_bracket
|
536
|
+
src =<<-EOS
|
537
|
+
* AAA
|
538
|
+
* []BBB
|
539
|
+
EOS
|
540
|
+
expected =<<-EOS
|
541
|
+
|
542
|
+
\\begin{itemize}
|
543
|
+
\\item AAA
|
544
|
+
\\item \\lbrack{}]BBB
|
545
|
+
\\end{itemize}
|
546
|
+
EOS
|
547
|
+
actual = compile_block(src)
|
548
|
+
assert_equal expected, actual
|
549
|
+
end
|
550
|
+
|
551
|
+
def test_cont
|
552
|
+
src =<<-EOS
|
553
|
+
* AAA
|
554
|
+
-AA
|
555
|
+
* BBB
|
556
|
+
-BB
|
557
|
+
EOS
|
558
|
+
expected =<<-EOS
|
559
|
+
|
560
|
+
\\begin{itemize}
|
561
|
+
\\item AAA{-}AA
|
562
|
+
\\item BBB{-}BB
|
563
|
+
\\end{itemize}
|
564
|
+
EOS
|
565
|
+
actual = compile_block(src)
|
566
|
+
assert_equal expected, actual
|
567
|
+
end
|
568
|
+
|
569
|
+
def test_ul_nest1
|
570
|
+
src =<<-EOS
|
571
|
+
* AAA
|
572
|
+
** AA
|
573
|
+
EOS
|
574
|
+
|
575
|
+
expected =<<-EOS
|
576
|
+
|
577
|
+
\\begin{itemize}
|
578
|
+
\\item AAA
|
579
|
+
|
580
|
+
\\begin{itemize}
|
581
|
+
\\item AA
|
582
|
+
\\end{itemize}
|
583
|
+
\\end{itemize}
|
584
|
+
EOS
|
585
|
+
actual = compile_block(src)
|
586
|
+
assert_equal expected, actual
|
587
|
+
end
|
588
|
+
|
589
|
+
def test_ul_nest3
|
590
|
+
src =<<-EOS
|
591
|
+
* AAA
|
592
|
+
** AA
|
593
|
+
* BBB
|
594
|
+
** BB
|
595
|
+
EOS
|
596
|
+
|
597
|
+
expected =<<-EOS
|
598
|
+
|
599
|
+
\\begin{itemize}
|
600
|
+
\\item AAA
|
601
|
+
|
602
|
+
\\begin{itemize}
|
603
|
+
\\item AA
|
604
|
+
\\end{itemize}
|
605
|
+
\\item BBB
|
606
|
+
|
607
|
+
\\begin{itemize}
|
608
|
+
\\item BB
|
609
|
+
\\end{itemize}
|
610
|
+
\\end{itemize}
|
611
|
+
EOS
|
612
|
+
actual = compile_block(src)
|
613
|
+
assert_equal expected, actual
|
614
|
+
end
|
615
|
+
|
616
|
+
def test_ol
|
617
|
+
src =<<-EOS
|
618
|
+
3. AAA
|
619
|
+
3. BBB
|
620
|
+
EOS
|
621
|
+
|
622
|
+
expected =<<-EOS
|
623
|
+
|
624
|
+
\\begin{enumerate}
|
625
|
+
\\item AAA
|
626
|
+
\\item BBB
|
627
|
+
\\end{enumerate}
|
628
|
+
EOS
|
629
|
+
actual = compile_block(src)
|
630
|
+
assert_equal expected, actual
|
631
|
+
end
|
632
|
+
|
633
|
+
def test_ol_with_bracket
|
634
|
+
src =<<-EOS
|
635
|
+
1. AAA
|
636
|
+
2. []BBB
|
637
|
+
EOS
|
638
|
+
expected =<<-EOS
|
639
|
+
|
640
|
+
\\begin{enumerate}
|
641
|
+
\\item AAA
|
642
|
+
\\item \\lbrack{}]BBB
|
643
|
+
\\end{enumerate}
|
644
|
+
EOS
|
645
|
+
actual = compile_block(src)
|
646
|
+
assert_equal expected, actual
|
647
|
+
end
|
648
|
+
|
649
|
+
def test_inline_raw0
|
650
|
+
assert_equal "normal", compile_inline("@<raw>{normal}")
|
651
|
+
end
|
652
|
+
|
653
|
+
def test_inline_raw1
|
654
|
+
assert_equal "body", compile_inline("@<raw>{|latex|body}")
|
655
|
+
end
|
656
|
+
|
657
|
+
def test_inline_raw2
|
658
|
+
assert_equal "body", compile_inline("@<raw>{|html, latex|body}")
|
659
|
+
end
|
660
|
+
|
661
|
+
def test_inline_raw3
|
662
|
+
assert_equal "", compile_inline("@<raw>{|idgxml, html|body}")
|
663
|
+
end
|
664
|
+
|
665
|
+
def test_inline_raw4
|
666
|
+
assert_equal "|latex body", compile_inline("@<raw>{|latex body}")
|
667
|
+
end
|
668
|
+
|
669
|
+
def test_inline_raw5
|
670
|
+
assert_equal "nor\nmal", compile_inline("@<raw>{|latex|nor\\nmal}")
|
671
|
+
end
|
672
|
+
|
673
|
+
def test_inline_endash
|
674
|
+
actual = compile_inline("- -- --- ----")
|
675
|
+
assert_equal "{-} {-}{-} {-}{-}{-} {-}{-}{-}{-}", actual
|
676
|
+
end
|
677
|
+
|
678
|
+
def test_inline_imgref
|
679
|
+
def @chapter.image(id)
|
680
|
+
item = Book::ImageIndex::Item.new("sampleimg", 1, 'sample photo')
|
681
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
682
|
+
item
|
683
|
+
end
|
684
|
+
|
685
|
+
actual = compile_block "@<imgref>{sampleimg}\n"
|
686
|
+
expected = "\n\\reviewimageref{1.1}{image:chap1:sampleimg}「sample photo」\n"
|
687
|
+
assert_equal expected, actual
|
688
|
+
end
|
689
|
+
|
690
|
+
def test_inline_imgref2
|
691
|
+
def @chapter.image(id)
|
692
|
+
item = Book::NumberlessImageIndex::Item.new("sampleimg", 1)
|
693
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
694
|
+
item
|
695
|
+
end
|
696
|
+
|
697
|
+
actual = compile_block "@<imgref>{sampleimg}\n"
|
698
|
+
expected = "\n\\reviewimageref{1.1}{image:chap1:sampleimg}\n"
|
699
|
+
assert_equal expected, actual
|
700
|
+
end
|
701
|
+
|
702
|
+
def test_block_raw0
|
703
|
+
actual = compile_block("//raw[<>!\"\\n& ]\n")
|
704
|
+
expected = %Q(<>!\"\n& )
|
705
|
+
assert_equal expected, actual
|
706
|
+
end
|
707
|
+
|
708
|
+
def test_block_raw1
|
709
|
+
actual = compile_block("//raw[|latex|<>!\"\\n& ]\n")
|
710
|
+
expected = %Q(<>!\"\n& )
|
711
|
+
assert_equal expected, actual
|
712
|
+
end
|
713
|
+
|
714
|
+
def test_block_raw2
|
715
|
+
actual = compile_block("//raw[|html, latex|<>!\"\\n& ]\n")
|
716
|
+
expected = %Q(<>!\"\n& )
|
717
|
+
assert_equal expected, actual
|
718
|
+
end
|
719
|
+
|
720
|
+
def test_block_raw3
|
721
|
+
actual = compile_block("//raw[|html, idgxml|<>!\"\\n& ]\n")
|
722
|
+
expected = ''
|
723
|
+
assert_equal expected, actual
|
724
|
+
end
|
725
|
+
|
726
|
+
def test_block_raw4
|
727
|
+
actual = compile_block("//raw[|latex <>!\"\\n& ]\n")
|
728
|
+
expected = %Q(|latex <>!\"\n& )
|
729
|
+
assert_equal expected, actual
|
730
|
+
end
|
731
|
+
|
732
|
+
end
|