review 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.travis.yml +1 -0
- data/ChangeLog +87 -0
- data/bin/review-check +2 -2
- data/bin/review-compile +15 -30
- data/bin/review-index +1 -1
- data/bin/review-init +12 -7
- data/bin/review-vol +9 -1
- 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.rdoc → quickstart.ja.md} +138 -104
- data/doc/quickstart.md +252 -0
- data/doc/sample.yml +216 -48
- data/lib/epubmaker.rb +0 -1
- data/lib/epubmaker/content.rb +2 -2
- data/lib/epubmaker/epubcommon.rb +440 -0
- data/lib/epubmaker/epubv2.rb +8 -418
- data/lib/epubmaker/epubv3.rb +67 -61
- data/lib/epubmaker/producer.rb +60 -19
- data/lib/review/book.rb +1 -3
- data/lib/review/book/base.rb +18 -11
- data/lib/review/book/chapter.rb +5 -24
- data/lib/review/book/compilable.rb +5 -1
- data/lib/review/book/index.rb +48 -17
- data/lib/review/book/page_metric.rb +17 -8
- data/lib/review/book/part.rb +12 -2
- data/lib/review/book/volume.rb +3 -2
- data/lib/review/builder.rb +30 -10
- data/lib/review/compiler.rb +6 -4
- data/lib/review/configure.rb +3 -3
- data/lib/review/epubmaker.rb +56 -26
- data/lib/review/htmlbuilder.rb +33 -42
- data/lib/review/htmlutils.rb +12 -7
- data/lib/review/i18n.rb +77 -17
- data/lib/review/i18n.yml +80 -4
- data/lib/review/idgxmlbuilder.rb +27 -57
- data/lib/review/inaobuilder.rb +3 -3
- data/lib/review/latexbuilder.rb +90 -67
- data/lib/review/layout.tex.erb +54 -7
- data/lib/review/markdownbuilder.rb +21 -3
- data/lib/review/pdfmaker.rb +67 -38
- data/lib/review/sec_counter.rb +1 -1
- data/lib/review/tocparser.rb +9 -5
- data/lib/review/topbuilder.rb +6 -6
- data/lib/review/version.rb +1 -1
- data/review.gemspec +3 -1
- data/test/book_test_helper.rb +1 -1
- data/test/sample-book/README.md +2 -0
- data/test/sample-book/src/Rakefile +31 -0
- data/test/sample-book/src/_cover.html +0 -0
- data/test/sample-book/src/catalog.yml +10 -0
- data/test/sample-book/src/ch01.re +0 -0
- data/test/sample-book/src/ch02.re +0 -0
- data/test/sample-book/src/config.yml +160 -32
- 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 +0 -0
- data/test/sample-book/src/sty/jumoline.sty +0 -0
- data/test/sample-book/src/sty/reviewmacro.sty +18 -0
- data/test/sample-book/src/style.css +0 -0
- data/test/test_book.rb +25 -27
- data/test/test_book_chapter.rb +4 -73
- data/test/test_book_part.rb +5 -4
- data/test/test_builder.rb +3 -3
- data/test/test_epub3maker.rb +527 -0
- data/test/test_epubmaker.rb +6 -6
- data/test/test_htmlbuilder.rb +143 -6
- data/test/test_i18n.rb +95 -10
- data/test/test_idgxmlbuilder.rb +28 -2
- data/test/test_index.rb +109 -1
- data/test/test_latexbuilder.rb +51 -0
- data/test/test_markdownbuilder.rb +54 -1
- data/test/test_pdfmaker.rb +7 -6
- data/test/test_review_ext.rb +31 -0
- data/test/test_topbuilder.rb +3 -1
- metadata +46 -13
- data/doc/catalog.rdoc +0 -49
- data/doc/format.rdoc +0 -618
- data/doc/format_idg.rdoc +0 -180
- data/doc/libepubmaker/config.yml +0 -207
- data/lib/epubmaker/resource.rb +0 -82
- data/test/sample-book/src/CHAPS +0 -2
- data/test/sample-book/src/PREDEF +0 -1
data/lib/review/version.rb
CHANGED
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 = "
|
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
|
|
data/test/book_test_helper.rb
CHANGED
data/test/sample-book/README.md
CHANGED
@@ -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
|
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
|
-
|
21
|
+
# 編集者。配列書式で複数指定可能
|
15
22
|
edt: 高橋征義
|
23
|
+
# 刊行日。YYYY-MM-DD形式。省略した場合は本日の日付
|
16
24
|
date: 2011-08-03
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
#
|
21
|
-
|
22
|
-
#
|
23
|
-
|
24
|
-
|
25
|
-
#
|
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
|
-
#
|
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
|
-
#
|
35
|
-
|
36
|
-
#
|
37
|
-
|
38
|
-
#
|
39
|
-
|
40
|
-
#
|
41
|
-
|
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
|
-
#
|
47
|
-
|
48
|
-
#
|
49
|
-
|
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
|
data/test/test_book_chapter.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|