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,186 +1,72 @@
1
- # review-epubmaker向けの設定ファイルの例。
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
- # 固有IDに使用するドメイン。省略した場合は時刻に基づくランダムUUIDが入る
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
- # 著者名。["高橋征義", "John Doe"] のように配列を使うことで複数指定可
18
- aut: 高橋征義
19
- # 出版社。配列書式で複数指定可能
20
- prt: 達人出版会
21
- # 編集者。配列書式で複数指定可能
22
- edt: 高橋征義
23
- # 刊行日。YYYY-MM-DD形式。省略した場合は本日の日付
24
- date: 2011-08-03
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
- # EPUB2標準の目次以外に物理目次ファイルを作成するか。省略した場合はnull (作成しない)
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
- # epubmaker:
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
- # Re:VIEWファイル名を使わず、前付にpre01,pre02...、本文にchap01,chap02l...、後付にpost01,post02...という名前付けルールにするか
160
- # rename_for_legacy: null
161
- # ePUBアーカイブの非圧縮実行
162
- # zip_stage1: "zip -0Xq"
163
- # ePUBアーカイブの圧縮実行
164
- # zip_stage2: "zip -Xr9Dq"
165
- # ePUBアーカイブに追加するパス(デフォルトはmimetype、META-INF、OEBPS)
166
- # zip_addpath: null
167
- #
168
- # epubmaker:階層を使うものはここまで
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%; }
@@ -1,7 +1,7 @@
1
1
  = 見出し
2
2
  以下を実行
3
3
  //emlist{
4
- ./bin/review-compile --inencoding=UTF-8 --outencoding=UTF-8 --hdnumberingmode test.re --target=html
4
+ ./bin/review-compile --hdnumberingmode test.re --target=html
5
5
  }
6
6
  == 節1
7
7
 
@@ -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.param = :test
161
- assert_equal :test, book.param # old way
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.param # old way
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 1, parts[0].number
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 1, parts[0].number
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 2, parts[1].number
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 3, parts[2].number
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
- nil, # XXX: OK?
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
- nil, # XXX: OK?
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' do |dir, book, files|
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' do |dir, book, files|
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
- assert book.part(1)
426
- assert book.part(2)
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 Errno::ENOENT do # XXX: OK?
509
+ assert_raises(Errno::ENOENT, Errno::EINVAL) do # XXX: OK?
512
510
  book.volume
513
511
  end
514
512
 
@@ -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
- assert_raises(TypeError) do # XXX: OK?
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')