review 1.0.0 → 1.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.
- data/.travis.yml +1 -2
- data/ChangeLog +65 -0
- data/Gemfile +5 -0
- data/README.rdoc +6 -1
- data/Rakefile +14 -28
- data/bin/review-check +9 -21
- data/bin/review-compile +45 -12
- data/bin/review-epubmaker +477 -220
- data/bin/review-epubmaker-ng +5 -14
- data/bin/review-index +4 -2
- data/bin/review-init +94 -0
- data/bin/review-pdfmaker +70 -287
- data/bin/review-preproc +5 -2
- data/bin/review-vol +4 -11
- data/debian/changelog +3 -3
- data/debian/copyright +5 -3
- data/debian/docs +1 -0
- data/doc/format.rdoc +57 -11
- data/doc/quickstart.rdoc +4 -4
- data/doc/sample.yaml +11 -7
- data/lib/epubmaker.rb +1 -1
- data/lib/epubmaker/epubv2.rb +26 -27
- data/lib/epubmaker/epubv3.rb +13 -13
- data/lib/epubmaker/producer.rb +1 -1
- data/lib/review.rb +3 -4
- data/lib/review/book.rb +17 -581
- data/lib/review/book/base.rb +247 -0
- data/lib/review/book/chapter.rb +81 -0
- data/lib/review/book/compilable.rb +163 -0
- data/lib/review/book/index.rb +339 -0
- data/lib/review/book/page_metric.rb +38 -0
- data/lib/review/book/parameters.rb +97 -0
- data/lib/review/book/part.rb +44 -0
- data/lib/review/book/volume.rb +65 -0
- data/lib/review/builder.rb +34 -40
- data/lib/review/compiler.rb +32 -13
- data/lib/review/configure.rb +38 -0
- data/lib/review/ewbbuilder.rb +23 -21
- data/lib/review/extentions.rb +3 -0
- data/lib/review/extentions/object.rb +9 -0
- data/lib/review/{compat.rb → extentions/string.rb} +11 -0
- data/lib/review/htmlbuilder.rb +162 -74
- data/lib/review/htmlutils.rb +28 -1
- data/lib/review/i18n.yaml +11 -0
- data/lib/review/idgxmlbuilder.rb +119 -35
- data/lib/review/inaobuilder.rb +355 -0
- data/lib/review/latexbuilder.rb +133 -59
- data/lib/review/latexutils.rb +15 -6
- data/lib/review/makerhelper.rb +59 -0
- data/lib/review/markdownbuilder.rb +129 -0
- data/lib/review/preprocessor.rb +20 -7
- data/lib/review/review.tex.erb +250 -0
- data/lib/review/textutils.rb +28 -3
- data/lib/review/tocparser.rb +20 -12
- data/lib/review/tocprinter.rb +7 -3
- data/lib/review/topbuilder.rb +44 -27
- data/lib/review/version.rb +3 -0
- data/review.gemspec +20 -117
- data/test/book_test_helper.rb +35 -0
- data/test/sample-book/README.md +5 -0
- data/test/sample-book/src/CHAPS +2 -0
- data/test/sample-book/src/PREDEF +1 -0
- data/test/sample-book/src/Rakefile +26 -0
- data/test/sample-book/src/_cover.html +3 -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 +55 -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/main.css +251 -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/samplemacro.sty +21 -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_book.rb +26 -646
- data/test/test_book_chapter.rb +418 -0
- data/test/test_book_parameter.rb +42 -0
- data/test/test_book_part.rb +53 -0
- data/test/test_builder.rb +17 -10
- data/test/test_compiler.rb +46 -0
- data/test/test_epubmaker.rb +1 -1
- data/test/test_epubmaker_cmd.rb +36 -0
- data/test/test_helper.rb +17 -0
- data/test/test_htmlbuilder.rb +156 -24
- data/test/test_htmlutils.rb +4 -0
- data/test/test_i18n.rb +6 -2
- data/test/test_idgxmlbuilder.rb +33 -11
- data/test/test_inaobuilder.rb +247 -0
- data/test/test_index.rb +31 -0
- data/test/test_latexbuilder.rb +115 -35
- data/test/test_makerhelper.rb +50 -0
- data/test/test_pdfmaker_cmd.rb +36 -0
- data/test/test_preprocessor.rb +7 -7
- data/test/test_topbuilder.rb +6 -7
- data/test/test_uuid.rb +1 -0
- metadata +117 -12
- data/lib/review/index.rb +0 -323
- data/lib/review/volume.rb +0 -66
data/lib/review/latexbuilder.rb
CHANGED
@@ -38,6 +38,7 @@ module ReVIEW
|
|
38
38
|
@latex_tsize = nil
|
39
39
|
@tsize = nil
|
40
40
|
@table_caption = nil
|
41
|
+
@ol_num = nil
|
41
42
|
end
|
42
43
|
private :builder_init_file
|
43
44
|
|
@@ -68,7 +69,9 @@ module ReVIEW
|
|
68
69
|
1 => 'chapter',
|
69
70
|
2 => 'section',
|
70
71
|
3 => 'subsection',
|
71
|
-
4 => 'subsubsection'
|
72
|
+
4 => 'subsubsection',
|
73
|
+
5 => 'paragraph',
|
74
|
+
6 => 'subparagraph'
|
72
75
|
}
|
73
76
|
|
74
77
|
def headline(level, label, caption)
|
@@ -78,9 +81,14 @@ module ReVIEW
|
|
78
81
|
end
|
79
82
|
blank unless @output.pos == 0
|
80
83
|
puts macro(HEADLINE[level]+prefix, compile_inline(caption))
|
84
|
+
if prefix == "*" && level <= ReVIEW.book.param["toclevel"].to_i
|
85
|
+
puts "\\addcontentsline{toc}{#{HEADLINE[level]}}{#{compile_inline(caption)}}"
|
86
|
+
end
|
81
87
|
if level == 1
|
82
88
|
puts macro('label', chapter_label)
|
83
89
|
end
|
90
|
+
rescue
|
91
|
+
error "unknown level: #{level}"
|
84
92
|
end
|
85
93
|
|
86
94
|
def nonum_begin(level, label, caption)
|
@@ -93,24 +101,12 @@ module ReVIEW
|
|
93
101
|
|
94
102
|
def column_begin(level, label, caption)
|
95
103
|
blank
|
96
|
-
## puts '\vspace{2zw}'
|
97
|
-
## puts '\begin{center}'
|
98
|
-
## puts '\begin{minipage}{1.0\linewidth}'
|
99
|
-
## puts '\begin{framed}'
|
100
|
-
## puts '\setlength{\FrameSep}{1zw}'
|
101
|
-
|
102
|
-
## nonum_begin(3, label, caption) # FIXME
|
103
|
-
|
104
104
|
puts "\\begin{reviewcolumn}\n"
|
105
105
|
puts macro('reviewcolumnhead', nil, compile_inline(caption))
|
106
106
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def column_end(level)
|
110
|
-
## puts '\end{framed}'
|
111
|
-
## puts '\end{minipage}'
|
112
|
-
## puts '\end{center}'
|
113
|
-
## ## puts '\vspace{2zw}'
|
114
110
|
puts "\\end{reviewcolumn}\n"
|
115
111
|
blank
|
116
112
|
end
|
@@ -133,13 +129,28 @@ module ReVIEW
|
|
133
129
|
puts "\\end{reviewminicolumn}\n"
|
134
130
|
end
|
135
131
|
|
132
|
+
def box(lines, caption = nil)
|
133
|
+
blank
|
134
|
+
if caption
|
135
|
+
puts macro('reviewboxcaption', "#{compile_inline(caption)}")
|
136
|
+
end
|
137
|
+
puts '\begin{reviewbox}'
|
138
|
+
lines.each do |line|
|
139
|
+
puts detab(line)
|
140
|
+
end
|
141
|
+
puts '\end{reviewbox}'
|
142
|
+
blank
|
143
|
+
end
|
144
|
+
|
136
145
|
def ul_begin
|
137
146
|
blank
|
138
147
|
puts '\begin{itemize}'
|
139
148
|
end
|
140
149
|
|
141
150
|
def ul_item(lines)
|
142
|
-
|
151
|
+
str = lines.join
|
152
|
+
str.sub!(/\A(\[)/){'\lbrack{}'}
|
153
|
+
puts '\item ' + str
|
143
154
|
end
|
144
155
|
|
145
156
|
def ul_end
|
@@ -150,10 +161,16 @@ module ReVIEW
|
|
150
161
|
def ol_begin
|
151
162
|
blank
|
152
163
|
puts '\begin{enumerate}'
|
164
|
+
if @ol_num
|
165
|
+
puts "\\setcounter{enumi}{#{@ol_num - 1}}"
|
166
|
+
@ol_num = nil
|
167
|
+
end
|
153
168
|
end
|
154
169
|
|
155
170
|
def ol_item(lines, num)
|
156
|
-
|
171
|
+
str = lines.join
|
172
|
+
str.sub!(/\A(\[)/){'\lbrack{}'}
|
173
|
+
puts '\item ' + str
|
157
174
|
end
|
158
175
|
|
159
176
|
def ol_end
|
@@ -167,6 +184,8 @@ module ReVIEW
|
|
167
184
|
end
|
168
185
|
|
169
186
|
def dt(str)
|
187
|
+
str.sub!(/\[/){'\lbrack{}'}
|
188
|
+
str.sub!(/\]/){'\rbrack{}'}
|
170
189
|
puts '\item[' + str + '] \mbox{} \\\\'
|
171
190
|
end
|
172
191
|
|
@@ -203,11 +222,9 @@ module ReVIEW
|
|
203
222
|
puts macro('reviewemlistcaption', "#{compile_inline(caption)}")
|
204
223
|
end
|
205
224
|
puts '\begin{reviewemlist}'
|
206
|
-
puts '\begin{alltt}'
|
207
225
|
lines.each do |line|
|
208
|
-
puts line
|
226
|
+
puts detab(line)
|
209
227
|
end
|
210
|
-
puts '\end{alltt}'
|
211
228
|
puts '\end{reviewemlist}'
|
212
229
|
blank
|
213
230
|
end
|
@@ -218,26 +235,22 @@ module ReVIEW
|
|
218
235
|
puts macro('reviewemlistcaption', "#{compile_inline(caption)}")
|
219
236
|
end
|
220
237
|
puts '\begin{reviewemlist}'
|
221
|
-
puts '\begin{alltt}'
|
222
238
|
lines.each_with_index do |line, i|
|
223
239
|
puts detab((i+1).to_s.rjust(2) + ": " + line)
|
224
240
|
end
|
225
|
-
puts '\end{alltt}'
|
226
241
|
puts '\end{reviewemlist}'
|
227
242
|
blank
|
228
243
|
end
|
229
244
|
|
230
245
|
def listnum_body(lines)
|
231
246
|
puts '\begin{reviewlist}'
|
232
|
-
puts '\begin{alltt}'
|
233
247
|
lines.each_with_index do |line, i|
|
234
248
|
puts detab((i+1).to_s.rjust(2) + ": " + line)
|
235
249
|
end
|
236
|
-
puts '\end{alltt}'
|
237
250
|
puts '\end{reviewlist}'
|
238
251
|
blank
|
239
252
|
|
240
|
-
|
253
|
+
end
|
241
254
|
|
242
255
|
def cmd(lines, caption = nil)
|
243
256
|
blank
|
@@ -245,26 +258,22 @@ module ReVIEW
|
|
245
258
|
puts macro('reviewcmdcaption', "#{compile_inline(caption)}")
|
246
259
|
end
|
247
260
|
puts '\begin{reviewcmd}'
|
248
|
-
puts '\begin{alltt}'
|
249
261
|
lines.each do |line|
|
250
|
-
puts line
|
262
|
+
puts detab(line)
|
251
263
|
end
|
252
|
-
puts '\end{alltt}'
|
253
264
|
puts '\end{reviewcmd}'
|
254
265
|
blank
|
255
266
|
end
|
256
267
|
|
257
268
|
def list_header(id, caption)
|
258
|
-
puts macro('reviewlistcaption', "#{I18n.t("list")}#{I18n.t("format_number_header", [@chapter.number, @chapter.list(id).number])}
|
269
|
+
puts macro('reviewlistcaption', "#{I18n.t("list")}#{I18n.t("format_number_header", [@chapter.number, @chapter.list(id).number])}#{I18n.t("caption_prefix")}#{compile_inline(caption)}")
|
259
270
|
end
|
260
271
|
|
261
|
-
def list_body(lines)
|
272
|
+
def list_body(id, lines)
|
262
273
|
puts '\begin{reviewlist}'
|
263
|
-
puts '\begin{alltt}'
|
264
274
|
lines.each do |line|
|
265
|
-
puts line
|
275
|
+
puts detab(line)
|
266
276
|
end
|
267
|
-
puts '\end{alltt}'
|
268
277
|
puts '\end{reviewlist}'
|
269
278
|
puts ""
|
270
279
|
end
|
@@ -282,11 +291,9 @@ module ReVIEW
|
|
282
291
|
end
|
283
292
|
|
284
293
|
def source_body(lines)
|
285
|
-
puts '\begin{alltt}'
|
286
294
|
lines.each do |line|
|
287
|
-
puts line
|
295
|
+
puts detab(line)
|
288
296
|
end
|
289
|
-
puts '\end{alltt}'
|
290
297
|
end
|
291
298
|
|
292
299
|
|
@@ -301,27 +308,25 @@ module ReVIEW
|
|
301
308
|
metrics = parse_metric("latex", metric)
|
302
309
|
# image is always bound here
|
303
310
|
puts '\begin{reviewimage}'
|
304
|
-
if
|
311
|
+
if metrics.present?
|
305
312
|
puts "\\includegraphics[#{metrics}]{#{@chapter.image(id).path}}"
|
306
313
|
else
|
307
314
|
puts "\\includegraphics[width=\\maxwidth]{#{@chapter.image(id).path}}"
|
308
315
|
end
|
309
|
-
|
310
|
-
if !caption.empty?
|
316
|
+
if caption.present?
|
311
317
|
puts macro('caption', compile_inline(caption))
|
312
318
|
end
|
319
|
+
puts macro('label', image_label(id))
|
313
320
|
puts '\end{reviewimage}'
|
314
321
|
end
|
315
322
|
|
316
323
|
def image_dummy(id, caption, lines)
|
317
324
|
puts '\begin{reviewdummyimage}'
|
318
|
-
puts '\begin{alltt}'
|
319
325
|
path = @chapter.image(id).path
|
320
326
|
puts "--[[path = #{path} (#{existence(id)})]]--"
|
321
327
|
lines.each do |line|
|
322
328
|
puts detab(line.rstrip)
|
323
329
|
end
|
324
|
-
puts '\end{alltt}'
|
325
330
|
puts macro('label', image_label(id))
|
326
331
|
puts compile_inline(caption)
|
327
332
|
puts '\end{reviewdummyimage}'
|
@@ -342,29 +347,77 @@ module ReVIEW
|
|
342
347
|
end
|
343
348
|
private :chapter_label
|
344
349
|
|
350
|
+
def table_label(id)
|
351
|
+
"table:#{@chapter.id}:#{id}"
|
352
|
+
end
|
353
|
+
private :table_label
|
354
|
+
|
355
|
+
def bib_label(id)
|
356
|
+
"bib:#{id}"
|
357
|
+
end
|
358
|
+
private :bib_label
|
359
|
+
|
345
360
|
def indepimage(id, caption=nil, metric=nil)
|
346
361
|
metrics = parse_metric("latex", metric)
|
347
362
|
puts '\begin{reviewimage}'
|
348
|
-
if
|
363
|
+
if metrics.present?
|
349
364
|
puts "\\includegraphics[#{metrics}]{#{@chapter.image(id).path}}"
|
350
365
|
else
|
351
366
|
puts "\\includegraphics[width=\\maxwidth]{#{@chapter.image(id).path}}"
|
352
367
|
end
|
353
|
-
if
|
354
|
-
puts macro('
|
368
|
+
if caption.present?
|
369
|
+
puts macro('reviewindepimagecaption',
|
370
|
+
%Q[#{I18n.t("numberless_image")}#{I18n.t("caption_prefix")}#{compile_inline(caption)}])
|
355
371
|
end
|
356
372
|
puts '\end{reviewimage}'
|
357
373
|
end
|
358
374
|
|
359
375
|
alias :numberlessimage indepimage
|
360
376
|
|
377
|
+
def table(lines, id = nil, caption = nil)
|
378
|
+
rows = []
|
379
|
+
sepidx = nil
|
380
|
+
lines.each_with_index do |line, idx|
|
381
|
+
if /\A[\=\{\-\}]{12}/ =~ line
|
382
|
+
# just ignore
|
383
|
+
#error "too many table separator" if sepidx
|
384
|
+
sepidx ||= idx
|
385
|
+
next
|
386
|
+
end
|
387
|
+
rows.push line.strip.split(/\t+/).map {|s| s.sub(/\A\./, '') }
|
388
|
+
end
|
389
|
+
rows = adjust_n_cols(rows)
|
390
|
+
|
391
|
+
begin
|
392
|
+
table_header id, caption unless caption.nil?
|
393
|
+
rescue KeyError => err
|
394
|
+
error "no such table: #{id}"
|
395
|
+
end
|
396
|
+
return if rows.empty?
|
397
|
+
table_begin rows.first.size
|
398
|
+
if sepidx
|
399
|
+
sepidx.times do
|
400
|
+
tr rows.shift.map {|s| th(s) }
|
401
|
+
end
|
402
|
+
rows.each do |cols|
|
403
|
+
tr cols.map {|s| td(s) }
|
404
|
+
end
|
405
|
+
else
|
406
|
+
rows.each do |cols|
|
407
|
+
h, *cs = *cols
|
408
|
+
tr [th(h)] + cs.map {|s| td(s) }
|
409
|
+
end
|
410
|
+
end
|
411
|
+
table_end
|
412
|
+
end
|
413
|
+
|
361
414
|
def table_header(id, caption)
|
362
|
-
if caption
|
415
|
+
if caption.present?
|
363
416
|
@table_caption = true
|
364
417
|
puts '\begin{table}[h]'
|
365
|
-
## puts macro('reviewtablecaption', "表#{@chapter.number}.#{@chapter.table(id).number} #{compile_inline(caption)}")
|
366
418
|
puts macro('reviewtablecaption', compile_inline(caption))
|
367
419
|
end
|
420
|
+
puts macro('label', table_label(id))
|
368
421
|
end
|
369
422
|
|
370
423
|
def table_begin(ncols)
|
@@ -388,9 +441,9 @@ module ReVIEW
|
|
388
441
|
def th(s)
|
389
442
|
## use shortstack for @<br>
|
390
443
|
if /\\\\/i =~ s
|
391
|
-
macro('
|
444
|
+
macro('reviewth', macro('shortstack[l]', s))
|
392
445
|
else
|
393
|
-
macro('
|
446
|
+
macro('reviewth', s)
|
394
447
|
end
|
395
448
|
end
|
396
449
|
|
@@ -425,6 +478,8 @@ module ReVIEW
|
|
425
478
|
latex_block 'center', lines
|
426
479
|
end
|
427
480
|
|
481
|
+
alias centering center
|
482
|
+
|
428
483
|
def flushright(lines)
|
429
484
|
latex_block 'flushright', lines
|
430
485
|
end
|
@@ -462,12 +517,19 @@ module ReVIEW
|
|
462
517
|
end
|
463
518
|
end
|
464
519
|
|
465
|
-
def comment(
|
520
|
+
def comment(lines, comment = nil)
|
521
|
+
lines ||= []
|
522
|
+
lines.unshift comment unless comment.blank?
|
466
523
|
if ReVIEW.book.param["draft"]
|
524
|
+
str = lines.join("")
|
467
525
|
puts macro('pdfcomment', escape(str))
|
468
526
|
end
|
469
527
|
end
|
470
528
|
|
529
|
+
def hr
|
530
|
+
puts '\hrule'
|
531
|
+
end
|
532
|
+
|
471
533
|
def label(id)
|
472
534
|
puts macro('label', id)
|
473
535
|
end
|
@@ -526,12 +588,12 @@ module ReVIEW
|
|
526
588
|
|
527
589
|
def inline_table(id)
|
528
590
|
chapter, id = extract_chapter_id(id)
|
529
|
-
macro('reviewtableref', "#{chapter.number}.#{chapter.table(id).number}")
|
591
|
+
macro('reviewtableref', "#{chapter.number}.#{chapter.table(id).number}", table_label(id))
|
530
592
|
end
|
531
593
|
|
532
594
|
def inline_img(id)
|
533
595
|
chapter, id = extract_chapter_id(id)
|
534
|
-
macro('reviewimageref', "#{chapter.number}.#{chapter.image(id).number}")
|
596
|
+
macro('reviewimageref', "#{chapter.number}.#{chapter.image(id).number}", image_label(id))
|
535
597
|
end
|
536
598
|
|
537
599
|
def footnote(id, content)
|
@@ -610,8 +672,11 @@ module ReVIEW
|
|
610
672
|
end
|
611
673
|
|
612
674
|
def inline_tt(str)
|
613
|
-
|
614
|
-
|
675
|
+
macro('texttt', escape(str))
|
676
|
+
end
|
677
|
+
|
678
|
+
def inline_del(str)
|
679
|
+
macro('reviewstrike', escape(str))
|
615
680
|
end
|
616
681
|
|
617
682
|
def inline_tti(str)
|
@@ -623,11 +688,11 @@ module ReVIEW
|
|
623
688
|
end
|
624
689
|
|
625
690
|
def inline_bib(id)
|
626
|
-
"[#{@chapter.bibpaper(id).number}]"
|
691
|
+
macro('reviewbibref', "[#{@chapter.bibpaper(id).number}]", bib_label(id))
|
627
692
|
end
|
628
693
|
|
629
694
|
def inline_hd_chap(chap, id)
|
630
|
-
"「#{chap.headline_index.number(id)} #{chap.headline(id).caption}」"
|
695
|
+
"「#{chap.headline_index.number(id)} #{compile_inline(chap.headline(id).caption)}」"
|
631
696
|
end
|
632
697
|
|
633
698
|
def inline_raw(str)
|
@@ -643,17 +708,21 @@ module ReVIEW
|
|
643
708
|
end
|
644
709
|
|
645
710
|
def inline_em(str)
|
646
|
-
macro('
|
711
|
+
macro('reviewem', escape(str))
|
647
712
|
end
|
648
713
|
|
649
714
|
def inline_strong(str)
|
650
|
-
macro('
|
715
|
+
macro('reviewstrong', escape(str))
|
651
716
|
end
|
652
717
|
|
653
718
|
def inline_u(str)
|
654
719
|
macro('Underline', escape(str))
|
655
720
|
end
|
656
721
|
|
722
|
+
def inline_ami(str)
|
723
|
+
macro('reviewami', escape(str))
|
724
|
+
end
|
725
|
+
|
657
726
|
def inline_icon(id)
|
658
727
|
macro('includegraphics', @chapter.image(id).path)
|
659
728
|
end
|
@@ -666,17 +735,18 @@ module ReVIEW
|
|
666
735
|
def inline_comment(str)
|
667
736
|
if ReVIEW.book.param["draft"]
|
668
737
|
macro('pdfcomment', escape(str))
|
738
|
+
else
|
739
|
+
""
|
669
740
|
end
|
670
741
|
end
|
671
742
|
|
672
743
|
def bibpaper_header(id, caption)
|
673
744
|
puts "[#{@chapter.bibpaper(id).number}] #{compile_inline(caption)}"
|
745
|
+
puts macro('label', bib_label(id))
|
674
746
|
end
|
675
747
|
|
676
748
|
def bibpaper_bibpaper(id, caption, lines)
|
677
|
-
lines.
|
678
|
-
puts detab(line)
|
679
|
-
end
|
749
|
+
print split_paragraph(lines).join("")
|
680
750
|
end
|
681
751
|
|
682
752
|
def index(str)
|
@@ -706,7 +776,7 @@ module ReVIEW
|
|
706
776
|
end
|
707
777
|
|
708
778
|
def compile_href(url, label)
|
709
|
-
if /\A[a-z]
|
779
|
+
if /\A[a-z]+:/ =~ url
|
710
780
|
if label
|
711
781
|
macro("href", escape_url(url), escape(label))
|
712
782
|
else
|
@@ -729,6 +799,10 @@ module ReVIEW
|
|
729
799
|
"svg"
|
730
800
|
end
|
731
801
|
|
802
|
+
def olnum(num)
|
803
|
+
@ol_num = num.to_i
|
804
|
+
end
|
805
|
+
|
732
806
|
end
|
733
807
|
|
734
808
|
end
|