review 2.3.0 → 2.4.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 +4 -4
- data/.rubocop.yml +90 -66
- data/.travis.yml +1 -1
- data/Gemfile +0 -1
- data/NEWS.ja.md +82 -0
- data/NEWS.md +83 -0
- data/README.md +5 -3
- data/Rakefile +8 -8
- data/bin/review +1 -5
- data/bin/review-catalog-converter +22 -27
- data/bin/review-check +36 -43
- data/bin/review-checkdep +10 -15
- data/bin/review-compile +37 -55
- data/bin/review-epubmaker +4 -5
- data/bin/review-index +21 -29
- data/bin/review-init +26 -37
- data/bin/review-pdfmaker +0 -2
- data/bin/review-preproc +25 -45
- data/bin/review-validate +19 -18
- data/bin/review-vol +15 -27
- data/doc/config.yml.sample +5 -2
- data/doc/format.ja.md +20 -1
- data/doc/format.md +21 -5
- data/doc/images/review-generate.png +0 -0
- data/lib/epubmaker.rb +1 -3
- data/lib/epubmaker/content.rb +24 -27
- data/lib/epubmaker/epubcommon.rb +135 -148
- data/lib/epubmaker/epubv2.rb +39 -46
- data/lib/epubmaker/epubv3.rb +93 -103
- data/lib/epubmaker/producer.rb +138 -151
- data/lib/epubmaker/zip_exporter.rb +21 -26
- data/lib/review/book.rb +3 -6
- data/lib/review/book/base.rb +78 -103
- data/lib/review/book/chapter.rb +36 -40
- data/lib/review/book/compilable.rb +28 -31
- data/lib/review/book/image_finder.rb +6 -13
- data/lib/review/book/index.rb +100 -121
- data/lib/review/book/page_metric.rb +2 -7
- data/lib/review/book/part.rb +18 -20
- data/lib/review/book/volume.rb +9 -13
- data/lib/review/builder.rb +81 -116
- data/lib/review/catalog.rb +15 -19
- data/lib/review/compiler.rb +64 -83
- data/lib/review/configure.rb +87 -97
- data/lib/review/converter.rb +2 -7
- data/lib/review/epubbuilder.rb +1 -3
- data/lib/review/epubmaker.rb +213 -205
- data/lib/review/exception.rb +2 -4
- data/lib/review/extentions.rb +0 -1
- data/lib/review/extentions/hash.rb +2 -2
- data/lib/review/extentions/string.rb +5 -30
- data/lib/review/htmlbuilder.rb +320 -375
- data/lib/review/htmltoc.rb +4 -7
- data/lib/review/htmlutils.rb +29 -32
- data/lib/review/i18n.rb +33 -44
- data/lib/review/i18n.yml +3 -3
- data/lib/review/idgxmlbuilder.rb +309 -345
- data/lib/review/latexbuilder.rb +175 -212
- data/lib/review/latexindex.rb +2 -8
- data/lib/review/latexutils.rb +33 -43
- data/lib/review/lineinput.rb +1 -1
- data/lib/review/logger.rb +21 -0
- data/lib/review/makerhelper.rb +1 -4
- data/lib/review/markdownbuilder.rb +44 -53
- data/lib/review/md2inaobuilder.rb +6 -12
- data/lib/review/pdfmaker.rb +143 -173
- data/lib/review/preprocessor.rb +64 -101
- data/lib/review/rstbuilder.rb +126 -158
- data/lib/review/sec_counter.rb +18 -34
- data/lib/review/template.rb +4 -5
- data/lib/review/textbuilder.rb +2 -3
- data/lib/review/textutils.rb +7 -13
- data/lib/review/tocparser.rb +31 -56
- data/lib/review/tocprinter.rb +26 -52
- data/lib/review/topbuilder.rb +219 -247
- data/lib/review/unfold.rb +15 -24
- data/lib/review/version.rb +1 -1
- data/lib/review/webmaker.rb +75 -99
- data/lib/review/webtocprinter.rb +15 -20
- data/lib/review/yamlloader.rb +13 -15
- data/review.gemspec +20 -22
- data/templates/latex/layout.tex.erb +2 -2
- data/templates/opf/epubv2.opf.erb +7 -7
- data/templates/opf/epubv3.opf.erb +7 -7
- data/templates/web/html/layout-html5.html.erb +2 -2
- data/test/assets/black.eps +280 -0
- data/test/assets/fit.png +0 -0
- data/test/assets/large.gif +0 -0
- data/test/assets/large.jpg +0 -0
- data/test/assets/large.png +0 -0
- data/test/assets/large.svg +65 -0
- data/test/assets/test_template.tex +1 -1
- data/test/book_test_helper.rb +2 -2
- data/test/run_test.rb +4 -4
- data/test/sample-book/src/Rakefile +21 -22
- data/test/syntax-book/Gemfile +4 -0
- data/test/syntax-book/Rakefile +72 -0
- data/test/syntax-book/appA.re +22 -0
- data/test/syntax-book/bib.re +6 -0
- data/test/syntax-book/catalog.yml +15 -0
- data/test/syntax-book/ch01.re +136 -0
- data/test/syntax-book/ch02.re +351 -0
- data/test/syntax-book/ch03.re +82 -0
- data/test/syntax-book/config.yml +35 -0
- data/test/syntax-book/images/ball.png +0 -0
- data/test/syntax-book/images/cover.jpg +0 -0
- data/test/syntax-book/images/fractal.png +0 -0
- data/test/syntax-book/images/img3-1.png +0 -0
- data/test/syntax-book/images/inlineicon.jpg +0 -0
- data/test/syntax-book/images/logic.png +0 -0
- data/test/syntax-book/images/logic2.png +0 -0
- data/test/syntax-book/images/puzzle.jpg +0 -0
- data/test/syntax-book/images/table.jpg +0 -0
- data/test/syntax-book/part2.re +6 -0
- data/test/syntax-book/pre01.re +26 -0
- data/test/syntax-book/review-ext.rb +14 -0
- data/test/syntax-book/sty/jumoline.sty +310 -0
- data/test/syntax-book/sty/reviewmacro.sty +39 -0
- data/test/syntax-book/style.css +494 -0
- data/test/syntax-book/syntax.dic +2 -0
- data/test/test_book.rb +106 -111
- data/test/test_book_chapter.rb +21 -22
- data/test/test_book_part.rb +3 -5
- data/test/test_builder.rb +11 -22
- data/test/test_catalog.rb +17 -18
- data/test/test_catalog_converter_cmd.rb +5 -5
- data/test/test_compiler.rb +18 -16
- data/test/test_configure.rb +35 -38
- data/test/test_converter.rb +3 -4
- data/test/test_epub3maker.rb +136 -117
- data/test/test_epubmaker.rb +107 -114
- data/test/test_epubmaker_cmd.rb +2 -4
- data/test/test_extentions_hash.rb +32 -33
- data/test/test_helper.rb +9 -11
- data/test/test_htmlbuilder.rb +454 -420
- data/test/test_htmltoc.rb +8 -12
- data/test/test_htmlutils.rb +0 -2
- data/test/test_i18n.rb +159 -150
- data/test/test_idgxmlbuilder.rb +190 -197
- data/test/test_image_finder.rb +21 -22
- data/test/test_index.rb +24 -29
- data/test/test_latexbuilder.rb +274 -264
- data/test/test_lineinput.rb +7 -10
- data/test/test_location.rb +7 -7
- data/test/test_makerhelper.rb +13 -25
- data/test/test_markdownbuilder.rb +23 -26
- data/test/test_md2inaobuilder.rb +8 -11
- data/test/test_pdfmaker.rb +114 -123
- data/test/test_pdfmaker_cmd.rb +1 -3
- data/test/test_review_ext.rb +3 -5
- data/test/test_rstbuilder.rb +92 -97
- data/test/test_template.rb +3 -7
- data/test/test_textutils.rb +27 -27
- data/test/test_tocparser.rb +2 -2
- data/test/test_topbuilder.rb +98 -103
- data/test/test_webtocprinter.rb +5 -6
- data/test/test_yamlloader.rb +42 -42
- data/test/test_zip_exporter.rb +12 -18
- metadata +86 -9
- data/lib/review/ewbbuilder.rb +0 -382
data/lib/review/preprocessor.rb
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
# Copyright (c) 2002-2009 Minero Aoki
|
|
5
|
-
# Copyright (c) 2010 Minero Aoki, Kenshi Muto
|
|
1
|
+
# Copyright (c) 2010-2017 Minero Aoki, Kenshi Muto
|
|
2
|
+
# 2002-2009 Minero Aoki
|
|
6
3
|
#
|
|
7
4
|
# This program is free software.
|
|
8
5
|
# You can distribute or modify this program under the terms of
|
|
@@ -15,25 +12,23 @@ require 'review/exception'
|
|
|
15
12
|
require 'nkf'
|
|
16
13
|
|
|
17
14
|
module ReVIEW
|
|
18
|
-
|
|
19
15
|
module ErrorUtils
|
|
20
|
-
|
|
21
|
-
def init_ErrorUtils(f)
|
|
16
|
+
def init_errorutils(f)
|
|
22
17
|
@errutils_file = f
|
|
23
18
|
@errutils_err = false
|
|
24
19
|
end
|
|
25
20
|
|
|
26
21
|
def warn(msg)
|
|
27
|
-
|
|
22
|
+
@logger.warn "#{location}: #{msg}"
|
|
28
23
|
end
|
|
29
24
|
|
|
30
25
|
def error(msg)
|
|
31
26
|
@errutils_err = true
|
|
32
|
-
raise ApplicationError, "#{location
|
|
27
|
+
raise ApplicationError, "#{location}: #{msg}"
|
|
33
28
|
end
|
|
34
29
|
|
|
35
30
|
def location
|
|
36
|
-
"#{filename
|
|
31
|
+
"#{filename}:#{lineno}"
|
|
37
32
|
end
|
|
38
33
|
|
|
39
34
|
def filename
|
|
@@ -43,19 +38,14 @@ module ReVIEW
|
|
|
43
38
|
def lineno
|
|
44
39
|
@errutils_file.lineno
|
|
45
40
|
end
|
|
46
|
-
|
|
47
41
|
end
|
|
48
42
|
|
|
49
|
-
|
|
50
43
|
class Preprocessor
|
|
51
|
-
|
|
52
44
|
include ErrorUtils
|
|
53
45
|
|
|
54
|
-
def
|
|
46
|
+
def self.strip(f)
|
|
55
47
|
buf = ''
|
|
56
|
-
Strip.new(f).each
|
|
57
|
-
buf << line.rstrip << "\n"
|
|
58
|
-
end
|
|
48
|
+
Strip.new(f).each { |line| buf << line.rstrip << "\n" }
|
|
59
49
|
buf
|
|
60
50
|
end
|
|
61
51
|
|
|
@@ -73,12 +63,9 @@ module ReVIEW
|
|
|
73
63
|
end
|
|
74
64
|
|
|
75
65
|
def gets
|
|
76
|
-
|
|
77
|
-
if /\A\#@/ =~ line
|
|
78
|
-
|
|
79
|
-
else
|
|
80
|
-
return line
|
|
81
|
-
end
|
|
66
|
+
@f.each_line do |line|
|
|
67
|
+
return "\#@\#\n" if /\A\#@/ =~ line
|
|
68
|
+
return line
|
|
82
69
|
end
|
|
83
70
|
nil
|
|
84
71
|
end
|
|
@@ -93,10 +80,11 @@ module ReVIEW
|
|
|
93
80
|
def initialize(repo, param)
|
|
94
81
|
@repository = repo
|
|
95
82
|
@config = param
|
|
83
|
+
@logger = ReVIEW.logger
|
|
96
84
|
end
|
|
97
85
|
|
|
98
86
|
def process(inf, outf)
|
|
99
|
-
|
|
87
|
+
init_errorutils inf
|
|
100
88
|
@f = outf
|
|
101
89
|
begin
|
|
102
90
|
preproc inf
|
|
@@ -107,11 +95,11 @@ module ReVIEW
|
|
|
107
95
|
|
|
108
96
|
private
|
|
109
97
|
|
|
110
|
-
TYPES = %w
|
|
98
|
+
TYPES = %w[file range].freeze
|
|
111
99
|
|
|
112
100
|
def preproc(f)
|
|
113
101
|
init_vars
|
|
114
|
-
|
|
102
|
+
f.each_line do |line|
|
|
115
103
|
case line
|
|
116
104
|
when /\A\#@\#/, /\A\#\#\#\#/
|
|
117
105
|
@f.print line
|
|
@@ -124,9 +112,7 @@ module ReVIEW
|
|
|
124
112
|
when /\A\#@mapoutput/
|
|
125
113
|
direc = parse_directive(line, 1, 'stderr')
|
|
126
114
|
@f.print line
|
|
127
|
-
get_output(expand(direc.arg), direc['stderr']).each
|
|
128
|
-
@f.print out.string
|
|
129
|
-
end
|
|
115
|
+
get_output(expand(direc.arg), direc['stderr']).each { |out| @f.print out.string }
|
|
130
116
|
skip_list f
|
|
131
117
|
|
|
132
118
|
when /\A\#@mapfile/
|
|
@@ -140,7 +126,7 @@ module ReVIEW
|
|
|
140
126
|
direc = parse_directive(line, 2, 'unindent')
|
|
141
127
|
path = expand(direc.args[0])
|
|
142
128
|
ent = @repository.fetch_range(path, direc.args[1]) or
|
|
143
|
-
|
|
129
|
+
error "unknown range: #{path}: #{direc.args[1]}"
|
|
144
130
|
ent = (direc['unindent'] ? unindent(ent, direc['unindent']) : ent)
|
|
145
131
|
replace_block(f, line, ent, false) # FIXME: turn off lineno: tmp
|
|
146
132
|
|
|
@@ -149,8 +135,7 @@ module ReVIEW
|
|
|
149
135
|
|
|
150
136
|
when /\A\#@/
|
|
151
137
|
op = line.slice(/@(\w+)/, 1)
|
|
152
|
-
|
|
153
|
-
warn "unkown directive: #{line.strip}" unless known_directive?(op)
|
|
138
|
+
warn "unknown directive: #{line.strip}" unless known_directive?(op)
|
|
154
139
|
@f.print line
|
|
155
140
|
|
|
156
141
|
when /\A\s*\z/ # empty line
|
|
@@ -161,7 +146,7 @@ module ReVIEW
|
|
|
161
146
|
end
|
|
162
147
|
end
|
|
163
148
|
|
|
164
|
-
KNOWN_DIRECTIVES = %w
|
|
149
|
+
KNOWN_DIRECTIVES = %w[require provide warn ok].freeze
|
|
165
150
|
|
|
166
151
|
def known_directive?(op)
|
|
167
152
|
KNOWN_DIRECTIVES.index(op)
|
|
@@ -182,19 +167,19 @@ module ReVIEW
|
|
|
182
167
|
|
|
183
168
|
def skip_list(f)
|
|
184
169
|
begline = f.lineno
|
|
185
|
-
|
|
170
|
+
f.each_line do |line|
|
|
186
171
|
case line
|
|
187
|
-
when
|
|
172
|
+
when /\A\#@end/
|
|
188
173
|
@f.print line
|
|
189
|
-
return
|
|
190
|
-
when %r
|
|
174
|
+
return nil
|
|
175
|
+
when %r{\A//\}}
|
|
191
176
|
warn '//} seen in list'
|
|
192
177
|
@f.print line
|
|
193
|
-
return
|
|
194
|
-
when
|
|
178
|
+
return nil
|
|
179
|
+
when /\A\#@\w/
|
|
195
180
|
warn "#{line.slice(/\A\#@\w+/)} seen in list"
|
|
196
181
|
@f.print line
|
|
197
|
-
when
|
|
182
|
+
when /\A\#@/
|
|
198
183
|
@f.print line
|
|
199
184
|
end
|
|
200
185
|
end
|
|
@@ -227,7 +212,7 @@ module ReVIEW
|
|
|
227
212
|
|
|
228
213
|
def parse_directive(line, argc, *optdecl)
|
|
229
214
|
m = /\A\#@(\w+)\((.*?)\)(?:\[(.*?)\])?\z/.match(line.strip) or
|
|
230
|
-
|
|
215
|
+
error "wrong directive: #{line.strip}"
|
|
231
216
|
op = m[1]
|
|
232
217
|
args = m[2].split(/,\s*/)
|
|
233
218
|
opts = parse_optargs(m[3])
|
|
@@ -235,7 +220,7 @@ module ReVIEW
|
|
|
235
220
|
if argc == -1
|
|
236
221
|
# Any number of arguments are allowed.
|
|
237
222
|
elsif args.size != argc
|
|
238
|
-
error
|
|
223
|
+
error 'wrong arg size'
|
|
239
224
|
end
|
|
240
225
|
if opts
|
|
241
226
|
wrong_opts = opts.keys - optdecl
|
|
@@ -250,7 +235,7 @@ module ReVIEW
|
|
|
250
235
|
return nil unless str
|
|
251
236
|
table = {}
|
|
252
237
|
str.split(/,\s*/).each do |a|
|
|
253
|
-
name, spec = a.split(
|
|
238
|
+
name, spec = a.split('=', 2)
|
|
254
239
|
table[name] = optarg_value(spec)
|
|
255
240
|
end
|
|
256
241
|
table
|
|
@@ -277,65 +262,59 @@ module ReVIEW
|
|
|
277
262
|
end
|
|
278
263
|
|
|
279
264
|
def expand(str)
|
|
280
|
-
str.gsub(/\$\w+/)
|
|
265
|
+
str.gsub(/\$\w+/) do |name|
|
|
281
266
|
s = @vartable[name.sub('$', '')]
|
|
282
267
|
s ? expand(s) : name
|
|
283
|
-
|
|
268
|
+
end
|
|
284
269
|
end
|
|
285
270
|
|
|
286
271
|
def unindent(chunk, n)
|
|
287
|
-
n = minimum_indent(chunk) unless n.
|
|
272
|
+
n = minimum_indent(chunk) unless n.is_a?(Integer)
|
|
288
273
|
re = /\A#{' ' * n}/
|
|
289
|
-
chunk.map {|line| line.edit {|s| s.sub(re,'') } }
|
|
274
|
+
chunk.map { |line| line.edit { |s| s.sub(re, '') } }
|
|
290
275
|
end
|
|
291
276
|
|
|
292
277
|
INF_INDENT = 9999
|
|
293
278
|
|
|
294
279
|
def minimum_indent(chunk)
|
|
295
|
-
n = chunk.map {|line| line.empty? ? INF_INDENT : line.num_indent }.min
|
|
280
|
+
n = chunk.map { |line| line.empty? ? INF_INDENT : line.num_indent }.min
|
|
296
281
|
n == INF_INDENT ? 0 : n
|
|
297
282
|
end
|
|
298
283
|
|
|
299
284
|
def evaluate(path, chunk)
|
|
300
|
-
outputs = get_output("ruby #{path}", false).split(/\n/).map
|
|
301
|
-
chunk.map
|
|
285
|
+
outputs = get_output("ruby #{path}", false).split(/\n/).map(&:strip)
|
|
286
|
+
chunk.map do |line|
|
|
302
287
|
if /\# \$\d+/ =~ line.string
|
|
303
288
|
# map result into source.
|
|
304
|
-
line.edit {|s|
|
|
305
|
-
s.sub(/\$(\d+)/) { outputs[$1.to_i - 1] }
|
|
306
|
-
}
|
|
289
|
+
line.edit { |s| s.sub(/\$(\d+)/) { outputs[$1.to_i - 1] } }
|
|
307
290
|
else
|
|
308
291
|
line
|
|
309
292
|
end
|
|
310
|
-
|
|
293
|
+
end
|
|
311
294
|
end
|
|
312
295
|
|
|
313
296
|
require 'open3'
|
|
314
297
|
|
|
315
298
|
def get_output(cmd, use_stderr)
|
|
316
299
|
out = err = nil
|
|
317
|
-
Open3.popen3(cmd)
|
|
300
|
+
Open3.popen3(cmd) do |_stdin, stdout, stderr|
|
|
318
301
|
out = stdout.readlines
|
|
319
302
|
if use_stderr
|
|
320
303
|
out.concat stderr.readlines
|
|
321
304
|
else
|
|
322
305
|
err = stderr.readlines
|
|
323
306
|
end
|
|
324
|
-
|
|
307
|
+
end
|
|
325
308
|
if err and !err.empty?
|
|
326
|
-
$stderr.puts
|
|
327
|
-
err.each
|
|
328
|
-
|
|
329
|
-
end
|
|
330
|
-
error "get_output: got unexpected output"
|
|
309
|
+
$stderr.puts '[unexpected stderr message]'
|
|
310
|
+
err.each { |line| $stderr.print line }
|
|
311
|
+
error 'get_output: got unexpected output'
|
|
331
312
|
end
|
|
332
313
|
num = 0
|
|
333
|
-
out.map {|line| Line.new(num += 1, line) }
|
|
314
|
+
out.map { |line| Line.new(num += 1, line) }
|
|
334
315
|
end
|
|
335
|
-
|
|
336
316
|
end
|
|
337
317
|
|
|
338
|
-
|
|
339
318
|
class Line
|
|
340
319
|
def initialize(number, string)
|
|
341
320
|
@number = number
|
|
@@ -359,15 +338,14 @@ module ReVIEW
|
|
|
359
338
|
end
|
|
360
339
|
end
|
|
361
340
|
|
|
362
|
-
|
|
363
341
|
class Repository
|
|
364
|
-
|
|
365
342
|
include TextUtils
|
|
366
343
|
include ErrorUtils
|
|
367
344
|
|
|
368
345
|
def initialize(param)
|
|
369
346
|
@repository = {}
|
|
370
347
|
@config = param
|
|
348
|
+
@logger = ReVIEW.logger
|
|
371
349
|
end
|
|
372
350
|
|
|
373
351
|
def fetch_file(file)
|
|
@@ -397,22 +375,22 @@ module ReVIEW
|
|
|
397
375
|
|
|
398
376
|
def parse_git_blob(g_obj)
|
|
399
377
|
IO.popen('git show ' + g_obj.sub(/\Agit\|/, ''), 'r') do |f|
|
|
400
|
-
|
|
378
|
+
init_errorutils f
|
|
401
379
|
return _parse_file(f)
|
|
402
380
|
end
|
|
403
381
|
end
|
|
404
382
|
|
|
405
383
|
def parse_file(fname)
|
|
406
|
-
File.open(fname, 'r:BOM|utf-8')
|
|
407
|
-
|
|
384
|
+
File.open(fname, 'r:BOM|utf-8') do |f|
|
|
385
|
+
init_errorutils f
|
|
408
386
|
return _parse_file(f)
|
|
409
|
-
|
|
387
|
+
end
|
|
410
388
|
end
|
|
411
389
|
|
|
412
390
|
def _parse_file(f)
|
|
413
391
|
whole = []
|
|
414
|
-
repo = {'file' => whole}
|
|
415
|
-
curr = {'WHOLE' => whole}
|
|
392
|
+
repo = { 'file' => whole }
|
|
393
|
+
curr = { 'WHOLE' => whole }
|
|
416
394
|
lineno = 1
|
|
417
395
|
yacchack = false # remove ';'-only lines.
|
|
418
396
|
opened = [['(not opened)', '(not opened)']] * 3
|
|
@@ -430,12 +408,12 @@ module ReVIEW
|
|
|
430
408
|
(repo[type] ||= {})[spec] = curr[key] = []
|
|
431
409
|
when 'end'
|
|
432
410
|
curr.delete("#{type}/#{spec}") or
|
|
433
|
-
|
|
411
|
+
error "end before begin: #{type}/#{spec}"
|
|
434
412
|
else
|
|
435
413
|
raise 'must not happen'
|
|
436
414
|
end
|
|
437
415
|
|
|
438
|
-
when %r
|
|
416
|
+
when %r{(?:\A\#@|\#@@)([a-z]+)/(\w+)\{}
|
|
439
417
|
type = check_type($1)
|
|
440
418
|
spec = check_spec($2)
|
|
441
419
|
key = "#{type}/#{spec}"
|
|
@@ -443,17 +421,17 @@ module ReVIEW
|
|
|
443
421
|
(repo[type] ||= {})[spec] = curr[key] = []
|
|
444
422
|
opened.push [type, spec]
|
|
445
423
|
|
|
446
|
-
when %r
|
|
424
|
+
when %r{(?:\A\#@|\#@@)([a-z]+)/(\w+)\}}
|
|
447
425
|
type = check_type($1)
|
|
448
426
|
spec = check_spec($2)
|
|
449
427
|
curr.delete("#{type}/#{spec}") or
|
|
450
|
-
|
|
428
|
+
error "end before begin: #{type}/#{spec}"
|
|
451
429
|
opened.delete "#{type}/#{spec}"
|
|
452
430
|
|
|
453
|
-
when
|
|
431
|
+
when /(?:\A\#@|\#@@)\}/
|
|
454
432
|
type, spec = opened.last
|
|
455
433
|
curr.delete("#{type}/#{spec}") or
|
|
456
|
-
|
|
434
|
+
error "closed before open: #{type}/#{spec}"
|
|
457
435
|
opened.pop
|
|
458
436
|
|
|
459
437
|
when /(?:\A\#@|\#@@)yacchack/
|
|
@@ -461,35 +439,26 @@ module ReVIEW
|
|
|
461
439
|
|
|
462
440
|
when /\A\#@-/ # does not increment line number.
|
|
463
441
|
line = canonical($')
|
|
464
|
-
curr.each_value
|
|
465
|
-
list.push Line.new(nil, line)
|
|
466
|
-
end
|
|
442
|
+
curr.each_value { |list| list.push Line.new(nil, line) }
|
|
467
443
|
|
|
468
444
|
else
|
|
469
445
|
next if yacchack and line.strip == ';'
|
|
470
446
|
line = canonical(line)
|
|
471
|
-
curr.each_value
|
|
472
|
-
list.push Line.new(lineno, line)
|
|
473
|
-
end
|
|
447
|
+
curr.each_value { |list| list.push Line.new(lineno, line) }
|
|
474
448
|
lineno += 1
|
|
475
449
|
end
|
|
476
450
|
end
|
|
477
451
|
if curr.size > 1
|
|
478
452
|
curr.delete 'WHOLE'
|
|
479
|
-
curr.each
|
|
480
|
-
|
|
481
|
-
end
|
|
482
|
-
raise ApplicationError, "ERROR"
|
|
453
|
+
curr.each { |range, lines| @logger.warn "#{filename}: unclosed range: #{range} (begin @#{lines.first.number})" }
|
|
454
|
+
raise ApplicationError, 'ERROR'
|
|
483
455
|
end
|
|
484
456
|
|
|
485
457
|
repo
|
|
486
458
|
end
|
|
487
459
|
|
|
488
460
|
def canonical(line)
|
|
489
|
-
tabwidth = 8
|
|
490
|
-
if @config['tabwidth']
|
|
491
|
-
tabwidth = @config['tabwidth']
|
|
492
|
-
end
|
|
461
|
+
tabwidth = @config['tabwidth'] || 8
|
|
493
462
|
if tabwidth > 0
|
|
494
463
|
detab(line, tabwidth).rstrip + "\n"
|
|
495
464
|
else
|
|
@@ -498,19 +467,13 @@ module ReVIEW
|
|
|
498
467
|
end
|
|
499
468
|
|
|
500
469
|
def check_type(type)
|
|
501
|
-
unless Preprocessor::TYPES.index(type)
|
|
502
|
-
error "wrong type: #{type.inspect}"
|
|
503
|
-
end
|
|
470
|
+
error "wrong type: #{type.inspect}" unless Preprocessor::TYPES.index(type)
|
|
504
471
|
type
|
|
505
472
|
end
|
|
506
473
|
|
|
507
474
|
def check_spec(spec)
|
|
508
|
-
unless /\A\w+\z/ =~ spec
|
|
509
|
-
error "wrong spec: #{spec.inspect}"
|
|
510
|
-
end
|
|
475
|
+
error "wrong spec: #{spec.inspect}" unless /\A\w+\z/ =~ spec
|
|
511
476
|
spec
|
|
512
477
|
end
|
|
513
|
-
|
|
514
478
|
end
|
|
515
|
-
|
|
516
479
|
end
|
data/lib/review/rstbuilder.rb
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
# Copyright (c) 2002-2006 Minero Aoki
|
|
4
|
-
# 2008-2017 Minero Aoki, Kenshi Muto
|
|
1
|
+
# Copyright (c) 2008-2017 Minero Aoki, Kenshi Muto
|
|
2
|
+
# 2002-2006 Minero Aoki
|
|
5
3
|
#
|
|
6
4
|
# This program is free software.
|
|
7
5
|
# You can distribute or modify this program under the terms of
|
|
@@ -12,7 +10,6 @@ require 'review/builder'
|
|
|
12
10
|
require 'review/textutils'
|
|
13
11
|
|
|
14
12
|
module ReVIEW
|
|
15
|
-
|
|
16
13
|
#
|
|
17
14
|
# RSTBuilder is a builder for reStructuredText (http://docutils.sourceforge.net/rst.html).
|
|
18
15
|
# reStructuredText is used in Sphinx (http://www.sphinx-doc.org/).
|
|
@@ -21,12 +18,9 @@ module ReVIEW
|
|
|
21
18
|
# package (https://pypi.python.org/pypi/sphinxcontrib-textstyle).
|
|
22
19
|
#
|
|
23
20
|
class RSTBuilder < Builder
|
|
24
|
-
|
|
25
21
|
include TextUtils
|
|
26
22
|
|
|
27
|
-
[
|
|
28
|
-
Compiler.definline(e)
|
|
29
|
-
}
|
|
23
|
+
%i[ttbold hint maru keytop labelref ref balloon strong].each { |e| Compiler.definline(e) }
|
|
30
24
|
Compiler.defsingle(:dtp, 1)
|
|
31
25
|
|
|
32
26
|
Compiler.defblock(:insn, 1)
|
|
@@ -50,7 +44,7 @@ module ReVIEW
|
|
|
50
44
|
end
|
|
51
45
|
|
|
52
46
|
def image_ext
|
|
53
|
-
|
|
47
|
+
'png'
|
|
54
48
|
end
|
|
55
49
|
|
|
56
50
|
def extname
|
|
@@ -93,39 +87,31 @@ module ReVIEW
|
|
|
93
87
|
@output.string
|
|
94
88
|
end
|
|
95
89
|
|
|
96
|
-
def warn(msg)
|
|
97
|
-
$stderr.puts "#{@location.filename}:#{@location.lineno}: warning: #{msg}"
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def error(msg)
|
|
101
|
-
$stderr.puts "#{@location.filename}:#{@location.lineno}: error: #{msg}"
|
|
102
|
-
end
|
|
103
|
-
|
|
104
90
|
def headline(level, label, caption)
|
|
105
91
|
blank
|
|
106
92
|
if label
|
|
107
93
|
puts ".. _#{label}:"
|
|
108
94
|
blank
|
|
109
95
|
end
|
|
110
|
-
p =
|
|
96
|
+
p = '='
|
|
111
97
|
case level
|
|
112
98
|
when 1 then
|
|
113
99
|
unless label
|
|
114
100
|
puts ".. _#{@chapter.name}:"
|
|
115
101
|
blank
|
|
116
102
|
end
|
|
117
|
-
puts
|
|
103
|
+
puts '=' * caption.size * 2
|
|
118
104
|
when 2 then
|
|
119
|
-
p =
|
|
105
|
+
p = '='
|
|
120
106
|
when 3 then
|
|
121
|
-
p =
|
|
107
|
+
p = '-'
|
|
122
108
|
when 4 then
|
|
123
|
-
p =
|
|
109
|
+
p = '`'
|
|
124
110
|
when 5 then
|
|
125
|
-
p =
|
|
111
|
+
p = '~'
|
|
126
112
|
end
|
|
127
113
|
|
|
128
|
-
puts
|
|
114
|
+
puts caption
|
|
129
115
|
puts p * caption.size * 2
|
|
130
116
|
blank
|
|
131
117
|
end
|
|
@@ -136,7 +122,7 @@ module ReVIEW
|
|
|
136
122
|
end
|
|
137
123
|
|
|
138
124
|
def ul_item(lines)
|
|
139
|
-
puts
|
|
125
|
+
puts ' ' * (@ul_indent - 1) + "* #{lines.join}"
|
|
140
126
|
end
|
|
141
127
|
|
|
142
128
|
def ul_end
|
|
@@ -149,8 +135,8 @@ module ReVIEW
|
|
|
149
135
|
@ol_indent += 1
|
|
150
136
|
end
|
|
151
137
|
|
|
152
|
-
def ol_item(lines,
|
|
153
|
-
puts
|
|
138
|
+
def ol_item(lines, _num)
|
|
139
|
+
puts ' ' * (@ol_indent - 1) + "#. #{lines.join}"
|
|
154
140
|
end
|
|
155
141
|
|
|
156
142
|
def ol_end
|
|
@@ -162,56 +148,50 @@ module ReVIEW
|
|
|
162
148
|
end
|
|
163
149
|
|
|
164
150
|
def dt(line)
|
|
165
|
-
puts
|
|
151
|
+
puts line
|
|
166
152
|
end
|
|
167
153
|
|
|
168
154
|
def dd(lines)
|
|
169
|
-
split_paragraph(lines).each
|
|
170
|
-
puts " #{paragraph.gsub(/\n/, '')}"
|
|
171
|
-
end
|
|
155
|
+
split_paragraph(lines).each { |paragraph| puts " #{paragraph.gsub(/\n/, '')}" }
|
|
172
156
|
end
|
|
173
157
|
|
|
174
158
|
def dl_end
|
|
175
159
|
end
|
|
176
160
|
|
|
177
161
|
def paragraph(lines)
|
|
178
|
-
pre =
|
|
179
|
-
if @in_role == true
|
|
180
|
-
pre = " "
|
|
181
|
-
end
|
|
162
|
+
pre = ''
|
|
163
|
+
pre = ' ' if @in_role == true
|
|
182
164
|
puts pre + lines.join
|
|
183
165
|
puts "\n"
|
|
184
166
|
end
|
|
185
167
|
|
|
186
168
|
def read(lines)
|
|
187
|
-
puts split_paragraph(lines).map{|line| " #{line}"}.join
|
|
169
|
+
puts split_paragraph(lines).map { |line| " #{line}" }.join
|
|
188
170
|
blank
|
|
189
171
|
end
|
|
190
172
|
|
|
191
173
|
alias_method :lead, :read
|
|
192
174
|
|
|
193
175
|
def hr
|
|
194
|
-
puts
|
|
176
|
+
puts '----'
|
|
195
177
|
end
|
|
196
178
|
|
|
197
179
|
def inline_list(id)
|
|
198
180
|
" :numref:`#{id}` "
|
|
199
181
|
end
|
|
200
182
|
|
|
201
|
-
def list_header(id,
|
|
183
|
+
def list_header(id, _caption, _lang)
|
|
202
184
|
puts ".. _#{id}:"
|
|
203
185
|
blank
|
|
204
186
|
end
|
|
205
187
|
|
|
206
|
-
def list_body(
|
|
207
|
-
lines.each
|
|
208
|
-
puts '-' + detab(line)
|
|
209
|
-
end
|
|
188
|
+
def list_body(_id, lines, _lang)
|
|
189
|
+
lines.each { |line| puts '-' + detab(line) }
|
|
210
190
|
end
|
|
211
191
|
|
|
212
|
-
def base_block(
|
|
192
|
+
def base_block(_type, lines, caption = nil)
|
|
213
193
|
blank
|
|
214
|
-
puts
|
|
194
|
+
puts compile_inline(caption) unless caption.nil?
|
|
215
195
|
puts lines.join("\n")
|
|
216
196
|
blank
|
|
217
197
|
end
|
|
@@ -220,7 +200,7 @@ module ReVIEW
|
|
|
220
200
|
puts ".. #{type}::"
|
|
221
201
|
blank
|
|
222
202
|
puts " #{compile_inline(caption)}" unless caption.nil?
|
|
223
|
-
puts
|
|
203
|
+
puts ' ' + split_paragraph(lines).join("\n")
|
|
224
204
|
blank
|
|
225
205
|
end
|
|
226
206
|
|
|
@@ -230,12 +210,10 @@ module ReVIEW
|
|
|
230
210
|
puts caption
|
|
231
211
|
print "\n"
|
|
232
212
|
end
|
|
233
|
-
lang ||=
|
|
213
|
+
lang ||= 'none'
|
|
234
214
|
puts ".. code-block:: #{lang}"
|
|
235
215
|
blank
|
|
236
|
-
lines.each
|
|
237
|
-
puts " " + detab(line)
|
|
238
|
-
end
|
|
216
|
+
lines.each { |line| puts ' ' + detab(line) }
|
|
239
217
|
blank
|
|
240
218
|
end
|
|
241
219
|
|
|
@@ -245,33 +223,27 @@ module ReVIEW
|
|
|
245
223
|
puts caption
|
|
246
224
|
print "\n"
|
|
247
225
|
end
|
|
248
|
-
lang ||=
|
|
226
|
+
lang ||= 'none'
|
|
249
227
|
puts ".. code-block:: #{lang}"
|
|
250
|
-
puts
|
|
228
|
+
puts ' :linenos:'
|
|
251
229
|
blank
|
|
252
|
-
lines.each
|
|
253
|
-
puts " " + detab(line)
|
|
254
|
-
end
|
|
230
|
+
lines.each { |line| puts ' ' + detab(line) }
|
|
255
231
|
blank
|
|
256
232
|
end
|
|
257
233
|
|
|
258
|
-
def listnum_body(lines,
|
|
259
|
-
lines.each_with_index
|
|
260
|
-
puts(i + 1).to_s.rjust(2) + ": #{line}"
|
|
261
|
-
end
|
|
234
|
+
def listnum_body(lines, _lang)
|
|
235
|
+
lines.each_with_index { |line, i| puts(i + 1).to_s.rjust(2) + ": #{line}" }
|
|
262
236
|
blank
|
|
263
237
|
end
|
|
264
238
|
|
|
265
|
-
def cmd(lines,
|
|
266
|
-
puts
|
|
267
|
-
lines.each
|
|
268
|
-
puts " " + detab(line)
|
|
269
|
-
end
|
|
239
|
+
def cmd(lines, _caption = nil)
|
|
240
|
+
puts '.. code-block:: bash'
|
|
241
|
+
lines.each { |line| puts ' ' + detab(line) }
|
|
270
242
|
end
|
|
271
243
|
|
|
272
244
|
def quote(lines)
|
|
273
245
|
blank
|
|
274
|
-
puts lines.map{|line| " #{line}"}.join
|
|
246
|
+
puts lines.map { |line| " #{line}" }.join
|
|
275
247
|
blank
|
|
276
248
|
end
|
|
277
249
|
|
|
@@ -285,9 +257,7 @@ module ReVIEW
|
|
|
285
257
|
|
|
286
258
|
def image_image(id, caption, metric)
|
|
287
259
|
chapter, id = extract_chapter_id(id)
|
|
288
|
-
if metric
|
|
289
|
-
scale = metric.split("=")[1].to_f * 100
|
|
290
|
-
end
|
|
260
|
+
scale = metric.split('=')[1].to_f * 100 if metric
|
|
291
261
|
|
|
292
262
|
puts ".. _#{id}:"
|
|
293
263
|
blank
|
|
@@ -310,9 +280,9 @@ module ReVIEW
|
|
|
310
280
|
end
|
|
311
281
|
|
|
312
282
|
def texequation(lines)
|
|
313
|
-
puts
|
|
283
|
+
puts '.. math::'
|
|
314
284
|
blank
|
|
315
|
-
puts lines.map{|line| " #{line}"}.join
|
|
285
|
+
puts lines.map { |line| " #{line}" }.join
|
|
316
286
|
blank
|
|
317
287
|
end
|
|
318
288
|
|
|
@@ -323,7 +293,7 @@ module ReVIEW
|
|
|
323
293
|
end
|
|
324
294
|
blank
|
|
325
295
|
puts ".. list-table:: #{compile_inline(caption)}"
|
|
326
|
-
puts
|
|
296
|
+
puts ' :header-rows: 1'
|
|
327
297
|
blank
|
|
328
298
|
end
|
|
329
299
|
|
|
@@ -332,14 +302,14 @@ module ReVIEW
|
|
|
332
302
|
|
|
333
303
|
def tr(rows)
|
|
334
304
|
first = true
|
|
335
|
-
rows.each
|
|
305
|
+
rows.each do |row|
|
|
336
306
|
if first
|
|
337
307
|
puts " * - #{row}"
|
|
338
308
|
first = false
|
|
339
309
|
else
|
|
340
310
|
puts " - #{row}"
|
|
341
311
|
end
|
|
342
|
-
|
|
312
|
+
end
|
|
343
313
|
end
|
|
344
314
|
|
|
345
315
|
def th(str)
|
|
@@ -358,17 +328,17 @@ module ReVIEW
|
|
|
358
328
|
table(lines, nil, caption)
|
|
359
329
|
end
|
|
360
330
|
|
|
361
|
-
def comment(lines,
|
|
362
|
-
puts lines.map{|line| " .. #{line}"}.join
|
|
331
|
+
def comment(lines, _comment = nil)
|
|
332
|
+
puts lines.map { |line| " .. #{line}" }.join
|
|
363
333
|
end
|
|
364
334
|
|
|
365
335
|
def footnote(id, str)
|
|
366
|
-
puts ".. [##{id.sub(
|
|
336
|
+
puts ".. [##{id.sub(' ', '_')}] #{compile_inline(str)}"
|
|
367
337
|
blank
|
|
368
338
|
end
|
|
369
339
|
|
|
370
340
|
def inline_fn(id)
|
|
371
|
-
" [##{id.sub(
|
|
341
|
+
" [##{id.sub(' ', '_')}]_ "
|
|
372
342
|
end
|
|
373
343
|
|
|
374
344
|
def compile_ruby(base, ruby)
|
|
@@ -388,19 +358,19 @@ module ReVIEW
|
|
|
388
358
|
end
|
|
389
359
|
|
|
390
360
|
def inline_sup(str)
|
|
391
|
-
" :superscript
|
|
361
|
+
" :superscript:`#{str}` "
|
|
392
362
|
end
|
|
393
363
|
|
|
394
364
|
def inline_sub(str)
|
|
395
|
-
" :subscript
|
|
365
|
+
" :subscript:`#{str}` "
|
|
396
366
|
end
|
|
397
367
|
|
|
398
368
|
def inline_raw(str)
|
|
399
369
|
matched = str.match(/\|(.*?)\|(.*)/)
|
|
400
370
|
if matched
|
|
401
|
-
matched[2].gsub(
|
|
371
|
+
matched[2].gsub('\\n', "\n")
|
|
402
372
|
else
|
|
403
|
-
str.gsub(
|
|
373
|
+
str.gsub('\\n', "\n")
|
|
404
374
|
end
|
|
405
375
|
end
|
|
406
376
|
|
|
@@ -428,11 +398,11 @@ module ReVIEW
|
|
|
428
398
|
end
|
|
429
399
|
|
|
430
400
|
def inline_i(str)
|
|
431
|
-
" *#{str.gsub(
|
|
401
|
+
" *#{str.gsub('*', '\*')}* "
|
|
432
402
|
end
|
|
433
403
|
|
|
434
404
|
def inline_b(str)
|
|
435
|
-
" **#{str.gsub(
|
|
405
|
+
" **#{str.gsub('*', '\*')}** "
|
|
436
406
|
end
|
|
437
407
|
|
|
438
408
|
alias_method :inline_strong, :inline_b
|
|
@@ -447,7 +417,7 @@ module ReVIEW
|
|
|
447
417
|
alias_method :inline_ttbold, :inline_ttb
|
|
448
418
|
|
|
449
419
|
def inline_u(str)
|
|
450
|
-
" :subscript
|
|
420
|
+
" :subscript:`#{str}` "
|
|
451
421
|
end
|
|
452
422
|
|
|
453
423
|
def inline_icon(id)
|
|
@@ -469,14 +439,14 @@ module ReVIEW
|
|
|
469
439
|
end
|
|
470
440
|
|
|
471
441
|
def inline_uchar(str)
|
|
472
|
-
[str.to_i(16)].pack(
|
|
442
|
+
[str.to_i(16)].pack('U')
|
|
473
443
|
end
|
|
474
444
|
|
|
475
445
|
def inline_comment(str)
|
|
476
|
-
if @book.config[
|
|
477
|
-
|
|
446
|
+
if @book.config['draft']
|
|
447
|
+
str
|
|
478
448
|
else
|
|
479
|
-
|
|
449
|
+
''
|
|
480
450
|
end
|
|
481
451
|
end
|
|
482
452
|
|
|
@@ -484,7 +454,7 @@ module ReVIEW
|
|
|
484
454
|
" :math:`#{str}` "
|
|
485
455
|
end
|
|
486
456
|
|
|
487
|
-
def inline_hd_chap(
|
|
457
|
+
def inline_hd_chap(_chap, id)
|
|
488
458
|
" :ref:`#{id}` "
|
|
489
459
|
end
|
|
490
460
|
|
|
@@ -492,7 +462,7 @@ module ReVIEW
|
|
|
492
462
|
# TODO
|
|
493
463
|
end
|
|
494
464
|
|
|
495
|
-
def nonum_begin(
|
|
465
|
+
def nonum_begin(_level, _label, caption)
|
|
496
466
|
puts ".. rubric: #{compile_inline(caption)}"
|
|
497
467
|
blank
|
|
498
468
|
end
|
|
@@ -500,169 +470,169 @@ module ReVIEW
|
|
|
500
470
|
def nonum_end(level)
|
|
501
471
|
end
|
|
502
472
|
|
|
503
|
-
def common_column_begin(
|
|
473
|
+
def common_column_begin(_type, caption)
|
|
504
474
|
blank
|
|
505
475
|
puts ".. column:: #{compile_inline(caption)}"
|
|
506
476
|
blank
|
|
507
477
|
@in_role = true
|
|
508
478
|
end
|
|
509
479
|
|
|
510
|
-
def common_column_end(
|
|
480
|
+
def common_column_end(_type)
|
|
511
481
|
@in_role = false
|
|
512
482
|
blank
|
|
513
483
|
end
|
|
514
484
|
|
|
515
|
-
def column_begin(
|
|
516
|
-
common_column_begin(
|
|
485
|
+
def column_begin(_level, _label, caption)
|
|
486
|
+
common_column_begin('column', caption)
|
|
517
487
|
end
|
|
518
488
|
|
|
519
|
-
def column_end(
|
|
520
|
-
common_column_end(
|
|
489
|
+
def column_end(_level)
|
|
490
|
+
common_column_end('column')
|
|
521
491
|
end
|
|
522
492
|
|
|
523
|
-
def xcolumn_begin(
|
|
524
|
-
common_column_begin(
|
|
493
|
+
def xcolumn_begin(_level, _label, caption)
|
|
494
|
+
common_column_begin('xcolumn', caption)
|
|
525
495
|
end
|
|
526
496
|
|
|
527
|
-
def xcolumn_end(
|
|
528
|
-
common_column_end(
|
|
497
|
+
def xcolumn_end(_level)
|
|
498
|
+
common_column_end('xcolumn')
|
|
529
499
|
end
|
|
530
500
|
|
|
531
|
-
def world_begin(
|
|
532
|
-
common_column_begin(
|
|
501
|
+
def world_begin(_level, _label, caption)
|
|
502
|
+
common_column_begin('world', caption)
|
|
533
503
|
end
|
|
534
504
|
|
|
535
|
-
def world_end(
|
|
536
|
-
common_column_end(
|
|
505
|
+
def world_end(_level)
|
|
506
|
+
common_column_end('world')
|
|
537
507
|
end
|
|
538
508
|
|
|
539
|
-
def hood_begin(
|
|
540
|
-
common_column_begin(
|
|
509
|
+
def hood_begin(_level, _label, caption)
|
|
510
|
+
common_column_begin('hood', caption)
|
|
541
511
|
end
|
|
542
512
|
|
|
543
|
-
def hood_end(
|
|
544
|
-
common_column_end(
|
|
513
|
+
def hood_end(_level)
|
|
514
|
+
common_column_end('hood')
|
|
545
515
|
end
|
|
546
516
|
|
|
547
|
-
def edition_begin(
|
|
548
|
-
common_column_begin(
|
|
517
|
+
def edition_begin(_level, _label, caption)
|
|
518
|
+
common_column_begin('edition', caption)
|
|
549
519
|
end
|
|
550
520
|
|
|
551
|
-
def edition_end(
|
|
552
|
-
common_column_end(
|
|
521
|
+
def edition_end(_level)
|
|
522
|
+
common_column_end('edition')
|
|
553
523
|
end
|
|
554
524
|
|
|
555
|
-
def insideout_begin(
|
|
556
|
-
common_column_begin(
|
|
525
|
+
def insideout_begin(_level, _label, caption)
|
|
526
|
+
common_column_begin('insideout', caption)
|
|
557
527
|
end
|
|
558
528
|
|
|
559
|
-
def insideout_end(
|
|
560
|
-
common_column_end(
|
|
529
|
+
def insideout_end(_level)
|
|
530
|
+
common_column_end('insideout')
|
|
561
531
|
end
|
|
562
532
|
|
|
563
|
-
def ref_begin(
|
|
564
|
-
common_column_begin(
|
|
533
|
+
def ref_begin(_level, _label, caption)
|
|
534
|
+
common_column_begin('ref', caption)
|
|
565
535
|
end
|
|
566
536
|
|
|
567
|
-
def ref_end(
|
|
568
|
-
common_column_end(
|
|
537
|
+
def ref_end(_level)
|
|
538
|
+
common_column_end('ref')
|
|
569
539
|
end
|
|
570
540
|
|
|
571
|
-
def sup_begin(
|
|
572
|
-
common_column_begin(
|
|
541
|
+
def sup_begin(_level, _label, caption)
|
|
542
|
+
common_column_begin('sup', caption)
|
|
573
543
|
end
|
|
574
544
|
|
|
575
|
-
def sup_end(
|
|
576
|
-
common_column_end(
|
|
545
|
+
def sup_end(_level)
|
|
546
|
+
common_column_end('sup')
|
|
577
547
|
end
|
|
578
548
|
|
|
579
549
|
def flushright(lines)
|
|
580
|
-
base_parablock
|
|
550
|
+
base_parablock 'flushright', lines, nil
|
|
581
551
|
end
|
|
582
552
|
|
|
583
553
|
def centering(lines)
|
|
584
|
-
base_parablock
|
|
554
|
+
base_parablock 'centering', lines, nil
|
|
585
555
|
end
|
|
586
556
|
|
|
587
557
|
def note(lines, caption = nil)
|
|
588
|
-
base_parablock
|
|
558
|
+
base_parablock 'note', lines, caption
|
|
589
559
|
end
|
|
590
560
|
|
|
591
561
|
def memo(lines, caption = nil)
|
|
592
|
-
base_parablock
|
|
562
|
+
base_parablock 'memo', lines, caption
|
|
593
563
|
end
|
|
594
564
|
|
|
595
565
|
def tip(lines, caption = nil)
|
|
596
|
-
base_parablock
|
|
566
|
+
base_parablock 'tip', lines, caption
|
|
597
567
|
end
|
|
598
568
|
|
|
599
569
|
def info(lines, caption = nil)
|
|
600
|
-
base_parablock
|
|
570
|
+
base_parablock 'info', lines, caption
|
|
601
571
|
end
|
|
602
572
|
|
|
603
573
|
def planning(lines, caption = nil)
|
|
604
|
-
base_parablock
|
|
574
|
+
base_parablock 'planning', lines, caption
|
|
605
575
|
end
|
|
606
576
|
|
|
607
577
|
def best(lines, caption = nil)
|
|
608
|
-
base_parablock
|
|
578
|
+
base_parablock 'best', lines, caption
|
|
609
579
|
end
|
|
610
580
|
|
|
611
581
|
def important(lines, caption = nil)
|
|
612
|
-
base_parablock
|
|
582
|
+
base_parablock 'important', lines, caption
|
|
613
583
|
end
|
|
614
584
|
|
|
615
585
|
def security(lines, caption = nil)
|
|
616
|
-
base_parablock
|
|
586
|
+
base_parablock 'security', lines, caption
|
|
617
587
|
end
|
|
618
588
|
|
|
619
589
|
def caution(lines, caption = nil)
|
|
620
|
-
base_parablock
|
|
590
|
+
base_parablock 'caution', lines, caption
|
|
621
591
|
end
|
|
622
592
|
|
|
623
593
|
def term(lines)
|
|
624
|
-
base_parablock
|
|
594
|
+
base_parablock 'term', lines, nil
|
|
625
595
|
end
|
|
626
596
|
|
|
627
597
|
def link(lines, caption = nil)
|
|
628
|
-
base_parablock
|
|
598
|
+
base_parablock 'link', lines, caption
|
|
629
599
|
end
|
|
630
600
|
|
|
631
601
|
def notice(lines, caption = nil)
|
|
632
|
-
base_parablock
|
|
602
|
+
base_parablock 'notice', lines, caption
|
|
633
603
|
end
|
|
634
604
|
|
|
635
605
|
def point(lines, caption = nil)
|
|
636
|
-
base_parablock
|
|
606
|
+
base_parablock 'point', lines, caption
|
|
637
607
|
end
|
|
638
608
|
|
|
639
609
|
def shoot(lines, caption = nil)
|
|
640
|
-
base_parablock
|
|
610
|
+
base_parablock 'shoot', lines, caption
|
|
641
611
|
end
|
|
642
612
|
|
|
643
613
|
def reference(lines)
|
|
644
|
-
base_parablock
|
|
614
|
+
base_parablock 'reference', lines, nil
|
|
645
615
|
end
|
|
646
616
|
|
|
647
617
|
def practice(lines)
|
|
648
|
-
base_parablock
|
|
618
|
+
base_parablock 'practice', lines, nil
|
|
649
619
|
end
|
|
650
620
|
|
|
651
621
|
def expert(lines)
|
|
652
|
-
base_parablock
|
|
622
|
+
base_parablock 'expert', lines, nil
|
|
653
623
|
end
|
|
654
624
|
|
|
655
625
|
def insn(lines, caption = nil)
|
|
656
|
-
base_block
|
|
626
|
+
base_block 'insn', lines, caption
|
|
657
627
|
end
|
|
658
628
|
|
|
659
629
|
def warning(lines, caption = nil)
|
|
660
|
-
base_parablock
|
|
630
|
+
base_parablock 'warning', lines, caption
|
|
661
631
|
end
|
|
662
632
|
|
|
663
633
|
alias_method :box, :insn
|
|
664
634
|
|
|
665
|
-
def indepimage(id, caption =
|
|
635
|
+
def indepimage(_lines, id, caption = '', _metric = nil)
|
|
666
636
|
chapter, id = extract_chapter_id(id)
|
|
667
637
|
puts ".. _#{id}:"
|
|
668
638
|
blank
|
|
@@ -684,23 +654,23 @@ module ReVIEW
|
|
|
684
654
|
end
|
|
685
655
|
|
|
686
656
|
def bpo(lines)
|
|
687
|
-
base_block
|
|
657
|
+
base_block 'bpo', lines, nil
|
|
688
658
|
end
|
|
689
659
|
|
|
690
|
-
def inline_dtp(
|
|
691
|
-
|
|
660
|
+
def inline_dtp(_str)
|
|
661
|
+
''
|
|
692
662
|
end
|
|
693
663
|
|
|
694
664
|
def inline_del(str)
|
|
695
|
-
" :del
|
|
665
|
+
" :del:`#{str}` "
|
|
696
666
|
end
|
|
697
667
|
|
|
698
668
|
def inline_code(str)
|
|
699
669
|
" :code:`#{str}` "
|
|
700
670
|
end
|
|
701
671
|
|
|
702
|
-
def inline_br(
|
|
703
|
-
|
|
672
|
+
def inline_br(_str)
|
|
673
|
+
"\n"
|
|
704
674
|
end
|
|
705
675
|
|
|
706
676
|
def text(str)
|
|
@@ -715,8 +685,8 @@ module ReVIEW
|
|
|
715
685
|
" :numref:`#{id}` "
|
|
716
686
|
end
|
|
717
687
|
|
|
718
|
-
def source(lines, caption = nil,
|
|
719
|
-
base_block
|
|
688
|
+
def source(lines, caption = nil, _lang = nil)
|
|
689
|
+
base_block 'source', lines, caption
|
|
720
690
|
end
|
|
721
691
|
|
|
722
692
|
def inline_ttibold(str)
|
|
@@ -733,7 +703,7 @@ module ReVIEW
|
|
|
733
703
|
" :ref:`#{idref}` "
|
|
734
704
|
end
|
|
735
705
|
|
|
736
|
-
def circle_begin(
|
|
706
|
+
def circle_begin(_level, _label, caption)
|
|
737
707
|
puts "・\t#{caption}"
|
|
738
708
|
end
|
|
739
709
|
|
|
@@ -753,7 +723,7 @@ module ReVIEW
|
|
|
753
723
|
end
|
|
754
724
|
|
|
755
725
|
def bibpaper_bibpaper(id, caption, lines)
|
|
756
|
-
puts ".. [#{id}] #{compile_inline(caption)} #{split_paragraph(lines).join
|
|
726
|
+
puts ".. [#{id}] #{compile_inline(caption)} #{split_paragraph(lines).join}"
|
|
757
727
|
end
|
|
758
728
|
|
|
759
729
|
def inline_warn(str)
|
|
@@ -763,7 +733,5 @@ module ReVIEW
|
|
|
763
733
|
def inline_bib(id)
|
|
764
734
|
" [#{id}]_ "
|
|
765
735
|
end
|
|
766
|
-
|
|
767
736
|
end
|
|
768
|
-
|
|
769
737
|
end # module ReVIEW
|