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
@@ -1,186 +1,72 @@
|
|
1
|
-
|
2
|
-
# yamlファイルをRe:VIEWファイルのある場所に置き、
|
3
|
-
# 「review-epubmaker yamlファイル」を実行すると、<bookname>.epubファイルが
|
4
|
-
# 生成されます。
|
5
|
-
# このファイルはUTF-8エンコーディングで記述してください。
|
1
|
+
## config.yml for sample book
|
6
2
|
|
7
|
-
# ブック名(ファイル名になるもの。ASCII範囲の文字を使用)
|
8
3
|
bookname: book
|
9
|
-
# 記述言語。省略した場合はja
|
10
4
|
language: ja
|
11
|
-
# 書名
|
12
5
|
booktitle: Re:VIEWサンプル書籍
|
13
|
-
|
14
|
-
urnid: urn:uid:http://tatsu-zine.com/books/review-sample-book/1.0.0/
|
15
|
-
# ISBN。省略した場合はurnidが入る
|
6
|
+
urnid: urn:uid:http://reviewml.com/books/review-sample-book/
|
16
7
|
# isbn: null
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
# 発行年月。YYYY-MM-DD形式による配列指定。省略した場合はdateを使用する
|
26
|
-
# 複数指定する場合は次のように記述する
|
27
|
-
# [["初版第第1刷の日付", "初版第第2刷の日付"], ["第2版第1刷の日付"]]
|
28
|
-
# 日付の後ろを空白文字で区切り、任意の文字列を置くことも可能。
|
29
|
-
history: [["2011-08-03 v1.0.0版発行"]]
|
30
|
-
# 権利表記
|
31
|
-
rights: (C) 2011 Masayoshi Takahashi
|
32
|
-
|
33
|
-
# 以下はオプション(autと同じように配列書式で複数指定可能)。
|
34
|
-
# adp: 異なるメディア向けに作り直した者
|
35
|
-
# ann: 注釈記述者
|
36
|
-
# arr: アレンジした者
|
37
|
-
# art: グラフィックデザインおよび芸術家
|
38
|
-
# asn: 関連・かつての所有者・関係者
|
39
|
-
# aqt: 大きく引用された人物
|
40
|
-
# aft: 後書き・奥付の責任者
|
41
|
-
# aui: 序論・序文・前書きの責任者
|
42
|
-
# ant: 目録責任者
|
43
|
-
# bkp: メディア制作責任者
|
44
|
-
# clb: 限定参加または補足者
|
45
|
-
# cmm: 解釈・分析・考察者
|
46
|
-
# dsr: デザイナ
|
47
|
-
# edt: 編集者
|
48
|
-
# ill: イラストレータ
|
49
|
-
# lyr: 歌詞作成者
|
50
|
-
# mdc: メタデータセットの一次的責任者
|
51
|
-
# mus: 音楽家
|
52
|
-
# nrt: 語り手
|
53
|
-
# oth: その他
|
54
|
-
# pht: 撮影責任者
|
55
|
-
# red: 項目の枠組起草者
|
56
|
-
# rev: 評論者
|
57
|
-
# spn: 援助者
|
58
|
-
# ths: 監督者
|
59
|
-
# trc: 筆記・タイプ作業者
|
60
|
-
# trl: 翻訳者
|
61
|
-
# description: ブックの説明
|
62
|
-
# subject: 短い説明用タグ
|
63
|
-
# type: 書籍のカテゴリーなど
|
64
|
-
# format: メディアタイプおよび特徴
|
65
|
-
# source: 出版物生成の重要なリソース情報
|
66
|
-
# relation: 補助的リソース
|
67
|
-
# coverage: 内容の範囲や領域
|
68
|
-
|
69
|
-
# htmlext: HTMLファイルの拡張子(省略した場合はhtml)
|
70
|
-
# CSSファイル(配列で複数指定可、yamlファイルおよびRe:VIEWファイルを置いたディレクトリにあること)
|
8
|
+
aut: Re:VIEW Writers
|
9
|
+
pbl: Re:VIEW Publishers
|
10
|
+
edt: Re:VIEW Editors
|
11
|
+
date: 2016-04-29
|
12
|
+
history: [["2011-08-03 v1.0.0版発行"],["2016-04-29 v2.0.0版発行"]]
|
13
|
+
rights: (C) 2016 Re:VIEW Commiters
|
14
|
+
highlight: null
|
15
|
+
htmlext: html
|
71
16
|
stylesheet: ["style.css"]
|
17
|
+
toc: true
|
72
18
|
|
73
|
-
# ePUBのバージョン (2か3) 省略した場合は2
|
74
|
-
epubversion: 3
|
75
|
-
# HTMLのバージョン (4か5。epubversionを3にしたときには5にする)
|
76
|
-
# htmlversion: 5
|
77
|
-
|
78
|
-
# 目次を作成するか。省略した場合はnull(作成しない)
|
79
|
-
# toc: true
|
80
|
-
|
81
|
-
# 目次として抽出する見出しレベル。省略した場合は2
|
82
19
|
toclevel: 2
|
83
|
-
# 本文でセクション番号を表示する見出しレベル。省略した場合は2
|
84
|
-
# 採番させたくない見出しには「==[nonum]」のようにnonum指定をする
|
85
20
|
secnolevel: 3
|
86
|
-
|
87
|
-
# ePUB3においてはこの設定によらず必ず作成される
|
88
|
-
# mytoc: true
|
89
|
-
|
90
|
-
# 付録の連番のスタイル。null(アラビア数字1〜。デフォルト)、alpha(英字A〜)、roman(ローマ数字I〜)
|
91
|
-
# appendix_format: null
|
92
|
-
|
93
|
-
# 表紙にするHTMLファイル。ファイル名を指定すると表紙として入る
|
94
|
-
# cover: _cover.html
|
95
|
-
# 表紙に配置し、書籍の影絵にも利用する画像ファイル。省略した場合はnull (画像を使わない)
|
21
|
+
cover: cover.html
|
96
22
|
coverimage: cover.jpg
|
97
|
-
# 表紙の後に大扉ページを作成するか。省略した場合はnull (作成しない)
|
98
23
|
# titlepage: null
|
99
|
-
# 自動生成される大扉ページを上書きするファイル。ファイル名を指定すると大扉として入る
|
100
24
|
# titlefile: null
|
101
|
-
# 原書大扉ページにするHTMLファイル。ファイル名を指定すると原書大扉として入る
|
102
25
|
# originaltitlefile: null
|
103
|
-
# 権利表記ページファイル。ファイル名を指定すると権利表記として入る
|
104
26
|
# creditfile: null
|
105
|
-
# プロフィールページファイル。ファイル名を指定すると著者紹介として入る
|
106
27
|
# profile: null
|
107
|
-
# プロフィールページの目次上の見出し
|
108
28
|
# profiletitle: 著者紹介
|
109
|
-
# 広告ファイル。ファイル名を指定すると広告として入る
|
110
29
|
# advfile: null
|
111
|
-
# 奥付を作成するか。デフォルトでは作成されない。trueを指定するとデフォルトの奥付、ファイル名を指定するとそれがcolophon.htmlとしてコピーされる
|
112
30
|
colophon: true
|
113
|
-
# 裏表紙ファイル (画像はcoversまたはimagesに配置する)。ファイル名を指定すると裏表紙として入る
|
114
31
|
# backcover: null
|
32
|
+
# imagedir: images
|
33
|
+
# fontdir: fonts
|
34
|
+
# image_ext: ["png", "gif", "jpg", "jpeg", "svg", "ttf", "woff", "otf"]
|
35
|
+
# font_ext: ["ttf", "woff", "otf"]
|
36
|
+
# catalogfile: catalog.yml
|
37
|
+
# page_metric: A5
|
38
|
+
# page_metric: [40,80,40,80,2]
|
39
|
+
# direction: "ltr"
|
115
40
|
|
116
|
-
|
117
|
-
|
118
|
-
# パラメータ: 値
|
119
|
-
# パラメータ: 値
|
120
|
-
# ...
|
121
|
-
# という構成にする必要がある(インデントさせる)
|
122
|
-
|
123
|
-
# epubmaker:
|
124
|
-
# 目次を要素の階層表現にしない。省略した場合(null)は階層化する。
|
125
|
-
# 特に部扉が入るなどの理由で、構成によっては階層化目次でepubcheckに
|
126
|
-
# パスしない目次ができるが、そのようなときにはこれをtrueにする
|
41
|
+
epubmaker:
|
42
|
+
htmlext: xhtml
|
127
43
|
# flattoc: null
|
128
|
-
# 目次のインデントレベルをスペース文字で表現する(flattocがtrueのときのみ)
|
129
44
|
# flattocindent: true
|
130
|
-
# NCX目次の見出しレベルごとの飾り(配列で設定)。EPUB3ではNCXは作られない
|
131
|
-
# ncxindent:
|
132
|
-
#-
|
133
|
-
#- -
|
134
|
-
# フックは、各段階で介入したいときのプログラムを指定する。自動で適切な引数が渡される
|
135
|
-
# プログラムには実行権限が必要
|
136
|
-
# ファイル変換処理の前に実行するプログラム。スタイルシートのコンパイルをしたいときなどに利用する。
|
137
|
-
# 渡される引数1=作業用展開ディレクトリ
|
138
45
|
# hook_beforeprocess: null
|
139
|
-
# 前付の作成後に実行するプログラム。作業用展開ディレクトリにある目次ファイル(toc-html.txt)を操作したいときなどに利用する。
|
140
|
-
# 渡される引数1=作業用展開ディレクトリ
|
141
46
|
# hook_afterfrontmatter: null
|
142
|
-
# 本文の変換後に実行するプログラム。作業用展開ディレクトリにある目次ファイル(toc-html.txt)を操作したいときなどに利用する。
|
143
|
-
# 渡される引数1=作業用展開ディレクトリ
|
144
47
|
# hook_afterbody: null
|
145
|
-
# 後付の作成後に実行するプログラム。作業用展開ディレクトリにある目次ファイル(toc-html.txt)を操作したいときなどに利用する。
|
146
|
-
# 渡される引数1=作業用展開ディレクトリ
|
147
48
|
# hook_afterbackmatter: null
|
148
|
-
# 画像およびフォントをコピーした後に実行するプログラム。別の画像やフォントを追加したいときなどに利用する。
|
149
|
-
# 渡される引数1=作業用展開ディレクトリ
|
150
49
|
# hook_aftercopyimage: null
|
151
|
-
# ePUB zipアーカイブ直前に実行するプログラム。メタ情報などを加工したいときなどに利用する。
|
152
|
-
# 渡される引数1=ePUB準備ディレクトリ
|
153
50
|
# hook_prepack: null
|
154
|
-
# 変換したHTMLファイルおよびCSSを解析して厳密に使用している画像ファイルだけを取り込むか。デフォルトはnull(imagesディレクトリすべてを取り込む)
|
155
|
-
# なお、フォント、カバー、広告についてはこの設定によらずディレクトリ内のものがすべて取り込まれる
|
156
51
|
# verify_target_images: null
|
157
|
-
# verify_target_imagesがtrueの状態において、解析で発見されなくても強制的に取り込むファイルの相対パスの配列
|
158
52
|
# force_include_images: []
|
159
|
-
#
|
160
|
-
#
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
#
|
165
|
-
#
|
166
|
-
#
|
167
|
-
#
|
168
|
-
#
|
53
|
+
# cover_linear: null
|
54
|
+
# externallink: true
|
55
|
+
|
56
|
+
pdfmaker:
|
57
|
+
texstyle: reviewmacro
|
58
|
+
# texdocumentclass: ["jsbook", "uplatex,oneside"]
|
59
|
+
# texcommand: "uplatex"
|
60
|
+
# texoptions: null
|
61
|
+
# dvicommand: "dvipdfmx"
|
62
|
+
# dvioptions: "-d 5"
|
63
|
+
# hook_beforetexcompile: null
|
64
|
+
# hook_aftertexcompile: null
|
65
|
+
# hook_afterdvipdf: null
|
66
|
+
# image_scale2width: true
|
67
|
+
|
68
|
+
webmaker:
|
69
|
+
stylesheet: ["style.css", "style-web.css"]
|
169
70
|
|
170
|
-
# ハイライトを有効にするか。pygments.gemが必要
|
171
|
-
# pygments: null
|
172
|
-
|
173
|
-
# 取り込む画像が格納されているディレクトリ。省略した場合は以下
|
174
|
-
# imagedir: images
|
175
|
-
|
176
|
-
# 取り込むフォントが格納されているディレクトリ。省略した場合は以下
|
177
|
-
# fontdir: fonts
|
178
|
-
|
179
|
-
# imagedir内から取り込まれる対象となるファイル拡張子。省略した場合は以下
|
180
|
-
# image_ext: ["png", "gif", "jpg", "jpeg", "svg", "ttf", "woff", "otf"]
|
181
|
-
|
182
|
-
# fontdir内から取り込まれる対象となるファイル拡張子。省略した場合は以下
|
183
|
-
# font_ext: ["ttf", "woff", "otf"]
|
184
|
-
|
185
|
-
texstyle: reviewmacro
|
186
71
|
debug: true
|
72
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
/* stylesheet for Re:VIEW web */
|
2
|
+
nav.side-content {
|
3
|
+
width: 200px;
|
4
|
+
position: fixed; }
|
5
|
+
nav.side-content h1 {
|
6
|
+
margin: 0;
|
7
|
+
padding: 0;
|
8
|
+
font-size: 1em;
|
9
|
+
border-top: none; }
|
10
|
+
nav.side-content ul {
|
11
|
+
list-style: none; }
|
12
|
+
|
13
|
+
.book-body {
|
14
|
+
margin-left: 240px;
|
15
|
+
margin-right: 40px;
|
16
|
+
position: relative; }
|
17
|
+
.book-body .book-page {
|
18
|
+
max-width: 800px;
|
19
|
+
margin: 0 auto;
|
20
|
+
padding: 0 32px 0 32px; }
|
21
|
+
.book-body .book-navi {
|
22
|
+
position: fixed;
|
23
|
+
top: 0;
|
24
|
+
min-width: 40px; }
|
25
|
+
.book-body .book-navi a {
|
26
|
+
text-decoration: none; }
|
27
|
+
.book-body .book-prev {
|
28
|
+
left: 210px; }
|
29
|
+
.book-body .book-next {
|
30
|
+
right: 10px; }
|
31
|
+
.book-body .book-cursor {
|
32
|
+
height: 100vh;
|
33
|
+
text-align: center;
|
34
|
+
font-size: 32pt;
|
35
|
+
padding: 100px 0 0 0;
|
36
|
+
color: #eee; }
|
37
|
+
.book-body .book-cursor:hover {
|
38
|
+
color: #333; }
|
39
|
+
|
40
|
+
footer p {
|
41
|
+
margin-left: 240px;
|
42
|
+
text-align: center; }
|
43
|
+
|
44
|
+
.cover-image img {
|
45
|
+
max-width: 100%; }
|
@@ -248,4 +248,26 @@ strong{
|
|
248
248
|
}
|
249
249
|
em {
|
250
250
|
font-style: italic;
|
251
|
-
}
|
251
|
+
}
|
252
|
+
|
253
|
+
/**
|
254
|
+
* from EBPAJ EPUB 3 File Creation Guide sample style
|
255
|
+
*
|
256
|
+
* cf. http://ebpaj.jp/counsel/guide
|
257
|
+
*/
|
258
|
+
|
259
|
+
/* image width definition(pacentage) */
|
260
|
+
.width-010per { width: 10%; }
|
261
|
+
.width-020per { width: 20%; }
|
262
|
+
.width-025per { width: 25%; }
|
263
|
+
.width-030per { width: 30%; }
|
264
|
+
.width-033per { width: 33%; }
|
265
|
+
.width-040per { width: 40%; }
|
266
|
+
.width-050per { width: 50%; }
|
267
|
+
.width-060per { width: 60%; }
|
268
|
+
.width-067per { width: 67%; }
|
269
|
+
.width-070per { width: 70%; }
|
270
|
+
.width-075per { width: 75%; }
|
271
|
+
.width-080per { width: 80%; }
|
272
|
+
.width-090per { width: 90%; }
|
273
|
+
.width-100per { width: 100%; }
|
data/test/test.re
CHANGED
data/test/test_book.rb
CHANGED
@@ -157,16 +157,14 @@ class BookTest < Test::Unit::TestCase
|
|
157
157
|
# backword compatible
|
158
158
|
def test_setParameter
|
159
159
|
book = Book::Base.new(File.dirname(__FILE__))
|
160
|
-
book.
|
161
|
-
assert_equal :test, book.
|
162
|
-
assert_equal :test, book.config # new way
|
160
|
+
book.config = :test
|
161
|
+
assert_equal :test, book.config
|
163
162
|
end
|
164
163
|
|
165
164
|
def test_setConfig
|
166
165
|
book = Book::Base.new(File.dirname(__FILE__))
|
167
166
|
book.config = :test
|
168
|
-
assert_equal :test, book.
|
169
|
-
assert_equal :test, book.config # new way
|
167
|
+
assert_equal :test, book.config
|
170
168
|
end
|
171
169
|
|
172
170
|
def test_parse_chapters
|
@@ -179,7 +177,7 @@ class BookTest < Test::Unit::TestCase
|
|
179
177
|
parts = book.instance_eval { parse_chapters }
|
180
178
|
assert_equal 1, parts.size
|
181
179
|
|
182
|
-
assert_equal
|
180
|
+
assert_equal nil, parts[0].number
|
183
181
|
assert_equal 2, parts[0].chapters.size
|
184
182
|
chaps = parts[0].chapters.map {|ch| [ch.number, ch.name, ch.path] }
|
185
183
|
expect = [
|
@@ -203,7 +201,7 @@ EOC
|
|
203
201
|
parts = book.instance_eval { parse_chapters }
|
204
202
|
assert_equal 3, parts.size
|
205
203
|
|
206
|
-
assert_equal
|
204
|
+
assert_equal nil, parts[0].number
|
207
205
|
assert_equal 2, parts[0].chapters.size
|
208
206
|
chaps = parts[0].chapters.map {|ch| [ch.number, ch.name, ch.path] }
|
209
207
|
expect = [
|
@@ -212,7 +210,7 @@ EOC
|
|
212
210
|
]
|
213
211
|
assert_equal expect, chaps
|
214
212
|
|
215
|
-
assert_equal
|
213
|
+
assert_equal nil, parts[1].number
|
216
214
|
assert_equal 3, parts[1].chapters.size
|
217
215
|
chaps = parts[1].chapters.map {|ch| [ch.number, ch.name, ch.path] }
|
218
216
|
expect = [
|
@@ -222,7 +220,7 @@ EOC
|
|
222
220
|
]
|
223
221
|
assert_equal expect, chaps
|
224
222
|
|
225
|
-
assert_equal
|
223
|
+
assert_equal nil, parts[2].number
|
226
224
|
assert_equal 1, parts[2].chapters.size
|
227
225
|
chaps = parts[2].chapters.map {|ch| [ch.number, ch.name, ch.path] }
|
228
226
|
expect = [
|
@@ -248,7 +246,7 @@ EOC
|
|
248
246
|
"part1\n",
|
249
247
|
[
|
250
248
|
"part1",
|
251
|
-
|
249
|
+
"", # XXX: OK?
|
252
250
|
""
|
253
251
|
],
|
254
252
|
],
|
@@ -257,7 +255,7 @@ EOC
|
|
257
255
|
"part1_chapter1.re\n",
|
258
256
|
"",
|
259
257
|
[
|
260
|
-
|
258
|
+
"", # XXX: OK?
|
261
259
|
],
|
262
260
|
],
|
263
261
|
[
|
@@ -391,7 +389,7 @@ EOC
|
|
391
389
|
end
|
392
390
|
|
393
391
|
mktmpbookdir 'catalog.yml' => "APPENDIX:\n - p01.re",
|
394
|
-
'p01.re' => '= appendix'
|
392
|
+
'p01.re' => '= appendix' do |dir, book, files|
|
395
393
|
assert_equal 'appendix', book.appendix.chapters.first.title
|
396
394
|
assert_equal 1, book.appendix.chapters.first.number
|
397
395
|
end
|
@@ -399,7 +397,7 @@ EOC
|
|
399
397
|
|
400
398
|
def test_postscripts
|
401
399
|
mktmpbookdir 'catalog.yml' => "POSTDEF:\n - b01.re",
|
402
|
-
'b01.re' => '= back'
|
400
|
+
'b01.re' => '= back' do |dir, book, files|
|
403
401
|
assert_kind_of Book::Part, book.postscripts
|
404
402
|
assert_equal 1, book.postscripts.chapters.size
|
405
403
|
assert_equal 'back', book.postscripts.chapters.first.title
|
@@ -418,12 +416,12 @@ EOC
|
|
418
416
|
assert tmp.empty?
|
419
417
|
end
|
420
418
|
|
421
|
-
mktmpbookdir 'CHAPS' => "ch1\nch2\n\nch3" do |dir, book, files|
|
419
|
+
mktmpbookdir 'CHAPS' => "ch1\nch2\n\nch3", 'PART' => "foo\nbar\n" do |dir, book, files|
|
422
420
|
parts = book.parts
|
423
421
|
assert_equal 2, parts.size
|
424
422
|
assert !book.part(0)
|
425
|
-
|
426
|
-
|
423
|
+
assert_equal "foo", book.part(1).name
|
424
|
+
assert_equal "bar", book.part(2).name
|
427
425
|
assert !book.part(3)
|
428
426
|
|
429
427
|
tmp = []
|
@@ -508,7 +506,7 @@ EOC
|
|
508
506
|
end
|
509
507
|
|
510
508
|
mktmpbookdir 'preface.re' => '12345' do |dir, book, files|
|
511
|
-
assert_raises
|
509
|
+
assert_raises(Errno::ENOENT, Errno::EINVAL) do # XXX: OK?
|
512
510
|
book.volume
|
513
511
|
end
|
514
512
|
|
data/test/test_book_chapter.rb
CHANGED
@@ -3,21 +3,6 @@ require 'book_test_helper'
|
|
3
3
|
class ChapterTest < Test::Unit::TestCase
|
4
4
|
include BookTestHelper
|
5
5
|
|
6
|
-
def setup
|
7
|
-
|
8
|
-
if "".respond_to?(:encode)
|
9
|
-
@utf8_str = "あいうえお"
|
10
|
-
@eucjp_str = "あいうえお".encode("EUC-JP")
|
11
|
-
@sjis_str = "あいうえお".encode("Shift_JIS")
|
12
|
-
@jis_str = "あいうえお".encode("ISO-2022-JP")
|
13
|
-
else
|
14
|
-
@utf8_str = "\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a" # "あいうえお"
|
15
|
-
@eucjp_str = "\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa"
|
16
|
-
@sjis_str = "\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8"
|
17
|
-
@jis_str = "\x1b\x24\x42\x24\x22\x24\x24\x24\x26\x24\x28\x24\x2a\x1b\x28\x42"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
6
|
def test_initialize
|
22
7
|
ch = Book::Chapter.new(:book, :number, :name, '/foo/bar', :io)
|
23
8
|
assert_equal :book, ch.book
|
@@ -55,10 +40,6 @@ class ChapterTest < Test::Unit::TestCase
|
|
55
40
|
ch = Book::Chapter.new(nil, nil, nil, __FILE__, :io)
|
56
41
|
assert_equal :io, ch.open
|
57
42
|
assert_equal [:io], ch.open {|io| [io] }
|
58
|
-
|
59
|
-
ch = Book::Chapter.new(nil, nil, nil, __FILE__)
|
60
|
-
assert_equal __FILE__, ch.open.path
|
61
|
-
assert_equal [__FILE__], ch.open {|io| [io.path] }
|
62
43
|
end
|
63
44
|
|
64
45
|
def test_size
|
@@ -67,9 +48,7 @@ class ChapterTest < Test::Unit::TestCase
|
|
67
48
|
|
68
49
|
File.open(__FILE__, 'r') do |i|
|
69
50
|
ch = Book::Chapter.new(nil, nil, nil, nil, i)
|
70
|
-
|
71
|
-
ch.size
|
72
|
-
end
|
51
|
+
assert_equal File.size(__FILE__), ch.size
|
73
52
|
end
|
74
53
|
end
|
75
54
|
|
@@ -82,60 +61,6 @@ class ChapterTest < Test::Unit::TestCase
|
|
82
61
|
io = StringIO.new("=1\n=2\n")
|
83
62
|
ch = Book::Chapter.new(book, nil, nil, nil, io)
|
84
63
|
assert_equal '1', ch.title
|
85
|
-
|
86
|
-
|
87
|
-
[
|
88
|
-
['EUC', @eucjp_str],
|
89
|
-
['SJIS', @sjis_str],
|
90
|
-
# ['JIS', @jis_str],
|
91
|
-
['XYZ', @eucjp_str],
|
92
|
-
].each do |enc, instr|
|
93
|
-
io = StringIO.new("= #{instr}\n")
|
94
|
-
ch = Book::Chapter.new(book, nil, nil, nil, io)
|
95
|
-
book.config['inencoding'] = enc
|
96
|
-
assert_equal @utf8_str, ch.title
|
97
|
-
assert_equal @utf8_str, ch.instance_eval { @title }
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_content
|
102
|
-
[
|
103
|
-
['EUC', @eucjp_str],
|
104
|
-
['SJIS', @sjis_str],
|
105
|
-
['JIS', @jis_str],
|
106
|
-
['XYZ', @eucjp_str],
|
107
|
-
].each do |enc, instr|
|
108
|
-
tf = Tempfile.new('chapter_test')
|
109
|
-
book = Book::Base.new(nil)
|
110
|
-
begin
|
111
|
-
tf.print instr
|
112
|
-
tf.close
|
113
|
-
|
114
|
-
ch = Book::Chapter.new(book, nil, nil, tf.path)
|
115
|
-
book.config['inencoding'] = enc
|
116
|
-
assert_equal @utf8_str, ch.content
|
117
|
-
assert_equal @utf8_str, ch.instance_eval { @content }
|
118
|
-
ensure
|
119
|
-
tf.close(true)
|
120
|
-
end
|
121
|
-
|
122
|
-
tf1 = Tempfile.new('chapter_test1')
|
123
|
-
tf2 = Tempfile.new('chapter_test2')
|
124
|
-
begin
|
125
|
-
tf1.puts instr
|
126
|
-
tf1.puts instr
|
127
|
-
tf1.close
|
128
|
-
tf2.puts instr
|
129
|
-
tf1.close
|
130
|
-
|
131
|
-
ch = Book::Chapter.new(book, nil, nil, tf1.path, tf2)
|
132
|
-
book.config['inencoding'] = enc
|
133
|
-
assert_equal "#{@utf8_str}\n#{@utf8_str}\n", ch.content # XXX: OK?
|
134
|
-
ensure
|
135
|
-
tf1.close(true)
|
136
|
-
tf2.close(true)
|
137
|
-
end
|
138
|
-
end
|
139
64
|
end
|
140
65
|
|
141
66
|
def test_lines
|
@@ -275,8 +200,6 @@ E
|
|
275
200
|
|
276
201
|
|
277
202
|
def test_column_index
|
278
|
-
book = Book::Base.new(nil)
|
279
|
-
book.config["inencoding"] = "utf-8"
|
280
203
|
do_test_index(<<E, Book::ColumnIndex, :column_index, :column, :propagate => false)
|
281
204
|
= dummy1
|
282
205
|
===[column]{abc} aaaa
|
@@ -326,11 +249,10 @@ E
|
|
326
249
|
|
327
250
|
book = Book::Base.new(dir)
|
328
251
|
|
329
|
-
ch = nil
|
330
252
|
File.open(path, 'w') do |o|
|
331
253
|
o.print content
|
332
|
-
ch = Book::Chapter.new(book, 1, 'chapter', o.path)
|
333
254
|
end
|
255
|
+
ch = Book::Chapter.new(book, 1, 'chapter', path)
|
334
256
|
|
335
257
|
assert ch.__send__(ref_method, 'abc')
|
336
258
|
assert ch.__send__(ref_method, 'def')
|