review 2.0.0.beta1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +66 -1
- data/.rubocop_todo.yml +617 -0
- data/.travis.yml +16 -1
- data/ChangeLog +48 -0
- data/Dockerfile +22 -0
- data/Gemfile +0 -1
- data/README.md +97 -0
- data/Rakefile +10 -11
- data/appveyor.yml +9 -0
- data/bin/review +46 -0
- data/bin/review-check +8 -21
- data/bin/review-compile +26 -43
- data/bin/review-index +9 -22
- data/bin/review-init +21 -25
- data/bin/review-preproc +9 -13
- data/bin/review-validate +1 -1
- data/bin/review-vol +3 -17
- data/bin/review-webmaker +15 -0
- data/doc/NEWS.ja.md +534 -0
- data/doc/NEWS.md +538 -0
- data/doc/catalog.ja.md +10 -18
- data/doc/catalog.md +5 -9
- data/doc/config.yml.sample +319 -0
- data/doc/customize_epub.ja.md +42 -0
- data/doc/format.ja.md +320 -288
- data/doc/format.md +277 -170
- data/doc/format_idg.ja.md +82 -175
- data/doc/pdfmaker.ja.md +61 -0
- data/doc/pdfmaker.md +65 -0
- data/doc/quickstart.ja.md +88 -98
- data/doc/quickstart.md +72 -110
- data/doc/sample.css +41 -0
- data/doc/writing_vertical.ja.md +55 -0
- data/doc/writing_vertical.md +5 -0
- data/lib/epubmaker/content.rb +3 -3
- data/lib/epubmaker/epubcommon.rb +173 -145
- data/lib/epubmaker/epubv2.rb +24 -77
- data/lib/epubmaker/epubv3.rb +72 -73
- data/lib/epubmaker/producer.rb +54 -30
- data/lib/lineinput.rb +48 -0
- data/lib/review/book.rb +0 -1
- data/lib/review/book/base.rb +47 -27
- data/lib/review/book/chapter.rb +48 -19
- data/lib/review/book/compilable.rb +10 -14
- data/lib/review/book/index.rb +10 -19
- data/lib/review/book/page_metric.rb +0 -10
- data/lib/review/book/part.rb +17 -3
- data/lib/review/builder.rb +84 -68
- data/lib/review/catalog.rb +5 -1
- data/lib/review/compiler.rb +327 -4657
- data/lib/review/configure.rb +84 -10
- data/lib/review/converter.rb +28 -0
- data/lib/review/epubbuilder.rb +1 -1
- data/lib/review/epubmaker.rb +142 -158
- data/lib/review/ewbbuilder.rb +5 -5
- data/lib/review/exception.rb +1 -1
- data/lib/review/extentions.rb +1 -1
- data/lib/review/extentions/hash.rb +15 -0
- data/lib/review/extentions/string.rb +2 -1
- data/lib/review/htmlbuilder.rb +364 -348
- data/lib/review/htmltoc.rb +44 -0
- data/lib/review/htmlutils.rb +12 -6
- data/lib/review/i18n.rb +78 -6
- data/lib/review/i18n.yml +7 -4
- data/lib/review/idgxmlbuilder.rb +226 -267
- data/lib/review/latexbuilder.rb +281 -274
- data/lib/review/latexutils.rb +56 -49
- data/lib/review/makerhelper.rb +8 -4
- data/lib/review/markdownbuilder.rb +80 -124
- data/lib/review/pdfmaker.rb +197 -138
- data/lib/review/preprocessor.rb +16 -67
- data/lib/review/template.rb +24 -0
- data/lib/review/textbuilder.rb +1 -1
- data/lib/review/textutils.rb +18 -24
- data/lib/review/tocparser.rb +51 -106
- data/lib/review/tocprinter.rb +61 -117
- data/lib/review/topbuilder.rb +119 -126
- data/lib/review/unfold.rb +2 -2
- data/lib/review/version.rb +1 -1
- data/lib/review/webmaker.rb +302 -0
- data/lib/review/webtocprinter.rb +48 -0
- data/lib/review/yamlloader.rb +47 -0
- data/review.gemspec +3 -3
- data/templates/html/layout-html5.html.erb +17 -0
- data/templates/html/layout-xhtml1.html.erb +20 -0
- data/{lib/review → templates/latex}/layout.tex.erb +107 -115
- 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/web/html/layout-html5.html.erb +56 -0
- data/templates/web/html/layout-xhtml1.html.erb +20 -0
- data/templates/xml/container.xml.erb +6 -0
- data/test/assets/test.xml.erb +3 -0
- data/test/assets/test_template.tex +28 -71
- data/test/assets/test_template_backmatter.tex +1 -9
- data/test/sample-book/src/Rakefile +12 -3
- data/{doc/sample.yml → test/sample-book/src/config-epub2.yml} +92 -147
- data/test/sample-book/src/config.yml +40 -154
- data/test/sample-book/src/style-web.css +45 -0
- data/test/sample-book/src/style.css +23 -1
- data/test/test.re +1 -1
- data/test/test_book.rb +15 -17
- data/test/test_book_chapter.rb +2 -80
- data/test/test_book_part.rb +1 -1
- data/test/test_builder.rb +28 -6
- data/test/test_catalog.rb +17 -0
- data/test/test_compiler.rb +14 -59
- data/test/test_configure.rb +94 -0
- data/test/test_converter.rb +21 -0
- data/test/test_epub3maker.rb +155 -3
- data/test/test_epubmaker.rb +245 -30
- data/test/test_epubmaker_cmd.rb +2 -2
- data/test/test_extentions_hash.rb +60 -0
- data/test/test_helper.rb +4 -47
- data/test/test_htmlbuilder.rb +282 -175
- data/test/test_htmltoc.rb +33 -0
- data/test/test_i18n.rb +134 -70
- data/test/test_idgxmlbuilder.rb +58 -39
- data/test/test_latexbuilder.rb +132 -14
- data/test/test_lineinput.rb +5 -26
- data/test/test_makerhelper.rb +6 -4
- data/test/test_markdownbuilder.rb +23 -5
- data/test/test_pdfmaker.rb +86 -20
- data/test/test_pdfmaker_cmd.rb +1 -3
- data/test/test_review_ext.rb +1 -1
- data/test/test_template.rb +27 -0
- data/test/test_textutils.rb +36 -0
- data/test/test_tocparser.rb +25 -0
- data/test/test_topbuilder.rb +34 -2
- data/test/test_yamlloader.rb +188 -0
- metadata +71 -29
- data/README.rdoc +0 -81
- data/bin/review-epubmaker-legacy +0 -1024
- data/doc/ruby-uuid/README +0 -11
- data/doc/ruby-uuid/README.ja +0 -34
- data/lib/review/compiler/literals_1_8.kpeg +0 -19
- data/lib/review/compiler/literals_1_8.rb +0 -432
- data/lib/review/compiler/literals_1_9.kpeg +0 -22
- data/lib/review/compiler/literals_1_9.rb +0 -435
- data/lib/review/extentions/array.rb +0 -25
- data/lib/review/htmllayout.rb +0 -41
- data/lib/review/inaobuilder.rb +0 -357
- data/lib/review/location.rb +0 -24
- data/lib/review/node.rb +0 -267
- data/lib/review/review.kpeg +0 -724
- data/lib/uuid.rb +0 -312
- data/rubocop-todo.yml +0 -456
- data/test/test_inaobuilder.rb +0 -247
- data/test/test_uuid.rb +0 -157
data/lib/review/latexutils.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
#
|
3
|
-
# $Id: latexutils.rb 2204 2006-03-18 06:10:26Z aamine $
|
4
|
-
#
|
5
3
|
# Copyright (c) 2002-2006 Minero Aoki
|
4
|
+
# Copyright (c) 2006-2016 Minero Aoki, Kenshi Muto and Masayoshi Takahashi
|
6
5
|
#
|
7
6
|
# This program is free software.
|
8
7
|
# You can distribute or modify this program under the terms of
|
@@ -16,63 +15,71 @@ module ReVIEW
|
|
16
15
|
|
17
16
|
module LaTeXUtils
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
'①' => '\UTF{2460}',
|
37
|
-
'②' => '\UTF{2461}',
|
38
|
-
'③' => '\UTF{2462}',
|
39
|
-
'④' => '\UTF{2463}',
|
40
|
-
'⑤' => '\UTF{2464}',
|
41
|
-
'⑥' => '\UTF{2465}',
|
42
|
-
'⑦' => '\UTF{2466}',
|
43
|
-
'⑧' => '\UTF{2467}',
|
44
|
-
'⑨' => '\UTF{2468}',
|
45
|
-
'⑩' => '\UTF{2469}',
|
46
|
-
'⑪' => '\UTF{246A}',
|
47
|
-
'⑫' => '\UTF{246B}',
|
48
|
-
'⑬' => '\UTF{246C}',
|
49
|
-
'⑭' => '\UTF{246D}',
|
50
|
-
'⑮' => '\UTF{246E}',
|
51
|
-
'⑯' => '\UTF{246F}',
|
52
|
-
}
|
53
|
-
|
54
|
-
kanalist = %w{。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゙ ゚}
|
55
|
-
kanalist.each do |char|
|
56
|
-
char_jisx0208 = NKF::nkf('-WwX',char)
|
57
|
-
METACHARS[char] = "\\aj半角{#{char_jisx0208}}"
|
58
|
-
end
|
59
|
-
|
60
|
-
METACHARS_RE = /[#{Regexp.escape(METACHARS.keys.join(''))}]/u
|
18
|
+
def initialize_metachars(texcommand)
|
19
|
+
@metachars = {
|
20
|
+
'#' => '\#',
|
21
|
+
"$" => '\textdollar{}',
|
22
|
+
'%' => '\%',
|
23
|
+
'&' => '\&',
|
24
|
+
'{' => '\{',
|
25
|
+
'}' => '\}',
|
26
|
+
'_' => '\textunderscore{}',
|
27
|
+
'^' => '\textasciicircum{}',
|
28
|
+
'~' => '\textasciitilde{}',
|
29
|
+
'|' => '\textbar{}',
|
30
|
+
'<' => '\textless{}',
|
31
|
+
'>' => '\textgreater{}',
|
32
|
+
"\\" => '\reviewbackslash{}',
|
33
|
+
"-" => '{-}'
|
34
|
+
}
|
61
35
|
|
62
|
-
|
36
|
+
if File.basename(texcommand, ".*") == "platex"
|
37
|
+
@metachars.merge!({
|
38
|
+
'⓪' => '\UTF{24EA}',
|
39
|
+
'①' => '\UTF{2460}',
|
40
|
+
'②' => '\UTF{2461}',
|
41
|
+
'③' => '\UTF{2462}',
|
42
|
+
'④' => '\UTF{2463}',
|
43
|
+
'⑤' => '\UTF{2464}',
|
44
|
+
'⑥' => '\UTF{2465}',
|
45
|
+
'⑦' => '\UTF{2466}',
|
46
|
+
'⑧' => '\UTF{2467}',
|
47
|
+
'⑨' => '\UTF{2468}',
|
48
|
+
'⑩' => '\UTF{2469}',
|
49
|
+
'⑪' => '\UTF{246A}',
|
50
|
+
'⑫' => '\UTF{246B}',
|
51
|
+
'⑬' => '\UTF{246C}',
|
52
|
+
'⑭' => '\UTF{246D}',
|
53
|
+
'⑮' => '\UTF{246E}',
|
54
|
+
'⑯' => '\UTF{246F}'
|
55
|
+
})
|
56
|
+
|
57
|
+
kanalist = %w{。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ
|
58
|
+
オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ
|
59
|
+
ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゙ ゚}
|
60
|
+
kanalist.each do |char|
|
61
|
+
char_jisx0208 = NKF::nkf('-WwX',char)
|
62
|
+
@metachars[char] = "\\aj半角{#{char_jisx0208}}"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
@metachars_re = /[#{Regexp.escape(@metachars.keys.join(''))}]/u
|
67
|
+
|
68
|
+
@metachars_invert = @metachars.invert
|
69
|
+
end
|
63
70
|
|
64
71
|
def escape_latex(str)
|
65
|
-
str.gsub(
|
66
|
-
|
72
|
+
str.gsub(@metachars_re) {|s|
|
73
|
+
@metachars[s] or raise "unknown trans char: #{s}"
|
67
74
|
}
|
68
75
|
end
|
69
76
|
|
70
77
|
alias_method :escape, :escape_latex
|
71
78
|
|
72
79
|
def unescape_latex(str)
|
73
|
-
metachars_invert_re = Regexp.new(
|
80
|
+
metachars_invert_re = Regexp.new(@metachars_invert.keys.collect{|key| Regexp.escape(key)}.join('|'))
|
74
81
|
str.gsub(metachars_invert_re) {|s|
|
75
|
-
|
82
|
+
@metachars_invert[s] or raise "unknown trans char: #{s}"
|
76
83
|
}
|
77
84
|
end
|
78
85
|
|
data/lib/review/makerhelper.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
#
|
3
|
-
# Copyright (c) 2012-
|
3
|
+
# Copyright (c) 2012-2016 Yuto HAYAMIZU, Kenshi Muto
|
4
4
|
#
|
5
5
|
# This program is free software.
|
6
6
|
# You can distribute or modify this program under the terms of
|
@@ -9,13 +9,15 @@
|
|
9
9
|
#
|
10
10
|
require 'pathname'
|
11
11
|
require 'fileutils'
|
12
|
+
require 'yaml'
|
12
13
|
|
13
14
|
module ReVIEW
|
14
|
-
|
15
|
+
module MakerHelper
|
15
16
|
# Return review/bin directory
|
16
|
-
def
|
17
|
+
def bindir
|
17
18
|
Pathname.new("#{Pathname.new(__FILE__).realpath.dirname}/../../bin").realpath
|
18
19
|
end
|
20
|
+
module_function :bindir
|
19
21
|
|
20
22
|
# Copy image files under from_dir to to_dir recursively
|
21
23
|
# ==== Args
|
@@ -33,7 +35,7 @@ module ReVIEW
|
|
33
35
|
# Image files are copied recursively, and each '.eps' file is converted into '.eps.png'
|
34
36
|
#
|
35
37
|
|
36
|
-
def
|
38
|
+
def copy_images_to_dir(from_dir, to_dir, options = {})
|
37
39
|
image_files = []
|
38
40
|
|
39
41
|
Dir.open(from_dir) do |dir|
|
@@ -63,5 +65,7 @@ module ReVIEW
|
|
63
65
|
|
64
66
|
image_files
|
65
67
|
end
|
68
|
+
module_function :copy_images_to_dir
|
69
|
+
|
66
70
|
end
|
67
71
|
end
|
@@ -16,141 +16,123 @@ module ReVIEW
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def builder_init_file
|
19
|
+
@blank_seen = nil
|
19
20
|
@ul_indent = 0
|
20
21
|
@chapter.book.image_types = %w( .png .jpg .jpeg .gif .svg )
|
21
22
|
end
|
22
23
|
private :builder_init_file
|
23
24
|
|
24
|
-
def
|
25
|
+
def puts(str)
|
25
26
|
@blank_seen = false
|
27
|
+
super
|
26
28
|
end
|
27
29
|
|
28
|
-
# def puts(str)
|
29
|
-
# @blank_seen = false
|
30
|
-
# "#{str}\n"
|
31
|
-
# end
|
32
|
-
|
33
30
|
def blank
|
34
|
-
|
35
|
-
unless @blank_seen
|
36
|
-
buf = "\n"
|
37
|
-
end
|
31
|
+
@output.puts unless @blank_seen
|
38
32
|
@blank_seen = true
|
39
|
-
buf
|
40
33
|
end
|
41
34
|
|
42
35
|
def headline(level, label, caption)
|
43
|
-
|
44
|
-
buf << blank
|
36
|
+
blank
|
45
37
|
prefix = "#" * level
|
46
|
-
|
47
|
-
|
48
|
-
buf << "\n"
|
49
|
-
buf
|
38
|
+
puts "#{prefix} #{caption}"
|
39
|
+
blank
|
50
40
|
end
|
51
41
|
|
52
42
|
def quote(lines)
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
blank_reset
|
57
|
-
buf << "\n"
|
58
|
-
buf
|
43
|
+
blank
|
44
|
+
puts split_paragraph(lines).map{|line| "> #{line}"}.join("\n> \n")
|
45
|
+
blank
|
59
46
|
end
|
60
47
|
|
61
48
|
def paragraph(lines)
|
62
|
-
|
63
|
-
|
64
|
-
buf << "\n"
|
65
|
-
buf
|
49
|
+
puts lines.join
|
50
|
+
puts "\n"
|
66
51
|
end
|
67
52
|
|
68
53
|
def list_header(id, caption, lang)
|
69
|
-
lang ||= ""
|
70
54
|
if get_chap.nil?
|
71
|
-
%Q[リスト#{@chapter.list(id).number} #{compile_inline(caption)}\n
|
55
|
+
print %Q[リスト#{@chapter.list(id).number} #{compile_inline(caption)}\n\n]
|
72
56
|
else
|
73
|
-
%Q[リスト#{get_chap}.#{@chapter.list(id).number} #{compile_inline(caption)}\n
|
57
|
+
print %Q[リスト#{get_chap}.#{@chapter.list(id).number} #{compile_inline(caption)}\n\n]
|
74
58
|
end
|
59
|
+
lang ||= ""
|
60
|
+
puts "```#{lang}"
|
75
61
|
end
|
76
62
|
|
77
63
|
def list_body(id, lines, lang)
|
78
|
-
buf = ""
|
79
64
|
lines.each do |line|
|
80
|
-
|
65
|
+
puts detab(line)
|
81
66
|
end
|
82
|
-
|
83
|
-
buf
|
67
|
+
puts '```'
|
84
68
|
end
|
85
69
|
|
86
70
|
def ul_begin
|
87
|
-
|
88
|
-
buf << blank if @ul_indent == 0
|
71
|
+
blank if @ul_indent == 0
|
89
72
|
@ul_indent += 1
|
90
|
-
buf
|
91
73
|
end
|
92
74
|
|
93
75
|
def ul_item(lines)
|
94
|
-
|
95
|
-
" " * (@ul_indent - 1) + "* " + "#{lines.join}" + "\n"
|
76
|
+
puts " " * (@ul_indent - 1) + "* " + "#{lines.join}"
|
96
77
|
end
|
97
78
|
|
98
79
|
def ul_item_begin(lines)
|
99
|
-
|
100
|
-
" " * (@ul_indent - 1) + "* " + "#{lines.join}" + "\n"
|
80
|
+
puts " " * (@ul_indent - 1) + "* " + "#{lines.join}"
|
101
81
|
end
|
102
82
|
|
103
83
|
def ul_item_end
|
104
|
-
""
|
105
84
|
end
|
106
85
|
|
107
86
|
def ul_end
|
108
|
-
buf = ""
|
109
87
|
@ul_indent -= 1
|
110
|
-
|
111
|
-
buf
|
88
|
+
blank if @ul_indent == 0
|
112
89
|
end
|
113
90
|
|
114
91
|
def ol_begin
|
115
|
-
|
116
|
-
buf << blank
|
117
|
-
buf
|
92
|
+
blank
|
118
93
|
end
|
119
94
|
|
120
95
|
def ol_item(lines, num)
|
121
|
-
|
122
|
-
buf << "#{num}. #{lines.join}" << "\n"
|
123
|
-
blank_reset
|
124
|
-
buf
|
96
|
+
puts "#{num}. #{lines.join}"
|
125
97
|
end
|
126
98
|
|
127
99
|
def ol_end
|
128
|
-
|
129
|
-
|
130
|
-
|
100
|
+
blank
|
101
|
+
end
|
102
|
+
|
103
|
+
def dl_begin
|
104
|
+
puts '<dl>'
|
105
|
+
end
|
106
|
+
|
107
|
+
def dt(line)
|
108
|
+
puts "<dt>#{line}</dt>"
|
109
|
+
end
|
110
|
+
|
111
|
+
def dd(lines)
|
112
|
+
puts "<dd>#{lines.join}</dd>"
|
113
|
+
end
|
114
|
+
|
115
|
+
def dl_end
|
116
|
+
puts '</dl>'
|
131
117
|
end
|
132
118
|
|
133
119
|
def emlist(lines, caption = nil, lang = nil)
|
134
|
-
|
135
|
-
buf << blank
|
120
|
+
blank
|
136
121
|
if caption
|
137
|
-
|
122
|
+
puts caption
|
123
|
+
print "\n"
|
138
124
|
end
|
139
125
|
lang ||= ""
|
140
|
-
|
141
|
-
blank_reset
|
126
|
+
puts "```#{lang}"
|
142
127
|
lines.each do |line|
|
143
|
-
|
128
|
+
puts detab(line)
|
144
129
|
end
|
145
|
-
|
146
|
-
|
147
|
-
buf
|
130
|
+
puts "```"
|
131
|
+
blank
|
148
132
|
end
|
149
133
|
|
150
134
|
def hr
|
151
|
-
|
152
|
-
blank_reset
|
153
|
-
buf
|
135
|
+
puts "----"
|
154
136
|
end
|
155
137
|
|
156
138
|
def compile_href(url, label)
|
@@ -184,60 +166,45 @@ module ReVIEW
|
|
184
166
|
|
185
167
|
|
186
168
|
def image_image(id, caption, metric)
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
blank_reset
|
191
|
-
buf << blank
|
192
|
-
buf
|
169
|
+
blank
|
170
|
+
puts "![#{compile_inline(caption)}](#{@chapter.image(id).path.sub(/\A\.\//, "")})"
|
171
|
+
blank
|
193
172
|
end
|
194
173
|
|
195
174
|
def image_dummy(id, caption, lines)
|
196
|
-
|
197
|
-
buf << lines.join << "\n"
|
198
|
-
blank_reset
|
199
|
-
buf
|
175
|
+
puts lines.join
|
200
176
|
end
|
201
177
|
|
202
178
|
def inline_img(id)
|
203
179
|
"#{I18n.t("image")}#{@chapter.image(id).number}"
|
204
180
|
rescue KeyError
|
205
181
|
error "unknown image: #{id}"
|
206
|
-
"[UnknownImage:#{id}]"
|
182
|
+
nofunc_text("[UnknownImage:#{id}]")
|
207
183
|
end
|
208
184
|
|
209
185
|
def indepimage(id, caption="", metric=nil)
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
blank_reset
|
214
|
-
buf << blank
|
215
|
-
buf
|
186
|
+
blank
|
187
|
+
puts "![#{compile_inline(caption)}](#{@chapter.image(id).path.sub(/\A\.\//, "")})"
|
188
|
+
blank
|
216
189
|
end
|
217
190
|
|
218
191
|
def pagebreak
|
219
|
-
|
220
|
-
buf << "{pagebreak}" << "\n"
|
221
|
-
buf
|
192
|
+
puts "{pagebreak}"
|
222
193
|
end
|
223
194
|
|
224
195
|
def image_ext
|
225
196
|
"jpg"
|
226
197
|
end
|
227
198
|
|
228
|
-
def cmd(lines
|
229
|
-
|
230
|
-
buf << "```shell-session" << "\n"
|
231
|
-
blank_reset
|
199
|
+
def cmd(lines)
|
200
|
+
puts "```shell-session"
|
232
201
|
lines.each do |line|
|
233
|
-
|
202
|
+
puts detab(line)
|
234
203
|
end
|
235
|
-
|
236
|
-
buf
|
204
|
+
puts "```"
|
237
205
|
end
|
238
206
|
|
239
207
|
def table(lines, id = nil, caption = nil)
|
240
|
-
buf = ""
|
241
208
|
rows = []
|
242
209
|
sepidx = nil
|
243
210
|
lines.each_with_index do |line, idx|
|
@@ -247,58 +214,52 @@ module ReVIEW
|
|
247
214
|
sepidx ||= idx
|
248
215
|
next
|
249
216
|
end
|
250
|
-
rows.push line.strip.split(/\t+/).map{|s| s.sub(/\A\./, '') }
|
217
|
+
rows.push line.strip.split(/\t+/).map {|s| s.sub(/\A\./, '') }
|
251
218
|
end
|
252
219
|
rows = adjust_n_cols(rows)
|
253
220
|
|
254
221
|
begin
|
255
|
-
|
222
|
+
table_header id, caption unless caption.nil?
|
256
223
|
rescue KeyError
|
257
224
|
error "no such table: #{id}"
|
258
225
|
end
|
259
|
-
|
260
|
-
return
|
226
|
+
table_begin rows.first.size
|
227
|
+
return if rows.empty?
|
261
228
|
if sepidx
|
262
229
|
sepidx.times do
|
263
|
-
|
230
|
+
tr rows.shift.map {|s| th(s) }
|
264
231
|
end
|
265
|
-
|
232
|
+
table_border rows.first.size
|
266
233
|
rows.each do |cols|
|
267
|
-
|
234
|
+
tr cols.map {|s| td(s) }
|
268
235
|
end
|
269
236
|
else
|
270
237
|
rows.each do |cols|
|
271
238
|
h, *cs = *cols
|
272
|
-
tr
|
239
|
+
tr [th(h)] + cs.map {|s| td(s) }
|
273
240
|
end
|
274
241
|
end
|
275
|
-
|
276
|
-
buf
|
242
|
+
table_end
|
277
243
|
end
|
278
244
|
|
279
245
|
def table_header(id, caption)
|
280
|
-
buf = ""
|
281
246
|
if get_chap.nil?
|
282
|
-
|
247
|
+
puts %Q[#{I18n.t("table")}#{I18n.t("format_number_header_without_chapter", [@chapter.table(id).number])}#{I18n.t("caption_prefix")}#{compile_inline(caption)}]
|
283
248
|
else
|
284
|
-
|
249
|
+
puts %Q[#{I18n.t("table")}#{I18n.t("format_number_header", [get_chap, @chapter.table(id).number])}#{I18n.t("caption_prefix")}#{compile_inline(caption)}]
|
285
250
|
end
|
286
|
-
|
287
|
-
buf << blank
|
288
|
-
buf
|
251
|
+
blank
|
289
252
|
end
|
290
253
|
|
291
254
|
def table_begin(ncols)
|
292
|
-
""
|
293
255
|
end
|
294
256
|
|
295
257
|
def tr(rows)
|
296
|
-
"|#{rows.join("|")}
|
258
|
+
puts "|#{rows.join("|")}|"
|
297
259
|
end
|
298
260
|
|
299
261
|
def table_border(ncols)
|
300
|
-
|
301
|
-
(0..ncols).map{"|"}.join(":--") + "\n"
|
262
|
+
puts (0..ncols).map{"|"}.join(":--")
|
302
263
|
end
|
303
264
|
|
304
265
|
def th(str)
|
@@ -310,17 +271,12 @@ module ReVIEW
|
|
310
271
|
end
|
311
272
|
|
312
273
|
def table_end
|
313
|
-
|
314
|
-
buf << blank
|
315
|
-
buf
|
274
|
+
blank
|
316
275
|
end
|
317
276
|
|
318
277
|
def footnote(id, str)
|
319
|
-
|
320
|
-
|
321
|
-
blank_reset
|
322
|
-
buf << blank
|
323
|
-
buf
|
278
|
+
puts "[^#{id}]: #{compile_inline(str)}"
|
279
|
+
blank
|
324
280
|
end
|
325
281
|
|
326
282
|
def inline_fn(id)
|
@@ -336,4 +292,4 @@ module ReVIEW
|
|
336
292
|
end
|
337
293
|
end
|
338
294
|
|
339
|
-
end
|
295
|
+
end # module ReVIEW
|