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.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +66 -1
  3. data/.rubocop_todo.yml +617 -0
  4. data/.travis.yml +16 -1
  5. data/ChangeLog +48 -0
  6. data/Dockerfile +22 -0
  7. data/Gemfile +0 -1
  8. data/README.md +97 -0
  9. data/Rakefile +10 -11
  10. data/appveyor.yml +9 -0
  11. data/bin/review +46 -0
  12. data/bin/review-check +8 -21
  13. data/bin/review-compile +26 -43
  14. data/bin/review-index +9 -22
  15. data/bin/review-init +21 -25
  16. data/bin/review-preproc +9 -13
  17. data/bin/review-validate +1 -1
  18. data/bin/review-vol +3 -17
  19. data/bin/review-webmaker +15 -0
  20. data/doc/NEWS.ja.md +534 -0
  21. data/doc/NEWS.md +538 -0
  22. data/doc/catalog.ja.md +10 -18
  23. data/doc/catalog.md +5 -9
  24. data/doc/config.yml.sample +319 -0
  25. data/doc/customize_epub.ja.md +42 -0
  26. data/doc/format.ja.md +320 -288
  27. data/doc/format.md +277 -170
  28. data/doc/format_idg.ja.md +82 -175
  29. data/doc/pdfmaker.ja.md +61 -0
  30. data/doc/pdfmaker.md +65 -0
  31. data/doc/quickstart.ja.md +88 -98
  32. data/doc/quickstart.md +72 -110
  33. data/doc/sample.css +41 -0
  34. data/doc/writing_vertical.ja.md +55 -0
  35. data/doc/writing_vertical.md +5 -0
  36. data/lib/epubmaker/content.rb +3 -3
  37. data/lib/epubmaker/epubcommon.rb +173 -145
  38. data/lib/epubmaker/epubv2.rb +24 -77
  39. data/lib/epubmaker/epubv3.rb +72 -73
  40. data/lib/epubmaker/producer.rb +54 -30
  41. data/lib/lineinput.rb +48 -0
  42. data/lib/review/book.rb +0 -1
  43. data/lib/review/book/base.rb +47 -27
  44. data/lib/review/book/chapter.rb +48 -19
  45. data/lib/review/book/compilable.rb +10 -14
  46. data/lib/review/book/index.rb +10 -19
  47. data/lib/review/book/page_metric.rb +0 -10
  48. data/lib/review/book/part.rb +17 -3
  49. data/lib/review/builder.rb +84 -68
  50. data/lib/review/catalog.rb +5 -1
  51. data/lib/review/compiler.rb +327 -4657
  52. data/lib/review/configure.rb +84 -10
  53. data/lib/review/converter.rb +28 -0
  54. data/lib/review/epubbuilder.rb +1 -1
  55. data/lib/review/epubmaker.rb +142 -158
  56. data/lib/review/ewbbuilder.rb +5 -5
  57. data/lib/review/exception.rb +1 -1
  58. data/lib/review/extentions.rb +1 -1
  59. data/lib/review/extentions/hash.rb +15 -0
  60. data/lib/review/extentions/string.rb +2 -1
  61. data/lib/review/htmlbuilder.rb +364 -348
  62. data/lib/review/htmltoc.rb +44 -0
  63. data/lib/review/htmlutils.rb +12 -6
  64. data/lib/review/i18n.rb +78 -6
  65. data/lib/review/i18n.yml +7 -4
  66. data/lib/review/idgxmlbuilder.rb +226 -267
  67. data/lib/review/latexbuilder.rb +281 -274
  68. data/lib/review/latexutils.rb +56 -49
  69. data/lib/review/makerhelper.rb +8 -4
  70. data/lib/review/markdownbuilder.rb +80 -124
  71. data/lib/review/pdfmaker.rb +197 -138
  72. data/lib/review/preprocessor.rb +16 -67
  73. data/lib/review/template.rb +24 -0
  74. data/lib/review/textbuilder.rb +1 -1
  75. data/lib/review/textutils.rb +18 -24
  76. data/lib/review/tocparser.rb +51 -106
  77. data/lib/review/tocprinter.rb +61 -117
  78. data/lib/review/topbuilder.rb +119 -126
  79. data/lib/review/unfold.rb +2 -2
  80. data/lib/review/version.rb +1 -1
  81. data/lib/review/webmaker.rb +302 -0
  82. data/lib/review/webtocprinter.rb +48 -0
  83. data/lib/review/yamlloader.rb +47 -0
  84. data/review.gemspec +3 -3
  85. data/templates/html/layout-html5.html.erb +17 -0
  86. data/templates/html/layout-xhtml1.html.erb +20 -0
  87. data/{lib/review → templates/latex}/layout.tex.erb +107 -115
  88. data/templates/ncx/epubv2.ncx.erb +11 -0
  89. data/templates/opf/epubv2.opf.erb +21 -0
  90. data/templates/opf/epubv3.opf.erb +18 -0
  91. data/templates/web/html/layout-html5.html.erb +56 -0
  92. data/templates/web/html/layout-xhtml1.html.erb +20 -0
  93. data/templates/xml/container.xml.erb +6 -0
  94. data/test/assets/test.xml.erb +3 -0
  95. data/test/assets/test_template.tex +28 -71
  96. data/test/assets/test_template_backmatter.tex +1 -9
  97. data/test/sample-book/src/Rakefile +12 -3
  98. data/{doc/sample.yml → test/sample-book/src/config-epub2.yml} +92 -147
  99. data/test/sample-book/src/config.yml +40 -154
  100. data/test/sample-book/src/style-web.css +45 -0
  101. data/test/sample-book/src/style.css +23 -1
  102. data/test/test.re +1 -1
  103. data/test/test_book.rb +15 -17
  104. data/test/test_book_chapter.rb +2 -80
  105. data/test/test_book_part.rb +1 -1
  106. data/test/test_builder.rb +28 -6
  107. data/test/test_catalog.rb +17 -0
  108. data/test/test_compiler.rb +14 -59
  109. data/test/test_configure.rb +94 -0
  110. data/test/test_converter.rb +21 -0
  111. data/test/test_epub3maker.rb +155 -3
  112. data/test/test_epubmaker.rb +245 -30
  113. data/test/test_epubmaker_cmd.rb +2 -2
  114. data/test/test_extentions_hash.rb +60 -0
  115. data/test/test_helper.rb +4 -47
  116. data/test/test_htmlbuilder.rb +282 -175
  117. data/test/test_htmltoc.rb +33 -0
  118. data/test/test_i18n.rb +134 -70
  119. data/test/test_idgxmlbuilder.rb +58 -39
  120. data/test/test_latexbuilder.rb +132 -14
  121. data/test/test_lineinput.rb +5 -26
  122. data/test/test_makerhelper.rb +6 -4
  123. data/test/test_markdownbuilder.rb +23 -5
  124. data/test/test_pdfmaker.rb +86 -20
  125. data/test/test_pdfmaker_cmd.rb +1 -3
  126. data/test/test_review_ext.rb +1 -1
  127. data/test/test_template.rb +27 -0
  128. data/test/test_textutils.rb +36 -0
  129. data/test/test_tocparser.rb +25 -0
  130. data/test/test_topbuilder.rb +34 -2
  131. data/test/test_yamlloader.rb +188 -0
  132. metadata +71 -29
  133. data/README.rdoc +0 -81
  134. data/bin/review-epubmaker-legacy +0 -1024
  135. data/doc/ruby-uuid/README +0 -11
  136. data/doc/ruby-uuid/README.ja +0 -34
  137. data/lib/review/compiler/literals_1_8.kpeg +0 -19
  138. data/lib/review/compiler/literals_1_8.rb +0 -432
  139. data/lib/review/compiler/literals_1_9.kpeg +0 -22
  140. data/lib/review/compiler/literals_1_9.rb +0 -435
  141. data/lib/review/extentions/array.rb +0 -25
  142. data/lib/review/htmllayout.rb +0 -41
  143. data/lib/review/inaobuilder.rb +0 -357
  144. data/lib/review/location.rb +0 -24
  145. data/lib/review/node.rb +0 -267
  146. data/lib/review/review.kpeg +0 -724
  147. data/lib/uuid.rb +0 -312
  148. data/rubocop-todo.yml +0 -456
  149. data/test/test_inaobuilder.rb +0 -247
  150. data/test/test_uuid.rb +0 -157
@@ -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
- METACHARS = {
20
- '#' => '\#',
21
- "$" => '\textdollar{}',
22
- '%' => '\%',
23
- '&' => '\&',
24
- '{' => '\{',
25
- '}' => '\}',
26
- '_' => '\textunderscore{}',
27
- '^' => '\textasciicircum{}',
28
- '~' => '\textasciitilde{}',
29
- '|' => '\textbar{}',
30
- '<' => '\textless{}',
31
- '>' => '\textgreater{}',
32
- "\\" => '\reviewbackslash{}',
33
- "-" => '{-}',
34
-
35
- '⓪' => '\UTF{24EA}',
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
- METACHARS_INVERT = METACHARS.invert
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(METACHARS_RE) {|s|
66
- METACHARS[s] or raise "unknown trans char: #{s}"
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(METACHARS_INVERT.keys.collect{|key| Regexp.escape(key)}.join('|'))
80
+ metachars_invert_re = Regexp.new(@metachars_invert.keys.collect{|key| Regexp.escape(key)}.join('|'))
74
81
  str.gsub(metachars_invert_re) {|s|
75
- METACHARS_INVERT[s] or raise "unknown trans char: #{s}"
82
+ @metachars_invert[s] or raise "unknown trans char: #{s}"
76
83
  }
77
84
  end
78
85
 
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  #
3
- # Copyright (c) 2012-2014 Yuto HAYAMIZU, Kenshi Muto
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
- class MakerHelper
15
+ module MakerHelper
15
16
  # Return review/bin directory
16
- def self.bindir
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 self.copy_images_to_dir(from_dir, to_dir, options = {})
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 blank_reset
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
- buf = ""
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
- buf = ""
44
- buf << blank
36
+ blank
45
37
  prefix = "#" * level
46
- buf << "#{prefix} #{caption}\n"
47
- blank_reset
48
- buf << "\n"
49
- buf
38
+ puts "#{prefix} #{caption}"
39
+ blank
50
40
  end
51
41
 
52
42
  def quote(lines)
53
- buf = ""
54
- buf << blank
55
- buf << lines.map{|line| line.chomp!;line.chomp!;"> #{line}"}.join("\n") << "\n"
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
- buf = lines.join << "\n"
63
- blank_reset
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] + "```#{lang}\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] + "```#{lang}\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
- buf << detab(line) << "\n"
65
+ puts detab(line)
81
66
  end
82
- buf << '```' << "\n"
83
- buf
67
+ puts '```'
84
68
  end
85
69
 
86
70
  def ul_begin
87
- buf = ""
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
- blank_reset
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
- blank_reset
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
- buf << blank if @ul_indent == 0
111
- buf
88
+ blank if @ul_indent == 0
112
89
  end
113
90
 
114
91
  def ol_begin
115
- buf = ""
116
- buf << blank
117
- buf
92
+ blank
118
93
  end
119
94
 
120
95
  def ol_item(lines, num)
121
- buf = ""
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
- buf = ""
129
- buf << blank
130
- buf
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
- buf = ""
135
- buf << blank
120
+ blank
136
121
  if caption
137
- buf << caption << "\n"
122
+ puts caption
123
+ print "\n"
138
124
  end
139
125
  lang ||= ""
140
- buf << "```#{lang}\n"
141
- blank_reset
126
+ puts "```#{lang}"
142
127
  lines.each do |line|
143
- buf << detab(line) << "\n"
128
+ puts detab(line)
144
129
  end
145
- buf << "```\n"
146
- buf << blank
147
- buf
130
+ puts "```"
131
+ blank
148
132
  end
149
133
 
150
134
  def hr
151
- buf << "----\n"
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
- buf = ""
188
- buf << blank
189
- buf << "![#{compile_inline(caption)}](#{@chapter.image(id).path.sub(/\A\.\//, "")})" << "\n"
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
- buf = ""
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
- buf = ""
211
- buf << blank
212
- buf << "![#{compile_inline(caption)}](#{@chapter.image(id).path.sub(/\A\.\//, "")})" << "\n"
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
- buf = ""
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, caption = nil)
229
- buf = ""
230
- buf << "```shell-session" << "\n"
231
- blank_reset
199
+ def cmd(lines)
200
+ puts "```shell-session"
232
201
  lines.each do |line|
233
- buf << detab(line) << "\n"
202
+ puts detab(line)
234
203
  end
235
- buf << "```" << "\n"
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
- buf << table_header(id, caption) unless caption.nil?
222
+ table_header id, caption unless caption.nil?
256
223
  rescue KeyError
257
224
  error "no such table: #{id}"
258
225
  end
259
- buf << table_begin(rows.first.size)
260
- return buf if rows.empty?
226
+ table_begin rows.first.size
227
+ return if rows.empty?
261
228
  if sepidx
262
229
  sepidx.times do
263
- buf << tr(rows.shift.map{|s| th(s) })
230
+ tr rows.shift.map {|s| th(s) }
264
231
  end
265
- buf << table_border(rows.first.size)
232
+ table_border rows.first.size
266
233
  rows.each do |cols|
267
- buf << tr(cols.map{|s| td(s) })
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([th(h)] + cs.map {|s| td(s) })
239
+ tr [th(h)] + cs.map {|s| td(s) }
273
240
  end
274
241
  end
275
- buf << table_end
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
- buf << %Q[#{I18n.t("table")}#{I18n.t("format_number_header_without_chapter", [@chapter.table(id).number])}#{I18n.t("caption_prefix")}#{compile_inline(caption)}] << "\n"
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
- buf << %Q[#{I18n.t("table")}#{I18n.t("format_number_header", [get_chap, @chapter.table(id).number])}#{I18n.t("caption_prefix")}#{compile_inline(caption)}] << "\n"
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
- blank_reset
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("|")}|\n"
258
+ puts "|#{rows.join("|")}|"
297
259
  end
298
260
 
299
261
  def table_border(ncols)
300
- blank_reset
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
- buf = ""
314
- buf << blank
315
- buf
274
+ blank
316
275
  end
317
276
 
318
277
  def footnote(id, str)
319
- buf = ""
320
- buf << "[^#{id}]: #{compile_inline(str)}" << "\n"
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 # module ReVIEW
295
+ end # module ReVIEW