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,381 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# $Id: ewbbuilder.rb 2195 2005-11-13 21:52:18Z aamine $
|
|
3
|
+
|
|
4
|
+
require 'review/builder'
|
|
5
|
+
require 'review/textutils'
|
|
6
|
+
require 'review/exception'
|
|
7
|
+
|
|
8
|
+
module ReVIEW
|
|
9
|
+
class EWBBuilder < Builder
|
|
10
|
+
include TextUtils
|
|
11
|
+
|
|
12
|
+
def initialize(chap)
|
|
13
|
+
super
|
|
14
|
+
@footnote_buf = []
|
|
15
|
+
@index_buffer = []
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def generate_index
|
|
19
|
+
@index_buffer.each_with_index do |str, n|
|
|
20
|
+
printf "%d\t%s\n", index_number(n + 1), str
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def headline(level, caption)
|
|
25
|
+
puts unless level == 1
|
|
26
|
+
puts "//#{'i' * level} #{caption}"
|
|
27
|
+
puts
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Compiler.defsyntax(:emlist, :block, 0..1) {|args|
|
|
31
|
+
# if args[0] and not args[0] == 'noescape'
|
|
32
|
+
# raise SyntaxError, "unknown //emlist option: #{args[0]}"
|
|
33
|
+
# end
|
|
34
|
+
# }
|
|
35
|
+
|
|
36
|
+
def emlist(lines, caption = nil)
|
|
37
|
+
firstline = f.lineno
|
|
38
|
+
puts
|
|
39
|
+
puts caption
|
|
40
|
+
puts '//lst1'
|
|
41
|
+
lines.each do |line|
|
|
42
|
+
if noescape
|
|
43
|
+
puts detab(line)
|
|
44
|
+
else
|
|
45
|
+
puts escape(detab(line))
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
puts '//}'
|
|
49
|
+
puts
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Compiler.defsyntax(:cmd, :block, 0..1) {|args|
|
|
53
|
+
# if args[0] and not args[0] == 'noescape'
|
|
54
|
+
# raise SyntaxError, "unknown //cmd option: #{args[0]}"
|
|
55
|
+
# end
|
|
56
|
+
# }
|
|
57
|
+
|
|
58
|
+
def cmd(lines, caption = nil)
|
|
59
|
+
puts
|
|
60
|
+
puts caption
|
|
61
|
+
puts '//sc1{'
|
|
62
|
+
lines.each do |line|
|
|
63
|
+
if noescape
|
|
64
|
+
puts detab(line)
|
|
65
|
+
elsif /\AC:.*?>(.+)/ =~ line # DOS prompt hack
|
|
66
|
+
prompt, cmd = *line.split('>', 2)
|
|
67
|
+
puts "#{escape(prompt)}>//command{#{escape(cmd)}}//}"
|
|
68
|
+
else
|
|
69
|
+
puts escape(detab(line))
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
puts '//}'
|
|
73
|
+
puts
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Compiler.defsyntax(:list, :block, 0..1) {|args|
|
|
77
|
+
# if args[0] and not args[0] == 'noescape'
|
|
78
|
+
# raise SyntaxError, "unknown //list option: #{args[0]}"
|
|
79
|
+
# end
|
|
80
|
+
# }
|
|
81
|
+
|
|
82
|
+
def list(lines, id, caption)
|
|
83
|
+
puts
|
|
84
|
+
puts "//l#{list_number(id)} " + caption
|
|
85
|
+
puts '//lst2{'
|
|
86
|
+
lines.each do |line|
|
|
87
|
+
puts escape(detab(line))
|
|
88
|
+
end
|
|
89
|
+
puts '//}'
|
|
90
|
+
puts
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def image_header(file, caption)
|
|
94
|
+
if /\.png\z/ =~ file and not FileTest.exist?('images/' + file)
|
|
95
|
+
warn "image file not exist: #{file}"
|
|
96
|
+
end
|
|
97
|
+
id = file.sub(/\.\w+\z/, '')
|
|
98
|
+
puts "//f#{figure_number(id)} #{text(caption)} file=#{file}" if id
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def image_dummy
|
|
102
|
+
puts '//lst1{'
|
|
103
|
+
puts '---- dummy figure ----'
|
|
104
|
+
print dummy
|
|
105
|
+
puts '//}'
|
|
106
|
+
puts
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def table
|
|
110
|
+
# %r<\A//table\[(\w+)\]>
|
|
111
|
+
spec = $1
|
|
112
|
+
buf = []
|
|
113
|
+
while line = f.gets
|
|
114
|
+
break if %r[\A//\}] === line
|
|
115
|
+
buf.push line.strip.split(/\t+/).map {|s| s == '.' ? '' : s }
|
|
116
|
+
end
|
|
117
|
+
table_type = 'tabm'
|
|
118
|
+
output.puts "//#{table_type}[" + spec + ']{'
|
|
119
|
+
buf.each_with_index do |col, idx|
|
|
120
|
+
if /----/ === col[0]
|
|
121
|
+
output.puts '//kb'
|
|
122
|
+
else
|
|
123
|
+
output.puts col.map {|s| text(s) }.join("\t")
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
output.puts '//}'
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
LI = '●'
|
|
130
|
+
|
|
131
|
+
def ul_begin
|
|
132
|
+
puts
|
|
133
|
+
puts '//k1{'
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def ul_item(lines)
|
|
137
|
+
puts "#{LI}//|" + lines.join('')
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def ul_end
|
|
141
|
+
puts '//}'
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def ol_begin
|
|
145
|
+
output.puts
|
|
146
|
+
output.puts '//k2{'
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def ol_item(num, lines)
|
|
150
|
+
print "#{num}//|" + lines.join('')
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def ol_end
|
|
154
|
+
puts '//}'
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def quote(lines)
|
|
158
|
+
puts '//c1{'
|
|
159
|
+
lines.each do |line|
|
|
160
|
+
puts text(line)
|
|
161
|
+
end
|
|
162
|
+
puts '//}'
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def vspace
|
|
166
|
+
print %Q(
|
|
167
|
+
//h)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def noindent
|
|
171
|
+
@noindent = true
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def refer(f)
|
|
175
|
+
puts
|
|
176
|
+
puts '//refer{'
|
|
177
|
+
cascade f
|
|
178
|
+
puts '//}'
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
def point(f)
|
|
182
|
+
puts
|
|
183
|
+
puts '//point{'
|
|
184
|
+
cascade f
|
|
185
|
+
puts '//}'
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def note(f, caption)
|
|
189
|
+
puts
|
|
190
|
+
puts '//note{'
|
|
191
|
+
puts "//cg{#{caption}//}"
|
|
192
|
+
puts '//h'
|
|
193
|
+
cascade f
|
|
194
|
+
puts '//}'
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def cascade(f)
|
|
198
|
+
# FIXME
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
Z_SPACE = "\241\241" # zen-kaku space in EUC-JP
|
|
202
|
+
|
|
203
|
+
def paragraph(lines)
|
|
204
|
+
if @noindent
|
|
205
|
+
@noindent = false
|
|
206
|
+
else
|
|
207
|
+
print Z_SPACE
|
|
208
|
+
end
|
|
209
|
+
prev = ''
|
|
210
|
+
lines.each do |line|
|
|
211
|
+
if /[a-zA-Z0-9]\z/ =~ prev and /\A[a-zA-Z0-9]/ =~ line
|
|
212
|
+
print ' '
|
|
213
|
+
end
|
|
214
|
+
print line
|
|
215
|
+
end
|
|
216
|
+
puts
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def figure_filename(key)
|
|
220
|
+
if ext = key.slice(/\.\w+\z/)
|
|
221
|
+
base = key.sub(/\.\w+\z/, '')
|
|
222
|
+
else
|
|
223
|
+
base = key
|
|
224
|
+
ext = '.eps'
|
|
225
|
+
end
|
|
226
|
+
currname = "images/ch_#{chapter_id}_#{base}#{ext}"
|
|
227
|
+
destname = "images/fig#{figure_number(base)}#{ext}"
|
|
228
|
+
unless File.exist? currname
|
|
229
|
+
# error "image file not exist: #{currname}"
|
|
230
|
+
end
|
|
231
|
+
destname
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def image_label(str)
|
|
235
|
+
"#{chapter_id}:#{str}"
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
def text(str)
|
|
239
|
+
str = str.gsub(/\t/, ' ')
|
|
240
|
+
str.gsub(/([^@^]+)|\^(.*?)\^|@<(\w+)>\{(.*?)\}|@\{(.*?)\}|([@^])/) do
|
|
241
|
+
if normal = $1
|
|
242
|
+
escape(normal)
|
|
243
|
+
elsif tt = $2
|
|
244
|
+
'//tt{' + escape(tt) + '//}'
|
|
245
|
+
elsif inline = $3
|
|
246
|
+
compile_inline(inline, $4)
|
|
247
|
+
elsif index = $5
|
|
248
|
+
error 'index not implemented'
|
|
249
|
+
text(index) + index_command(index)
|
|
250
|
+
elsif char = $6
|
|
251
|
+
escape(char)
|
|
252
|
+
else
|
|
253
|
+
error "unknown inline: #{str.inspect}"
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
rescue DocumentError => e
|
|
257
|
+
error e.message
|
|
258
|
+
return 'ERROR'
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
def inline_kw(arg)
|
|
262
|
+
word, eng, abbr = arg.split(/,/).map {|s| s.strip }
|
|
263
|
+
if abbr
|
|
264
|
+
add_index(word) + "//g{#{word}//}" +
|
|
265
|
+
add_index(abbr) + "(#{abbr}, " +
|
|
266
|
+
add_index(eng) + "#{eng})"
|
|
267
|
+
elsif eng
|
|
268
|
+
add_index(word) + "//g{#{word}//}" +
|
|
269
|
+
add_index(eng) + "(#{eng})"
|
|
270
|
+
else
|
|
271
|
+
add_index(word) + "//g{#{word}//}"
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
def inline_keytop(arg)
|
|
276
|
+
"//keytop{#{arg}//}"
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def inline_chap(id)
|
|
280
|
+
chapter_number(arg)
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
def inline_chapref(id)
|
|
284
|
+
chapter_number(arg) + chapter_name(arg)
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
def inline_chapname(id)
|
|
288
|
+
chapter_name(arg)
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def inline_list(arg)
|
|
292
|
+
'//l' + list_number(arg)
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def inline_img(arg)
|
|
296
|
+
error "wrong image label: #{arg}" if /[^a-zA-Z\d\-]/ =~ arg
|
|
297
|
+
'//f' + figure_number(arg)
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
def inline_footnote(id)
|
|
301
|
+
'//ky' + footnote_number(id)
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
def inline_ruby(arg)
|
|
305
|
+
error 'wrong number of arg: @<ruby>' unless arg.count(',') == 1
|
|
306
|
+
"//ruby{#{arg}//}"
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
NAKAGURO = '・'
|
|
310
|
+
|
|
311
|
+
def inline_bou(str)
|
|
312
|
+
"//ruby{#{escape(str)},#{NAKAGURO * char_length(str)}//}"
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
def char_length(str)
|
|
316
|
+
str.gsub(/./, '.').length
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
def inline_em(str)
|
|
320
|
+
"//g{#{arg}//}"
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
def inline_math(arg)
|
|
324
|
+
"//LaTeX{ $#{arg}$ //}"
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
def chapter_id
|
|
328
|
+
File.basename(@filename, '.rd')
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
def chapter_prefix
|
|
332
|
+
sprintf('%02d', @chapter_table.number(chapter_id))
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
def chapter_number(key)
|
|
336
|
+
curr = @chapter_table.number(chapter_id)
|
|
337
|
+
dest = @chapter_table.number(key)
|
|
338
|
+
|
|
339
|
+
case chapter_id
|
|
340
|
+
when /\.ewb\z/, 'tmp', 'temp'
|
|
341
|
+
return '第' + dest + '章'
|
|
342
|
+
end
|
|
343
|
+
if dest == curr + 1
|
|
344
|
+
'次章'
|
|
345
|
+
elsif dest == curr - 1
|
|
346
|
+
'前章'
|
|
347
|
+
else
|
|
348
|
+
"第#{dest}章"
|
|
349
|
+
end
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
def chapter_name(key)
|
|
353
|
+
'『' + text(@chapter_table.title(key)) + '』'
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
def list_number(key)
|
|
357
|
+
sprintf(chapter_prefix + '%02d0', @list_table.number(key))
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
def figure_number(key)
|
|
361
|
+
sprintf(chapter_prefix + '%02d0', @figure_table.number(key))
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
def footnote_number(key)
|
|
365
|
+
sprintf('%02d', @footnote_index.number(key) * 5)
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
def add_index(str)
|
|
369
|
+
@index_buffer.push str
|
|
370
|
+
"//in#{index_number(@index_buffer.size)}"
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
def index_number(n)
|
|
374
|
+
900_000 + @chapter_index.number(chapter_id) * 1000 + n
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
def escape(str)
|
|
378
|
+
str.gsub(%r{//}, '////')
|
|
379
|
+
end
|
|
380
|
+
end
|
|
381
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#
|
|
2
|
+
# $Id: exception.rb 3881 2008-02-09 14:44:17Z aamine $
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2002-2007 Minero Aoki
|
|
5
|
+
#
|
|
6
|
+
# This program is free software.
|
|
7
|
+
# You can distribute or modify this program under the terms of
|
|
8
|
+
# the GNU LGPL, Lesser General Public License version 2.1.
|
|
9
|
+
# For details of the GNU LGPL, see the file "COPYING".
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
module ReVIEW
|
|
13
|
+
|
|
14
|
+
class Error < ::StandardError; end
|
|
15
|
+
class ApplicationError < Error; end
|
|
16
|
+
class ConfigError < ApplicationError; end
|
|
17
|
+
class CompileError < ApplicationError; end
|
|
18
|
+
class SyntaxError < CompileError; end
|
|
19
|
+
class FileNotFound < ApplicationError; end
|
|
20
|
+
class KeyError < CompileError; end
|
|
21
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
class Array
|
|
2
|
+
|
|
3
|
+
# for ReVIEW::Node
|
|
4
|
+
#
|
|
5
|
+
def to_doc
|
|
6
|
+
self.map(&:to_doc).join("")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# for ReVIEW::Node
|
|
10
|
+
#
|
|
11
|
+
def to_raw
|
|
12
|
+
self.map(&:to_raw).join("")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
if [].map.kind_of?(Array)
|
|
16
|
+
# Ruby 1.8
|
|
17
|
+
def map(&block)
|
|
18
|
+
if !block_given?
|
|
19
|
+
return to_enum :map
|
|
20
|
+
else
|
|
21
|
+
collect(&block) ## XXX same as original
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
if defined?(Encoding) && Encoding.respond_to?("default_external")
|
|
2
|
+
Encoding.default_external = "UTF-8"
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
unless String.method_defined?(:lines)
|
|
6
|
+
# Ruby 1.8
|
|
7
|
+
class String
|
|
8
|
+
alias_method :lines, :to_a
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
if String.method_defined?(:bytesize)
|
|
13
|
+
# Ruby 1.9
|
|
14
|
+
class String
|
|
15
|
+
alias_method :charsize, :size
|
|
16
|
+
end
|
|
17
|
+
else
|
|
18
|
+
# Ruby 1.8
|
|
19
|
+
class String
|
|
20
|
+
alias_method :bytesize, :size
|
|
21
|
+
|
|
22
|
+
def charsize
|
|
23
|
+
split(//).size
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
unless String.method_defined?(:each)
|
|
29
|
+
# Ruby 1.9
|
|
30
|
+
class String
|
|
31
|
+
alias_method :each, :each_line
|
|
32
|
+
end
|
|
33
|
+
end
|