review 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.travis.yml +1 -0
  4. data/ChangeLog +87 -0
  5. data/bin/review-check +2 -2
  6. data/bin/review-compile +15 -30
  7. data/bin/review-index +1 -1
  8. data/bin/review-init +12 -7
  9. data/bin/review-vol +9 -1
  10. data/doc/catalog.ja.md +53 -0
  11. data/doc/catalog.md +52 -0
  12. data/doc/format.ja.md +734 -0
  13. data/doc/format.md +746 -0
  14. data/doc/format_idg.ja.md +203 -0
  15. data/doc/{quickstart.rdoc → quickstart.ja.md} +138 -104
  16. data/doc/quickstart.md +252 -0
  17. data/doc/sample.yml +216 -48
  18. data/lib/epubmaker.rb +0 -1
  19. data/lib/epubmaker/content.rb +2 -2
  20. data/lib/epubmaker/epubcommon.rb +440 -0
  21. data/lib/epubmaker/epubv2.rb +8 -418
  22. data/lib/epubmaker/epubv3.rb +67 -61
  23. data/lib/epubmaker/producer.rb +60 -19
  24. data/lib/review/book.rb +1 -3
  25. data/lib/review/book/base.rb +18 -11
  26. data/lib/review/book/chapter.rb +5 -24
  27. data/lib/review/book/compilable.rb +5 -1
  28. data/lib/review/book/index.rb +48 -17
  29. data/lib/review/book/page_metric.rb +17 -8
  30. data/lib/review/book/part.rb +12 -2
  31. data/lib/review/book/volume.rb +3 -2
  32. data/lib/review/builder.rb +30 -10
  33. data/lib/review/compiler.rb +6 -4
  34. data/lib/review/configure.rb +3 -3
  35. data/lib/review/epubmaker.rb +56 -26
  36. data/lib/review/htmlbuilder.rb +33 -42
  37. data/lib/review/htmlutils.rb +12 -7
  38. data/lib/review/i18n.rb +77 -17
  39. data/lib/review/i18n.yml +80 -4
  40. data/lib/review/idgxmlbuilder.rb +27 -57
  41. data/lib/review/inaobuilder.rb +3 -3
  42. data/lib/review/latexbuilder.rb +90 -67
  43. data/lib/review/layout.tex.erb +54 -7
  44. data/lib/review/markdownbuilder.rb +21 -3
  45. data/lib/review/pdfmaker.rb +67 -38
  46. data/lib/review/sec_counter.rb +1 -1
  47. data/lib/review/tocparser.rb +9 -5
  48. data/lib/review/topbuilder.rb +6 -6
  49. data/lib/review/version.rb +1 -1
  50. data/review.gemspec +3 -1
  51. data/test/book_test_helper.rb +1 -1
  52. data/test/sample-book/README.md +2 -0
  53. data/test/sample-book/src/Rakefile +31 -0
  54. data/test/sample-book/src/_cover.html +0 -0
  55. data/test/sample-book/src/catalog.yml +10 -0
  56. data/test/sample-book/src/ch01.re +0 -0
  57. data/test/sample-book/src/ch02.re +0 -0
  58. data/test/sample-book/src/config.yml +160 -32
  59. data/test/sample-book/src/images/ch01-imgsample.jpg +0 -0
  60. data/test/sample-book/src/images/cover.jpg +0 -0
  61. data/test/sample-book/src/preface.re +0 -0
  62. data/test/sample-book/src/sty/jumoline.sty +0 -0
  63. data/test/sample-book/src/sty/reviewmacro.sty +18 -0
  64. data/test/sample-book/src/style.css +0 -0
  65. data/test/test_book.rb +25 -27
  66. data/test/test_book_chapter.rb +4 -73
  67. data/test/test_book_part.rb +5 -4
  68. data/test/test_builder.rb +3 -3
  69. data/test/test_epub3maker.rb +527 -0
  70. data/test/test_epubmaker.rb +6 -6
  71. data/test/test_htmlbuilder.rb +143 -6
  72. data/test/test_i18n.rb +95 -10
  73. data/test/test_idgxmlbuilder.rb +28 -2
  74. data/test/test_index.rb +109 -1
  75. data/test/test_latexbuilder.rb +51 -0
  76. data/test/test_markdownbuilder.rb +54 -1
  77. data/test/test_pdfmaker.rb +7 -6
  78. data/test/test_review_ext.rb +31 -0
  79. data/test/test_topbuilder.rb +3 -1
  80. metadata +46 -13
  81. data/doc/catalog.rdoc +0 -49
  82. data/doc/format.rdoc +0 -618
  83. data/doc/format_idg.rdoc +0 -180
  84. data/doc/libepubmaker/config.yml +0 -207
  85. data/lib/epubmaker/resource.rb +0 -82
  86. data/test/sample-book/src/CHAPS +0 -2
  87. data/test/sample-book/src/PREDEF +0 -1
@@ -1,3 +1,3 @@
1
1
  module ReVIEW
2
- VERSION = "1.4.0"
2
+ VERSION = "1.5.0"
3
3
  end
data/review.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
13
13
  gem.summary = "Re:VIEW: a easy-to-use digital publishing system"
14
14
  gem.description = "Re:VIEW is a digital publishing system for books and ebooks. It supports InDesign, EPUB and LaTeX."
15
15
  gem.required_rubygems_version = Gem::Requirement.new(">= 0") if gem.respond_to? :required_rubygems_version=
16
- gem.date = "2014-10-29"
16
+ gem.date = "2015-02-28"
17
17
 
18
18
  gem.files = `git ls-files`.split("\n")
19
19
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -25,5 +25,7 @@ Gem::Specification.new do |gem|
25
25
  gem.require_paths = ["lib"]
26
26
 
27
27
  gem.add_development_dependency("rake")
28
+ gem.add_development_dependency("test-unit")
29
+ gem.add_development_dependency("pygments.rb")
28
30
  end
29
31
 
@@ -16,7 +16,7 @@ module BookTestHelper
16
16
  File.open(path, 'w') {|o| o.print content }
17
17
  created_files[basename] = path
18
18
  end
19
- book = Book::Base.new(dir)
19
+ book = Book::Base.load(dir)
20
20
  yield(dir, book, created_files)
21
21
  end
22
22
  end
@@ -3,3 +3,5 @@
3
3
  Re:VIEW ( http://github.com/kmuto/review )で書籍データを作るためのサンプルファイルです。
4
4
 
5
5
  必要なファイルはsrc/ディレクトリ内にあります。srcディレクトリで「review-epubmaker config.yml」と実行すればEPUBが、「review-pdfmaker config.yml」とすればPDFが生成されます(PDFの生成にはpLaTeXとdvipdfmxが必要です)。
6
+
7
+ Ruby製のビルドツールであるrakeがインストールされている環境の場合、「rake pdf」を実行すればPDFが、「rake epub」を実行すればEPUBが生成されます。また、「rake html_all」を実行すればHTMLが生成されます。
@@ -1,4 +1,10 @@
1
1
  require 'fileutils'
2
+ require 'rake/clean'
3
+
4
+ BOOK = "book"
5
+ BOOK_PDF = BOOK+".pdf"
6
+ BOOK_EPUB = BOOK+".epub"
7
+ CONFIG_FILE = "config.yml"
2
8
 
3
9
  def build(mode, chapter)
4
10
  sh "review-compile --target=#{mode} --footnotetext --stylesheet=style.css #{chapter} > tmp"
@@ -11,6 +17,8 @@ def build_all(mode)
11
17
  sh "review-compile --all --target=#{mode} --footnotetext --stylesheet=style.css"
12
18
  end
13
19
 
20
+ task :default => :html_all
21
+
14
22
  desc "build html (Usage: rake build re=target.re)"
15
23
  task :html do
16
24
  if ENV['re'].nil?
@@ -24,3 +32,26 @@ desc "build all html"
24
32
  task :html_all do
25
33
  build_all("html")
26
34
  end
35
+
36
+ desc 'generate PDF and EPUB file'
37
+ task :all => [:pdf, :epub]
38
+
39
+ desc 'generate PDF file'
40
+ task :pdf => BOOK_PDF
41
+
42
+ desc 'generate EPUB file'
43
+ task :epub => BOOK_EPUB
44
+
45
+ SRC = FileList['*.re'] + [CONFIG_FILE]
46
+
47
+ file BOOK_PDF => SRC do
48
+ FileUtils.rm_rf [BOOK_PDF, BOOK, BOOK+"-pdf"]
49
+ sh "review-pdfmaker #{CONFIG_FILE}"
50
+ end
51
+
52
+ file BOOK_EPUB => SRC do
53
+ FileUtils.rm_rf [BOOK_EPUB, BOOK, BOOK+"-epub"]
54
+ sh "review-epubmaker #{CONFIG_FILE}"
55
+ end
56
+
57
+ CLEAN.include([BOOK, BOOK_PDF, BOOK_EPUB, BOOK+"-pdf", BOOK+"-epub"])
File without changes
@@ -0,0 +1,10 @@
1
+ PREDEF:
2
+ - preface.re
3
+
4
+ CHAPS:
5
+ - ch01.re
6
+ - ch02.re
7
+
8
+ APPENDIX:
9
+
10
+ POSTDEF:
File without changes
File without changes
@@ -6,50 +6,178 @@
6
6
 
7
7
  # ブック名(ファイル名になるもの。ASCII範囲の文字を使用)
8
8
  bookname: book
9
+ # 記述言語。省略した場合はja
10
+ language: ja
9
11
  # 書名
10
12
  booktitle: Re:VIEWサンプル書籍
11
- # 著者
13
+ # 固有IDに使用するドメイン。省略した場合は時刻に基づくランダムUUIDが入る
14
+ urnid: urn:uid:http://tatsu-zine.com/books/review-sample-book/1.0.0/
15
+ # ISBN。省略した場合はurnidが入る
16
+ # isbn: null
17
+ # 著者名。["高橋征義", "John Doe"] のように配列を使うことで複数指定可
12
18
  aut: 高橋征義
19
+ # 出版社。配列書式で複数指定可能
13
20
  prt: 達人出版会
14
- prt_url: http://github.com/takahashim/review-sample-book/
21
+ # 編集者。配列書式で複数指定可能
15
22
  edt: 高橋征義
23
+ # 刊行日。YYYY-MM-DD形式。省略した場合は本日の日付
16
24
  date: 2011-08-03
17
- rights: |
18
- (C) 2011 Masayoshi Takahashi
19
- description:
20
- # 以下はオプション
21
- # prt: 出版社
22
- # asn: Associated name
23
- # ant: Bibliographic antecedent
24
- # clb: 貢献者
25
- # edt: 編集者
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: 解釈・分析・考察者
26
46
  # dsr: デザイナ
47
+ # edt: 編集者
27
48
  # ill: イラストレータ
28
- # pht: 撮影者
49
+ # lyr: 歌詞作成者
50
+ # mdc: メタデータセットの一次的責任者
51
+ # mus: 音楽家
52
+ # nrt: 語り手
53
+ # oth: その他
54
+ # pht: 撮影責任者
55
+ # red: 項目の枠組起草者
56
+ # rev: 評論者
57
+ # spn: 援助者
58
+ # ths: 監督者
59
+ # trc: 筆記・タイプ作業者
29
60
  # trl: 翻訳者
30
- # date: 刊行日
31
- # rights: 権利表記
32
61
  # description: ブックの説明
33
- #
34
- # coverfile: カバーページのbody要素内に挿入する内容を記述したファイル名
35
- coverfile: _cover.html
36
- # coverimage: 表紙用画像ファイル
37
- coverimage: cover.jpg
38
- # 固有IDに使用するドメイン
39
- urnid: http://tatsu-zine.com/books/review-sample-book/1.0.0/
40
- # CSSファイル (yamlファイルおよびRe:VIEWファイルを置いたディレクトリにあること
41
- stylesheet: style.css
42
- # 目次として抽出するレベル
62
+ # subject: 短い説明用タグ
63
+ # type: 書籍のカテゴリーなど
64
+ # format: メディアタイプおよび特徴
65
+ # source: 出版物生成の重要なリソース情報
66
+ # relation: 補助的リソース
67
+ # coverage: 内容の範囲や領域
68
+
69
+ # htmlext: HTMLファイルの拡張子(省略した場合はhtml)
70
+ # CSSファイル(配列で複数指定可、yamlファイルおよびRe:VIEWファイルを置いたディレクトリにあること)
71
+ stylesheet: ["style.css"]
72
+
73
+ # ePUBのバージョン (2か3) 省略した場合は2
74
+ epubversion: 3
75
+ # HTMLのバージョン (4か5。epubversionを3にしたときには5にする)
76
+ # htmlversion: 5
77
+
78
+ # 目次として抽出する見出しレベル。省略した場合は2
43
79
  toclevel: 2
44
- # セクション番号を表示するレベル
80
+ # 本文でセクション番号を表示する見出しレベル。省略した場合は2
81
+ # 採番させたくない見出しには「==[nonum]」のようにnonum指定をする
45
82
  secnolevel: 3
46
- # review-compileに渡すパラメータ
47
- params: --stylesheet=style.css
48
- # 目次生成用?
49
- mytoc: true
50
- # 奥付生成用
83
+ # EPUB2標準の目次以外に物理目次ファイルを作成するか。省略した場合はnull (作成しない)
84
+ # ePUB3においてはこの設定によらず必ず作成される
85
+ # mytoc: true
86
+
87
+ # 付録の連番のスタイル。null(アラビア数字1〜。デフォルト)、alpha(英字A〜)、roman(ローマ数字I〜)
88
+ # appendix_format: null
89
+
90
+ # 表紙にするHTMLファイル。ファイル名を指定すると表紙として入る
91
+ # cover: _cover.html
92
+ # 表紙に配置し、書籍の影絵にも利用する画像ファイル。省略した場合はnull (画像を使わない)
93
+ coverimage: cover.jpg
94
+ # 表紙の後に大扉ページを作成するか。省略した場合はnull (作成しない)
95
+ # titlepage: null
96
+ # 自動生成される大扉ページを上書きするファイル。ファイル名を指定すると大扉として入る
97
+ # titlefile: null
98
+ # 原書大扉ページにするHTMLファイル。ファイル名を指定すると原書大扉として入る
99
+ # originaltitlefile: null
100
+ # 権利表記ページファイル。ファイル名を指定すると権利表記として入る
101
+ # creditfile: null
102
+ # プロフィールページファイル。ファイル名を指定すると著者紹介として入る
103
+ # profile: null
104
+ # プロフィールページの目次上の見出し
105
+ # profiletitle: 著者紹介
106
+ # 広告ファイル。ファイル名を指定すると広告として入る
107
+ # advfile: null
108
+ # 奥付を作成するか。デフォルトでは作成されない。trueを指定するとデフォルトの奥付、ファイル名を指定するとそれがcolophon.htmlとしてコピーされる
51
109
  colophon: true
110
+ # 裏表紙ファイル (画像はcoversまたはimagesに配置する)。ファイル名を指定すると裏表紙として入る
111
+ # backcover: null
112
+
113
+ # 以下のパラメータを有効にするときには、
114
+ # epubmaker:
115
+ # パラメータ: 値
116
+ # パラメータ: 値
117
+ # ...
118
+ # という構成にする必要がある(インデントさせる)
119
+
120
+ # epubmaker:
121
+ # 目次を要素の階層表現にしない。省略した場合(null)は階層化する。
122
+ # 特に部扉が入るなどの理由で、構成によっては階層化目次でepubcheckに
123
+ # パスしない目次ができるが、そのようなときにはこれをtrueにする
124
+ # flattoc: null
125
+ # 目次のインデントレベルをスペース文字で表現する(flattocがtrueのときのみ)
126
+ # flattocindent: true
127
+ # NCX目次の見出しレベルごとの飾り(配列で設定)。EPUB3ではNCXは作られない
128
+ # ncxindent:
129
+ #-
130
+ #- -
131
+ # フックは、各段階で介入したいときのプログラムを指定する。自動で適切な引数が渡される
132
+ # プログラムには実行権限が必要
133
+ # ファイル変換処理の前に実行するプログラム。スタイルシートのコンパイルをしたいときなどに利用する。
134
+ # 渡される引数1=作業用展開ディレクトリ
135
+ # hook_beforeprocess: null
136
+ # 前付の作成後に実行するプログラム。作業用展開ディレクトリにある目次ファイル(toc-html.txt)を操作したいときなどに利用する。
137
+ # 渡される引数1=作業用展開ディレクトリ
138
+ # hook_afterfrontmatter: null
139
+ # 本文の変換後に実行するプログラム。作業用展開ディレクトリにある目次ファイル(toc-html.txt)を操作したいときなどに利用する。
140
+ # 渡される引数1=作業用展開ディレクトリ
141
+ # hook_afterbody: null
142
+ # 後付の作成後に実行するプログラム。作業用展開ディレクトリにある目次ファイル(toc-html.txt)を操作したいときなどに利用する。
143
+ # 渡される引数1=作業用展開ディレクトリ
144
+ # hook_afterbackmatter: null
145
+ # 画像およびフォントをコピーした後に実行するプログラム。別の画像やフォントを追加したいときなどに利用する。
146
+ # 渡される引数1=作業用展開ディレクトリ
147
+ # hook_aftercopyimage: null
148
+ # ePUB zipアーカイブ直前に実行するプログラム。メタ情報などを加工したいときなどに利用する。
149
+ # 渡される引数1=ePUB準備ディレクトリ
150
+ # hook_prepack: null
151
+ # 変換したHTMLファイルおよびCSSを解析して厳密に使用している画像ファイルだけを取り込むか。デフォルトはnull(imagesディレクトリすべてを取り込む)
152
+ # なお、フォント、カバー、広告についてはこの設定によらずディレクトリ内のものがすべて取り込まれる
153
+ # verify_target_images: null
154
+ # verify_target_imagesがtrueの状態において、解析で発見されなくても強制的に取り込むファイルの相対パスの配列
155
+ # force_include_images: []
156
+ # Re:VIEWファイル名を使わず、前付にpre01,pre02...、本文にchap01,chap02l...、後付にpost01,post02...という名前付けルールにするか
157
+ # rename_for_legacy: null
158
+ # ePUBアーカイブの非圧縮実行
159
+ # zip_stage1: "zip -0Xq"
160
+ # ePUBアーカイブの圧縮実行
161
+ # zip_stage2: "zip -Xr9Dq"
162
+ # ePUBアーカイブに追加するパス(デフォルトはmimetype、META-INF、OEBPS)
163
+ # zip_addpath: null
164
+ #
165
+ # epubmaker:階層を使うものはここまで
166
+
167
+ # ハイライトを有効にするか。pygments.gemが必要
168
+ # pygments: null
169
+
170
+ # 取り込む画像が格納されているディレクトリ。省略した場合は以下
171
+ # imagedir: images
172
+
173
+ # 取り込むフォントが格納されているディレクトリ。省略した場合は以下
174
+ # fontdir: fonts
175
+
176
+ # imagedir内から取り込まれる対象となるファイル拡張子。省略した場合は以下
177
+ # image_ext: ["png", "gif", "jpg", "jpeg", "svg", "ttf", "woff", "otf"]
178
+
179
+ # fontdir内から取り込まれる対象となるファイル拡張子。省略した場合は以下
180
+ # font_ext: ["ttf", "woff", "otf"]
181
+
52
182
  texstyle: reviewmacro
53
- pubhistory: |
54
- 2011年08月03日 v1.0.0版発行
55
183
  debug: true
File without changes
File without changes
File without changes
File without changes
@@ -18,4 +18,22 @@
18
18
  %% using Helvetica as sans-serif
19
19
  \renewcommand{\sfdefault}{phv}
20
20
 
21
+ %% for listings
22
+ %\renewcommand{\lstlistingname}{List}
23
+ %\lstset{%
24
+ % breaklines=true,%
25
+ % breakautoindent=false,%
26
+ % breakindent=0pt,%
27
+ % fontadjust=true,%
28
+ % backgroundcolor=\color{shadecolor},%
29
+ % frame=single,%
30
+ % framerule=0pt,%
31
+ % basicstyle=\ttfamily\scriptsize,%
32
+ % commentstyle=\color{reviewgreen},%
33
+ % identifierstyle=\color{reviewblue},%
34
+ % stringstyle=\color{reviewred},%
35
+ % keywordstyle=\bfseries\color{reviewdarkred},%
36
+ %}
37
+
38
+
21
39
  \sloppy
File without changes
data/test/test_book.rb CHANGED
@@ -11,29 +11,6 @@ class BookTest < Test::Unit::TestCase
11
11
  assert_equal ex_path, re_path, *options
12
12
  end
13
13
 
14
- def test_s_load_default
15
- Dir.mktmpdir do |dir|
16
- File.open(File.join(dir, 'CHAPS'), 'w') {}
17
- Dir.chdir(dir) do
18
- assert_same_path dir, File.expand_path(Book.load_default.basedir), "error in dir CHAPS"
19
- end
20
- end
21
-
22
- # tests for ReVIEW.book
23
- default_book = nil
24
- Dir.mktmpdir do |dir|
25
- Dir.chdir(dir) do
26
- default_book = ReVIEW.book
27
- assert default_book
28
- end
29
- end
30
- Dir.mktmpdir do |dir|
31
- Dir.chdir(dir) do
32
- assert_equal default_book, ReVIEW.book, "chdir mktmpdir"
33
- end
34
- end
35
- end
36
-
37
14
  def test_s_update_rubyenv
38
15
  save_load_path = $LOAD_PATH.dup
39
16
 
@@ -318,10 +295,6 @@ EOC
318
295
  assert_equal nil, book.prefaces # XXX: OK?
319
296
  end
320
297
 
321
- mktmpbookdir 'PREDEF' => '' do |dir, book, files|
322
- assert_equal nil, book.prefaces
323
- end
324
-
325
298
  mktmpbookdir 'PREDEF' => 'chapter1',
326
299
  'chapter1.re' => '' do |dir, book, files|
327
300
  assert_kind_of Book::Part, book.prefaces
@@ -555,4 +528,29 @@ EOC
555
528
  assert_equal dir, book.basedir
556
529
  end
557
530
  end
531
+
532
+ def test_page_metric
533
+ Dir.mktmpdir do |dir|
534
+ book = Book::Base.new(dir)
535
+ assert_equal ReVIEW::Book::PageMetric::A5, book.page_metric
536
+ end
537
+ end
538
+
539
+ def test_page_metric_config
540
+ mktmpbookdir('config.yml'=>"bookname: book\npage_metric: B5\n") do |dir, book, files|
541
+ book = Book::Base.new(dir)
542
+ config_file = File.join(dir,"config.yml")
543
+ book.load_config(config_file)
544
+ assert_equal ReVIEW::Book::PageMetric::B5, book.page_metric
545
+ end
546
+ end
547
+
548
+ def test_page_metric_config_array
549
+ mktmpbookdir('config.yml'=>"bookname: book\npage_metric: [46, 80, 30, 74, 2]\n") do |dir, book, files|
550
+ book = Book::Base.new(dir)
551
+ config_file = File.join(dir,"config.yml")
552
+ book.load_config(config_file)
553
+ assert_equal ReVIEW::Book::PageMetric::B5, book.page_metric
554
+ end
555
+ end
558
556
  end
@@ -24,79 +24,8 @@ class ChapterTest < Test::Unit::TestCase
24
24
  =end
25
25
  end
26
26
 
27
- def test_s_intern_pathes
28
- dir1_files = {
29
- 'CHAPS' => "ch1.re\nch2.re\n",
30
- 'ch1.re' => 'ch1',
31
- 'ch2.re' => 'ch2',
32
- }
33
- dir2_files = {
34
- 'CHAPS' => "ch1.re\n",
35
- 'ch1.re' => 'ch1',
36
- }
37
- mktmpbookdir dir1_files do |dir1, book1, files1|
38
- mktmpbookdir dir2_files do |dir2, book2, files2|
39
- paths = (files1.values + files2.values).flatten.grep(/\.re\z/)
40
- chs = Book::Chapter.intern_pathes(paths)
41
-
42
- assert_equal 3, chs.size
43
- assert chs[0].book == chs[1].book
44
- assert chs[0].book != chs[2].book
45
- assert dir1, chs[0].book.basedir
46
- assert dir2, chs[2].book.basedir
47
- end
48
- end
49
-
50
- dir_files = {
51
- 'CHAPS' => "ch1.re\n",
52
- 'ch1.re' => 'ch1',
53
- }
54
- mktmpbookdir dir_files do |dir, book, files|
55
- paths = files.values.grep(/\.re\z/)
56
- paths << __FILE__ + ' not exist file.re'
57
- assert_raises ReVIEW::FileNotFound do
58
- Book::Chapter.intern_pathes(paths)
59
- end
60
- end
61
-
62
- dir_files = {
63
- 'ch1.re' => 'ch1 not in CHAPS',
64
- 'ch2.re' => 'ch2 not in CHAPS',
65
- }
66
- mktmpbookdir dir_files do |dir, book, files|
67
- paths = files.values.grep(/\.re\z/)
68
- assert_nothing_raised do
69
- Book::Chapter.intern_pathes(paths)
70
- end
71
- end
72
-
73
- dir_files = {
74
- 'CHAPS' => "ch1.re\n",
75
- 'ch1.re' => 'ch1',
76
- 'ch2.re' => 'ch2 not in CHAPS',
77
- }
78
- mktmpbookdir dir_files do |dir, book, files|
79
- paths = files.values.grep(/\.re\z/)
80
- assert_raises KeyError::FileNotFound do
81
- Book::Chapter.intern_pathes(paths)
82
- end
83
- end
84
-
85
- dir_files = {
86
- 'CHAPS' => "ch1.re\n",
87
- 'ch1.re' => 'ch1'
88
- }
89
- mktmpbookdir dir_files do |dir, book, files|
90
- paths = files.values.grep(/\.re\z/)
91
- assert_nothing_raised do
92
- Book::Chapter.intern_pathes(paths)
93
- end
94
- end
95
- end
96
-
97
27
  def test_initialize
98
28
  ch = Book::Chapter.new(:book, :number, :name, '/foo/bar', :io)
99
- assert_equal :book, ch.env
100
29
  assert_equal :book, ch.book
101
30
  assert_equal :number, ch.number
102
31
  assert_equal '/foo/bar', ch.path
@@ -248,11 +177,13 @@ class ChapterTest < Test::Unit::TestCase
248
177
  tf2.print content
249
178
  tf2.close
250
179
 
251
- ch = Book::Chapter.new(nil, nil, nil, tf1.path)
180
+ book = Book::Base.new(nil)
181
+ ch = Book::Chapter.new(book, nil, nil, tf1.path)
252
182
  assert ch.volume
253
183
  assert_equal content.gsub(/\s/, '').size, ch.volume.bytes
254
184
 
255
- ch = Book::Chapter.new(nil, nil, nil, tf1.path, tf2)
185
+ book = Book::Base.new(nil)
186
+ ch = Book::Chapter.new(book, nil, nil, tf1.path, tf2)
256
187
  assert ch.volume
257
188
  assert_equal content.gsub(/\s/, '').size, ch.volume.bytes # XXX: OK?
258
189
  end