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,82 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'test_helper'
|
|
3
|
+
require 'review'
|
|
4
|
+
require 'review/book/image_finder'
|
|
5
|
+
require 'fileutils'
|
|
6
|
+
|
|
7
|
+
class ImageFinderTest < Test::Unit::TestCase
|
|
8
|
+
include ReVIEW
|
|
9
|
+
|
|
10
|
+
def setup
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_find_path_pattern1
|
|
14
|
+
dir = Dir.mktmpdir
|
|
15
|
+
begin
|
|
16
|
+
path = dir+"/builder/ch01/foo.jpg"
|
|
17
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
18
|
+
FileUtils.touch(path)
|
|
19
|
+
|
|
20
|
+
finder = ReVIEW::Book::ImageFinder.new(dir, "ch01", "builder", [".jpg"])
|
|
21
|
+
assert_equal(path, finder.find_path("foo"))
|
|
22
|
+
ensure
|
|
23
|
+
FileUtils.remove_entry_secure dir
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_find_path_pattern2
|
|
28
|
+
dir = Dir.mktmpdir
|
|
29
|
+
begin
|
|
30
|
+
path = dir+"/builder/ch01-foo.jpg"
|
|
31
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
32
|
+
FileUtils.touch(path)
|
|
33
|
+
|
|
34
|
+
finder = ReVIEW::Book::ImageFinder.new(dir, "ch01", "builder", [".jpg"])
|
|
35
|
+
assert_equal(path, finder.find_path("foo"))
|
|
36
|
+
ensure
|
|
37
|
+
FileUtils.remove_entry_secure dir
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_find_path_pattern3
|
|
42
|
+
dir = Dir.mktmpdir
|
|
43
|
+
begin
|
|
44
|
+
path = dir+"/builder/foo.jpg"
|
|
45
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
46
|
+
FileUtils.touch(path)
|
|
47
|
+
|
|
48
|
+
finder = ReVIEW::Book::ImageFinder.new(dir, "ch01", "builder", [".jpg"])
|
|
49
|
+
assert_equal(path, finder.find_path("foo"))
|
|
50
|
+
ensure
|
|
51
|
+
FileUtils.remove_entry_secure dir
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_find_path_pattern4
|
|
56
|
+
dir = Dir.mktmpdir
|
|
57
|
+
begin
|
|
58
|
+
path = dir+"/ch01/foo.jpg"
|
|
59
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
60
|
+
FileUtils.touch(path)
|
|
61
|
+
|
|
62
|
+
finder = ReVIEW::Book::ImageFinder.new(dir, "ch01", "builder", [".jpg"])
|
|
63
|
+
assert_equal(path, finder.find_path("foo"))
|
|
64
|
+
ensure
|
|
65
|
+
FileUtils.remove_entry_secure dir
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_find_path_pattern5
|
|
70
|
+
dir = Dir.mktmpdir
|
|
71
|
+
begin
|
|
72
|
+
path = dir+"/ch01-foo.jpg"
|
|
73
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
74
|
+
FileUtils.touch(path)
|
|
75
|
+
|
|
76
|
+
finder = ReVIEW::Book::ImageFinder.new(dir, "ch01", "builder", [".jpg"])
|
|
77
|
+
assert_equal(path, finder.find_path("foo"))
|
|
78
|
+
ensure
|
|
79
|
+
FileUtils.remove_entry_secure dir
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require 'test_helper'
|
|
3
|
+
require 'book_test_helper'
|
|
4
|
+
require 'review'
|
|
5
|
+
|
|
6
|
+
class INAOBuidlerTest < Test::Unit::TestCase
|
|
7
|
+
include ReVIEW
|
|
8
|
+
include BookTestHelper
|
|
9
|
+
|
|
10
|
+
def setup
|
|
11
|
+
@param = {
|
|
12
|
+
"secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder
|
|
13
|
+
"stylesheet" => nil, # for HTMLBuilder
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_all
|
|
18
|
+
compiler = Compiler.new(INAOBuilder.new)
|
|
19
|
+
mktmpbookdir do |dir, book, files|
|
|
20
|
+
chapter = Book::Chapter.new(book, 1, "chap1", nil, StringIO.new)
|
|
21
|
+
chapter.content = <<-EOS
|
|
22
|
+
= 見出し1(大見出し、節)
|
|
23
|
+
== 見出し2(中見出し、項)
|
|
24
|
+
=== 見出し3(小見出し、目)
|
|
25
|
+
段落冒頭の字下げは、自動で行われます。
|
|
26
|
+
改行は、(改行)
|
|
27
|
+
このように自動で取り除かれます。
|
|
28
|
+
|
|
29
|
+
通常の本文@<b>{強調(ボールド)}通常の本文@<i>{斜体(イタリック)}通常の本文@<tt>{インラインのコード}通常の本文@<fn>{1}通常の本文@<kbd>{Enter}(←キーボードフォント)通常の本文@<ruby>{外村,ほかむら}(←ルビ)。
|
|
30
|
+
|
|
31
|
+
//footnote[1][脚注]
|
|
32
|
+
|
|
33
|
+
//quote{
|
|
34
|
+
引用です
|
|
35
|
+
//}
|
|
36
|
+
|
|
37
|
+
====[column]コラム見出し
|
|
38
|
+
本文コラム
|
|
39
|
+
|
|
40
|
+
===== コラム小見出し
|
|
41
|
+
本文コラム
|
|
42
|
+
|
|
43
|
+
====[/column]
|
|
44
|
+
|
|
45
|
+
== 箇条書き
|
|
46
|
+
=== 通常の箇条書き
|
|
47
|
+
* 連番箇条書き
|
|
48
|
+
* 連番箇条書き
|
|
49
|
+
=== 連番箇条書き
|
|
50
|
+
1. 連番箇条書き
|
|
51
|
+
2. 連番箇条書き
|
|
52
|
+
|
|
53
|
+
== コマンド
|
|
54
|
+
//cmd[コマンドのタイトル]{
|
|
55
|
+
$ command foo
|
|
56
|
+
//}
|
|
57
|
+
|
|
58
|
+
=== 本文埋め込みコマンド(本文埋め込み版はWEB+DB PRESSでは未使用)
|
|
59
|
+
//cmd{
|
|
60
|
+
$ command foo
|
|
61
|
+
//}
|
|
62
|
+
|
|
63
|
+
== 表
|
|
64
|
+
//table[id][表のタイトル]{
|
|
65
|
+
項目1 項目2
|
|
66
|
+
-------------
|
|
67
|
+
内容1 内容2
|
|
68
|
+
内容1 内容2
|
|
69
|
+
//}
|
|
70
|
+
|
|
71
|
+
EOS
|
|
72
|
+
|
|
73
|
+
expected = <<-EOS
|
|
74
|
+
■見出し1(大見出し、節)
|
|
75
|
+
■■見出し2(中見出し、項)
|
|
76
|
+
■■■見出し3(小見出し、目)
|
|
77
|
+
段落冒頭の字下げは、自動で行われます。改行は、(改行)このように自動で取り除かれます。
|
|
78
|
+
通常の本文◆b/◆強調(ボールド)◆/b◆通常の本文◆i/◆斜体(イタリック)◆/i◆通常の本文◆cmd/◆インラインのコード◆/cmd◆通常の本文◆注/◆脚注◆/注◆通常の本文Enter▲(←キーボードフォント)通常の本文◆ルビ/◆外村◆ほかむら◆/ルビ◆(←ルビ)。
|
|
79
|
+
◆quote/◆
|
|
80
|
+
引用です
|
|
81
|
+
◆/quote◆
|
|
82
|
+
|
|
83
|
+
◆column/◆
|
|
84
|
+
■■■■コラム見出し
|
|
85
|
+
本文コラム
|
|
86
|
+
■■■■■コラム小見出し
|
|
87
|
+
本文コラム
|
|
88
|
+
◆/column◆
|
|
89
|
+
■■箇条書き
|
|
90
|
+
■■■通常の箇条書き
|
|
91
|
+
・連番箇条書き
|
|
92
|
+
・連番箇条書き
|
|
93
|
+
■■■連番箇条書き
|
|
94
|
+
(1)連番箇条書き
|
|
95
|
+
(2)連番箇条書き
|
|
96
|
+
■■コマンド
|
|
97
|
+
◆list-white/◆
|
|
98
|
+
●コマンドのタイトル
|
|
99
|
+
$ command foo
|
|
100
|
+
◆/list-white◆
|
|
101
|
+
■■■本文埋め込みコマンド(本文埋め込み版はWEB+DB PRESSでは未使用)
|
|
102
|
+
◆list-white/◆
|
|
103
|
+
$ command foo
|
|
104
|
+
◆/list-white◆
|
|
105
|
+
■■表
|
|
106
|
+
◆table/◆
|
|
107
|
+
●表1.1 表のタイトル
|
|
108
|
+
◆table-title◆項目1 項目2
|
|
109
|
+
内容1 内容2
|
|
110
|
+
内容1 内容2
|
|
111
|
+
◆/table◆
|
|
112
|
+
EOS
|
|
113
|
+
assert_equal expected, compiler.compile(chapter)
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_list
|
|
118
|
+
compiler = Compiler.new(INAOBuilder.new)
|
|
119
|
+
mktmpbookdir do |dir, book, files|
|
|
120
|
+
chapter = Book::Chapter.new(book, 1, "chap1", nil, StringIO.new)
|
|
121
|
+
chapter.content = <<-EOS
|
|
122
|
+
== リスト
|
|
123
|
+
@<list>{id}
|
|
124
|
+
//list[id][キャプション(コードのタイトル)]{
|
|
125
|
+
function hoge() {
|
|
126
|
+
alert(foo);
|
|
127
|
+
alert(bar);
|
|
128
|
+
}
|
|
129
|
+
//}
|
|
130
|
+
|
|
131
|
+
=== 本文埋め込みリスト
|
|
132
|
+
本文中で流れでコードを掲載するときに使用します。
|
|
133
|
+
|
|
134
|
+
//emlist{
|
|
135
|
+
function hoge() {
|
|
136
|
+
alert(foo);@<comment>{こんな風にコメントがつけられます}
|
|
137
|
+
}
|
|
138
|
+
//}
|
|
139
|
+
|
|
140
|
+
このように、上下に本文が入ります。
|
|
141
|
+
|
|
142
|
+
本文から一連の流れで読んでもらうことができますが、コードがページをまたぐ可能性がございます。
|
|
143
|
+
EOS
|
|
144
|
+
expected = <<-EOS
|
|
145
|
+
■■リスト
|
|
146
|
+
リスト1.1
|
|
147
|
+
◆list/◆
|
|
148
|
+
●リスト1.1 キャプション(コードのタイトル)
|
|
149
|
+
function hoge() {
|
|
150
|
+
alert(foo);
|
|
151
|
+
alert(bar);
|
|
152
|
+
}
|
|
153
|
+
◆/list◆
|
|
154
|
+
■■■本文埋め込みリスト
|
|
155
|
+
本文中で流れでコードを掲載するときに使用します。
|
|
156
|
+
◆list/◆
|
|
157
|
+
function hoge() {
|
|
158
|
+
alert(foo);◆comment/◆こんな風にコメントがつけられます◆/comment◆
|
|
159
|
+
}
|
|
160
|
+
◆/list◆
|
|
161
|
+
このように、上下に本文が入ります。
|
|
162
|
+
本文から一連の流れで読んでもらうことができますが、コードがページをまたぐ可能性がございます。
|
|
163
|
+
EOS
|
|
164
|
+
assert_equal expected, compiler.compile(chapter)
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def test_image
|
|
169
|
+
compiler = Compiler.new(INAOBuilder.new)
|
|
170
|
+
mktmpbookdir do |dir, book, files|
|
|
171
|
+
chapter = Book::Chapter.new(book, 1, "chap1", nil, StringIO.new)
|
|
172
|
+
chapter.content = <<-EOS
|
|
173
|
+
= 図
|
|
174
|
+
@<img>{id}
|
|
175
|
+
//image[id][図のタイトル]{
|
|
176
|
+
ダミー
|
|
177
|
+
//}
|
|
178
|
+
EOS
|
|
179
|
+
expected = <<-EOS
|
|
180
|
+
■図
|
|
181
|
+
図1.1
|
|
182
|
+
●図1.1 図のタイトル
|
|
183
|
+
ダミー
|
|
184
|
+
EOS
|
|
185
|
+
assert_equal expected, compiler.compile(chapter)
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
def test_table
|
|
190
|
+
compiler = Compiler.new(INAOBuilder.new)
|
|
191
|
+
mktmpbookdir do |dir, book, files|
|
|
192
|
+
chapter = Book::Chapter.new(book, 1, "chap1", nil, StringIO.new)
|
|
193
|
+
chapter.content = <<-EOS
|
|
194
|
+
== 表
|
|
195
|
+
@<table>{id}
|
|
196
|
+
//table[id][表のタイトル]{
|
|
197
|
+
項目1 項目2
|
|
198
|
+
-------------
|
|
199
|
+
内容1 内容2
|
|
200
|
+
内容1 内容2
|
|
201
|
+
//}
|
|
202
|
+
EOS
|
|
203
|
+
expected = <<-EOS
|
|
204
|
+
■■表
|
|
205
|
+
表1.1
|
|
206
|
+
◆table/◆
|
|
207
|
+
●表1.1 表のタイトル
|
|
208
|
+
◆table-title◆項目1 項目2
|
|
209
|
+
内容1 内容2
|
|
210
|
+
内容1 内容2
|
|
211
|
+
◆/table◆
|
|
212
|
+
EOS
|
|
213
|
+
assert_equal expected, compiler.compile(chapter)
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def test_listnum
|
|
218
|
+
compiler = Compiler.new(INAOBuilder.new)
|
|
219
|
+
mktmpbookdir do |dir, book, files|
|
|
220
|
+
chapter = Book::Chapter.new(book, 1, "chap1", nil, StringIO.new)
|
|
221
|
+
chapter.content = <<-EOS
|
|
222
|
+
== リスト
|
|
223
|
+
@<list>{id}
|
|
224
|
+
//listnum[id][キャプション(コードのタイトル)]{
|
|
225
|
+
function hoge() {
|
|
226
|
+
alert(foo);
|
|
227
|
+
alert(bar);
|
|
228
|
+
}
|
|
229
|
+
//}
|
|
230
|
+
EOS
|
|
231
|
+
expected = <<-EOS
|
|
232
|
+
■■リスト
|
|
233
|
+
リスト1.1
|
|
234
|
+
◆list/◆
|
|
235
|
+
●リスト1.1 キャプション(コードのタイトル)
|
|
236
|
+
1 function hoge() {
|
|
237
|
+
2 alert(foo);
|
|
238
|
+
3 alert(bar);
|
|
239
|
+
4 }
|
|
240
|
+
◆/list◆
|
|
241
|
+
EOS
|
|
242
|
+
assert_equal expected, compiler.compile(chapter)
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
end
|
data/test/test_index.rb
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
require 'review/book'
|
|
5
|
+
require 'review/book/index'
|
|
6
|
+
|
|
7
|
+
class IndexTest < Test::Unit::TestCase
|
|
8
|
+
include ReVIEW
|
|
9
|
+
def test_footnote_index
|
|
10
|
+
fn = Book::FootnoteIndex.parse(['//footnote[foo][bar]'])
|
|
11
|
+
items = fn.to_a
|
|
12
|
+
item = items[0]
|
|
13
|
+
assert_equal 'foo', item.id
|
|
14
|
+
assert_equal 'bar', item.content
|
|
15
|
+
end
|
|
16
|
+
def test_footnote_index_with_escape
|
|
17
|
+
fn = Book::FootnoteIndex.parse(['//footnote[foo][bar[\]buz]'])
|
|
18
|
+
items = fn.to_a
|
|
19
|
+
item = items[0]
|
|
20
|
+
assert_equal 'foo', item.id
|
|
21
|
+
assert_equal 'bar[]buz', item.content
|
|
22
|
+
end
|
|
23
|
+
def test_footnote_index_with_escape2
|
|
24
|
+
fn = Book::FootnoteIndex.parse(['//footnote[foo][bar\\a\\$buz]'])
|
|
25
|
+
items = fn.to_a
|
|
26
|
+
item = items[0]
|
|
27
|
+
assert_equal 'foo', item.id
|
|
28
|
+
assert_equal 'bar\\a\\$buz', item.content
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_HeadelineIndex
|
|
32
|
+
src = <<-EOB
|
|
33
|
+
= chap1
|
|
34
|
+
== sec1-1
|
|
35
|
+
== sec1-2
|
|
36
|
+
=== sec1-2-1
|
|
37
|
+
===[column] column1
|
|
38
|
+
==== inside_column
|
|
39
|
+
===[/column]
|
|
40
|
+
===[column] column2
|
|
41
|
+
=== sec1-2-2
|
|
42
|
+
== sec1-3
|
|
43
|
+
==== sec1-3-0-1
|
|
44
|
+
EOB
|
|
45
|
+
book = Book::Base.load
|
|
46
|
+
chap = Book::Chapter.new(book, 1, '-', nil) # dummy
|
|
47
|
+
index = Book::HeadlineIndex.parse(src, chap)
|
|
48
|
+
assert_equal [2,2], index['sec1-2|sec1-2-2'].number
|
|
49
|
+
assert_equal "1.2.2", index.number('sec1-2|sec1-2-2')
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_HeadelineIndex2
|
|
53
|
+
src = <<-EOB
|
|
54
|
+
= chap1
|
|
55
|
+
== sec1-1
|
|
56
|
+
== sec1-2
|
|
57
|
+
=== sec1-2-1
|
|
58
|
+
===[column] column1
|
|
59
|
+
== sec1-3
|
|
60
|
+
=== sec1-3-1
|
|
61
|
+
EOB
|
|
62
|
+
book = Book::Base.load
|
|
63
|
+
chap = Book::Chapter.new(book, 1, '-', nil) # dummy
|
|
64
|
+
index = Book::HeadlineIndex.parse(src, chap)
|
|
65
|
+
assert_equal [3,1], index['sec1-3|sec1-3-1'].number
|
|
66
|
+
assert_equal "1.3.1", index.number('sec1-3|sec1-3-1')
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_HeadelineIndex3
|
|
70
|
+
src = <<-EOB
|
|
71
|
+
= chap1
|
|
72
|
+
== sec1-1
|
|
73
|
+
== sec1-2
|
|
74
|
+
=== sec1-2-1
|
|
75
|
+
===[column] column1
|
|
76
|
+
=== sec1-2-2
|
|
77
|
+
== sec1-3
|
|
78
|
+
=== sec1-3-1
|
|
79
|
+
EOB
|
|
80
|
+
book = Book::Base.load
|
|
81
|
+
chap = Book::Chapter.new(book, 1, '-', nil) # dummy
|
|
82
|
+
index = Book::HeadlineIndex.parse(src, chap)
|
|
83
|
+
assert_equal [2,2], index['sec1-2|sec1-2-2'].number
|
|
84
|
+
assert_equal "1.2.2", index.number('sec1-2|sec1-2-2')
|
|
85
|
+
|
|
86
|
+
assert_equal [3,1], index['sec1-3|sec1-3-1'].number
|
|
87
|
+
assert_equal "1.3.1", index.number('sec1-3|sec1-3-1')
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def test_HeadelineIndex4
|
|
91
|
+
src = <<-EOB
|
|
92
|
+
= chap1
|
|
93
|
+
====[column] c1
|
|
94
|
+
== sec1-1
|
|
95
|
+
== sec1-2
|
|
96
|
+
=== sec1-2-1
|
|
97
|
+
=== sec1-2-2
|
|
98
|
+
EOB
|
|
99
|
+
book = Book::Base.load
|
|
100
|
+
chap = Book::Chapter.new(book, 1, '-', nil) # dummy
|
|
101
|
+
index = Book::HeadlineIndex.parse(src, chap)
|
|
102
|
+
assert_equal [2,2], index['sec1-2|sec1-2-2'].number
|
|
103
|
+
assert_equal "1.2.2", index.number('sec1-2|sec1-2-2')
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def test_HeadelineIndex5
|
|
107
|
+
src = <<-EOB
|
|
108
|
+
= chap1
|
|
109
|
+
====[column] c1
|
|
110
|
+
== sec1-1
|
|
111
|
+
== sec1-2
|
|
112
|
+
=== sec1-2-1
|
|
113
|
+
=== sec1-2-2
|
|
114
|
+
EOB
|
|
115
|
+
book = Book::Base.load
|
|
116
|
+
chap = Book::Chapter.new(book, 1, '-', nil) # dummy
|
|
117
|
+
index = Book::HeadlineIndex.parse(src, chap)
|
|
118
|
+
assert_equal [2,2], index['sec1-2-2'].number
|
|
119
|
+
assert_equal "1.2.2", index.number('sec1-2-2')
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def test_HeadelineIndex6
|
|
123
|
+
src = <<-EOB
|
|
124
|
+
= chap1
|
|
125
|
+
== sec1
|
|
126
|
+
=== target
|
|
127
|
+
== sec2
|
|
128
|
+
|
|
129
|
+
EOB
|
|
130
|
+
book = Book::Base.load
|
|
131
|
+
chap = Book::Chapter.new(book, 1, '-', nil) # dummy
|
|
132
|
+
index = Book::HeadlineIndex.parse(src, chap)
|
|
133
|
+
assert_equal [1,1], index['target'].number
|
|
134
|
+
assert_equal "1.1.1", index.number('target')
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def test_HeadelineIndex7
|
|
139
|
+
src = <<-EOB
|
|
140
|
+
= chap1
|
|
141
|
+
== sec1
|
|
142
|
+
=== target
|
|
143
|
+
^-- dummy target
|
|
144
|
+
== sec2
|
|
145
|
+
=== target
|
|
146
|
+
^-- real target but it cannot be detected, because there is another one.
|
|
147
|
+
|
|
148
|
+
EOB
|
|
149
|
+
book = Book::Base.load
|
|
150
|
+
chap = Book::Chapter.new(book, 1, '-', nil) # dummy
|
|
151
|
+
index = Book::HeadlineIndex.parse(src, chap)
|
|
152
|
+
|
|
153
|
+
assert_raise ReVIEW::KeyError do
|
|
154
|
+
assert_equal [1,1], index['target'].number
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def test_HeadelineIndex8
|
|
159
|
+
src = <<-EOB
|
|
160
|
+
= chap1
|
|
161
|
+
== sec1
|
|
162
|
+
=== sec1-1
|
|
163
|
+
==== sec1-1-1
|
|
164
|
+
|
|
165
|
+
EOB
|
|
166
|
+
book = Book::Base.load
|
|
167
|
+
chap = Book::Chapter.new(book, 1, '-', nil)
|
|
168
|
+
index = Book::HeadlineIndex.parse(src, chap)
|
|
169
|
+
assert_equal "1.1.1", index.number('sec1-1')
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
end
|
|
174
|
+
|