review 0.6.0 → 0.9.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.
- data/ChangeLog +441 -0
- data/README.rdoc +25 -0
- data/Rakefile +13 -1
- data/VERSION +1 -1
- data/bin/review-check +1 -1
- data/bin/review-compile +19 -10
- data/bin/review-epubmaker +114 -17
- data/bin/review-index +8 -1
- data/bin/review-pdfmaker +378 -0
- data/bin/review-preproc +2 -3
- data/bin/review-vol +1 -2
- 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 +60 -0
- data/debian/docs +5 -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/format.rdoc +477 -0
- data/doc/format.re +19 -0
- data/doc/format_idg.rdoc +180 -0
- data/doc/ruby-uuid/README +11 -0
- data/doc/ruby-uuid/README.ja +34 -0
- data/doc/sample.css +17 -0
- data/doc/sample.yaml +8 -4
- data/lib/lineinput.rb +1 -1
- data/lib/review/book.rb +43 -36
- data/lib/review/builder.rb +78 -33
- data/lib/review/compiler.rb +45 -48
- data/lib/review/epubbuilder.rb +1 -675
- data/lib/review/exception.rb +1 -1
- data/lib/review/htmlbuilder.rb +627 -49
- data/lib/review/htmlutils.rb +5 -0
- data/lib/review/idgxmlbuilder.rb +239 -250
- data/lib/review/index.rb +84 -7
- data/lib/review/latexbuilder.rb +261 -42
- data/lib/review/latexutils.rb +15 -6
- data/lib/review/preprocessor.rb +40 -6
- data/lib/review/textutils.rb +22 -0
- data/lib/review/topbuilder.rb +4 -1
- data/lib/uuid.rb +312 -0
- data/review.gemspec +44 -12
- data/test/CHAPS +2 -0
- data/test/bib.re +13 -0
- data/test/test.re +43 -0
- data/test/test_book.rb +1191 -0
- data/test/test_builder.rb +147 -0
- data/test/test_htmlbuilder.rb +191 -10
- data/test/test_htmlutils.rb +24 -0
- data/test/test_idgxmlbuilder.rb +310 -0
- data/test/test_index.rb +15 -0
- data/test/test_latexbuilder.rb +217 -6
- data/test/test_lineinput.rb +198 -0
- data/test/test_textutils.rb +68 -0
- data/test/test_uuid.rb +156 -0
- metadata +43 -10
- data/doc/format.txt +0 -434
- data/doc/format_idg.txt +0 -194
- data/doc/format_sjis.txt +0 -313
- data/setup.rb +0 -1587
- data/test/test_epubbuilder.rb +0 -73
data/doc/format.re
CHANGED
@@ -317,6 +317,7 @@ RD や各種 Wiki の文法をとりいれて簡素化しています。
|
|
317
317
|
|
318
318
|
リード文は //read{ 〜 //} で指定します。lead でなく read
|
319
319
|
なのは、ASCII の EWB が「read」を使っていたからです。
|
320
|
+
//lead{ 〜 //} でも使えます。
|
320
321
|
|
321
322
|
=== [例]
|
322
323
|
|
@@ -327,6 +328,18 @@ RD や各種 Wiki の文法をとりいれて簡素化しています。
|
|
327
328
|
//}
|
328
329
|
//}
|
329
330
|
|
331
|
+
== TeX式
|
332
|
+
|
333
|
+
LaTeX の式を挿入するには、//texequation{ 〜 //} を使います。
|
334
|
+
|
335
|
+
=== [例]
|
336
|
+
|
337
|
+
//emlist{
|
338
|
+
//texequation{
|
339
|
+
\sum_{i=1}^nf_n(x)
|
340
|
+
//}
|
341
|
+
//}
|
342
|
+
|
330
343
|
== 空白制御
|
331
344
|
|
332
345
|
: //noindent
|
@@ -398,6 +411,12 @@ ReVIEW は任意のブロックを追加可能なので、本によって専用
|
|
398
411
|
: @<raw>{@<b>{どうしても\}}
|
399
412
|
太字。
|
400
413
|
|
414
|
+
: @<raw>{@<br>{\}}
|
415
|
+
段落中改行。
|
416
|
+
|
417
|
+
: @<raw>{@<m>{a + \alpha\}}
|
418
|
+
TeXインライン式。
|
419
|
+
|
401
420
|
== 著者用タグ (プリプロセッサ命令)
|
402
421
|
|
403
422
|
これまでに説明したタグはすべて最終段階まで残り、見ために
|
data/doc/format_idg.rdoc
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
= ReVIEW フォーマット InDesign XML 形式拡張
|
2
|
+
|
3
|
+
ReVIEW フォーマットから、Adobe 社の DTP ソフトウェア「InDesign」
|
4
|
+
で読み込んで利用しやすい XML 形式に変換できます (通常の XML とほぼ同じ
|
5
|
+
ですが、文書構造ではなく見た目を指向した形態になっています)。
|
6
|
+
現時点では idgxmlbuilder.rb と topbuilder.rb のみが拡張に対応しています。
|
7
|
+
実際には出力された XML を InDesign のスタイルに割り当てるフィルタをさらに
|
8
|
+
作成・適用する必要があります。
|
9
|
+
|
10
|
+
== 章・節・項・段
|
11
|
+
|
12
|
+
従来の[column]のほかに、オプションを追加しています。
|
13
|
+
|
14
|
+
* [nonum] : これを指定している章・節・項・段には連番を振りません。
|
15
|
+
* [circle]: 「・」を先頭に付けた小さな見出し(連番なし)を作成します。
|
16
|
+
* [world]: Real Worldコラム。
|
17
|
+
* [hood]: Under the Hoodコラム。
|
18
|
+
* [edition]: Editionコラム。
|
19
|
+
* [insideout]: インサイドアウトコラム。
|
20
|
+
|
21
|
+
== 書式ブロック
|
22
|
+
//insn[タイトル]{ 〜 //} または //box[タイトル]{ 〜 //} で書式を指定し
|
23
|
+
ます。
|
24
|
+
|
25
|
+
== ノート
|
26
|
+
//note{ 〜 //} または //note[タイトル]{ 〜 //} で注意文章を指定します。
|
27
|
+
|
28
|
+
== メモ
|
29
|
+
//memo{ 〜 //} または //memo[タイトル]{ 〜 //} でメモ文章を指定します。
|
30
|
+
|
31
|
+
== ヒント
|
32
|
+
//tip{ 〜 //} または //tip[タイトル]{ 〜 //} でヒント(Tip)文章を指定します。
|
33
|
+
|
34
|
+
== 参照ブロック
|
35
|
+
//info{ 〜 //} または //info[タイトル]{ 〜 //} で参照文章を指定します。
|
36
|
+
|
37
|
+
== プランニング
|
38
|
+
//planning{ 〜 //} または //planning[タイトル]{ 〜 //} でプランニング文章を
|
39
|
+
指定します。
|
40
|
+
|
41
|
+
== ベストプラクティス
|
42
|
+
//best{ 〜 //} または //best[タイトル]{ 〜 //} でベストプラクティス文章を
|
43
|
+
指定します。
|
44
|
+
|
45
|
+
== ここが重要 (キーワード)
|
46
|
+
//important[タイトル]{ 〜 //} で重要項目を指定します。
|
47
|
+
|
48
|
+
== セキュリティ
|
49
|
+
//security{ 〜 //} または //security[タイトル]{ 〜 //} でセキュリティ文章を
|
50
|
+
指定します。
|
51
|
+
|
52
|
+
== 警告
|
53
|
+
//caution{ 〜 //} または //caution[タイトル]{ 〜 //} で警告文章を指定します。
|
54
|
+
|
55
|
+
== エキスパートに訊く
|
56
|
+
//expert{ 〜 //} で「エキスパートに訊く」を指定します (rawで<expert>〜
|
57
|
+
</expert>を使うほうがよいかもしれません)。
|
58
|
+
QとAは@<b>{Q}:〜 と @<b>{A}:〜 で示します。
|
59
|
+
|
60
|
+
== 注意
|
61
|
+
//notice{ 〜 //} または //notice[タイトル]{ 〜 //} で注意を指定します。
|
62
|
+
|
63
|
+
== ワンポイント
|
64
|
+
//point{ 〜 //} または //point[タイトル]{ 〜 //} でワンポイントを指定します。
|
65
|
+
|
66
|
+
== トラブルシューティング
|
67
|
+
//shoot{ 〜 //} または //shoot[タイトル]{ 〜 //} でトラブルシューティングを
|
68
|
+
指定します。
|
69
|
+
|
70
|
+
== 用語解説
|
71
|
+
//term{ 〜 //} で用語解説を指定します(ただし、ブロック指定ができないので
|
72
|
+
実質的にはrawで<term>〜</term>を通常使うことになるでしょう)。
|
73
|
+
|
74
|
+
== リンク
|
75
|
+
//link{ 〜 //} または //link[タイトル]{ 〜 //} で他の章やファイルなどへの
|
76
|
+
参照内容を指定します。
|
77
|
+
|
78
|
+
== 練習問題
|
79
|
+
//practice{ 〜 //} で練習問題を指定します。
|
80
|
+
|
81
|
+
== 参考
|
82
|
+
//reference{ 〜 //} で参考情報を指定します。
|
83
|
+
|
84
|
+
== 相互参照
|
85
|
+
//label[〜]でラベルを定義し、@<labelref>{〜}で参照します。
|
86
|
+
XMLとしては<label id='〜' />と<labelref idref='〜' />というタグに
|
87
|
+
置き換えられます。
|
88
|
+
実際にどのような相互参照関係にするかは、処理系に依存します。
|
89
|
+
想定の用途では、章や節の番号およびタイトルを記憶し、labelrefの出現箇所
|
90
|
+
に"「節(あるいは章)番号 タイトル」"という文字列を配置します。
|
91
|
+
|
92
|
+
@<chapref>の展開形式を、--chapref="前装飾文字列,中間装飾文字列,後装飾文字列"
|
93
|
+
でコンパイル実行時に指定できます。デフォルトは",「,」"です。たとえば
|
94
|
+
"第2章「コンパイラ」" のように普通は展開されます。
|
95
|
+
"「, ,」"と指定すると、"「第2章 コンパイラ」" に展開されます。
|
96
|
+
|
97
|
+
== 丸数字
|
98
|
+
@<maru>{数値} で丸数字を出力します。
|
99
|
+
|
100
|
+
== キートップ
|
101
|
+
@<keytop>{キー文字} でキーボードマークを出力します。
|
102
|
+
|
103
|
+
== 吹き出し
|
104
|
+
@<balloon>{〜} でコード内などでの吹き出しを作成します。吹き出しは右に寄せ
|
105
|
+
られ、記入した箇所から吹き出しまで線が引かれます。
|
106
|
+
@<>オペレータは入れ子ができないため、丸数字を使いたいときには@maru[数値]
|
107
|
+
という特別な書式を代わりに使います。
|
108
|
+
|
109
|
+
== ロー指定
|
110
|
+
現時点で ReVIEW はブロックの入れ子処理ができないため、ロー指定で XML
|
111
|
+
エレメントを指定しなければならないこともあります。
|
112
|
+
|
113
|
+
インラインの@<raw>{ 〜 }の他に、単一行の//raw[〜]、ブロック版の //rawblock{ 〜 //} でも、フォーマット処理をせずにそのままの文字列が出力できます。
|
114
|
+
|
115
|
+
== キャプションなし表
|
116
|
+
//table{ 〜 //} のように id もキャプションも付けないブロックを利用できます。
|
117
|
+
この場合、その表の連番付けを飛ばします。
|
118
|
+
|
119
|
+
== 表セル幅の指定
|
120
|
+
//tsize[1列目の幅,2列目の幅,...] で、続く //table の表の列幅を指定します
|
121
|
+
(単位mm)。これを利用するときには、review2idgxml を実行する際、オプション
|
122
|
+
--table=表幅 を付ける必要があります (表幅の単位は mm)。列幅指定の個数が
|
123
|
+
実際の列数に満たない場合、残りの列は均等分割したものとなります。列幅の
|
124
|
+
合計が表幅を超えるとエラーになります。
|
125
|
+
|
126
|
+
== DTP 命令指定
|
127
|
+
@<dtp>{ 〜 } で InDesign 向けに「<? dtp 〜 ?>」型の XML インストラクション
|
128
|
+
を埋め込みます。処理系に渡す任意の文字列を指定できますが、次のような文字列
|
129
|
+
を特殊文字指定できます。
|
130
|
+
|
131
|
+
* maru 番号リストの各段落先頭で使い、このリスト段落の番号は丸数字であることを示す
|
132
|
+
* return 改行記号文字
|
133
|
+
|
134
|
+
* autopagenumber 現ページ番号
|
135
|
+
* nextpageunmber 次ページ番号
|
136
|
+
* previouspagenumber 前ページ番号
|
137
|
+
* sectionmarker セクションマーカー
|
138
|
+
* bulletcharacter ビュレット (ナカグロ)
|
139
|
+
* copyrightsymbol 著作権記号
|
140
|
+
* degreesymbol 度記号
|
141
|
+
* ellipsischaracter 省略記号
|
142
|
+
* forcedlinebreak 強制改行
|
143
|
+
* discretionarylinebreak 任意の改行
|
144
|
+
* paragraphsymbol 段落記号
|
145
|
+
* registeredtrademark 登録商標記号
|
146
|
+
* sectionsymbol セクション記号
|
147
|
+
* trademarksymbol 商標記号
|
148
|
+
* rightindenttab 右インデントタブ
|
149
|
+
* indentheretab 「ここまでインデント」タブ
|
150
|
+
* zerowidthnonjoiner 結合なし
|
151
|
+
* emdash EMダッシュ
|
152
|
+
* endash ENダッシュ
|
153
|
+
* discretionaryhyphen 任意ハイフン
|
154
|
+
* nonbreakinghyphen 分散禁止ハイフン
|
155
|
+
* endnestedstyle 先頭文字スタイルの終了文字
|
156
|
+
* doubleleftquote 左二重引用符
|
157
|
+
* doublerightquote 右二重引用符
|
158
|
+
* singleleftquote 左用符
|
159
|
+
* singlerightquote 右引用符
|
160
|
+
* singlestraightquote 半角一重左用符
|
161
|
+
* doublestraightquote 半角二重引用符
|
162
|
+
* emspace EMスペース
|
163
|
+
* enspace ENスペース
|
164
|
+
* flushspace フラッシュスペース
|
165
|
+
* hairspace 極細スペース
|
166
|
+
* nonbreakingspace 分散禁止スペース
|
167
|
+
* fixedwidthnonbreakingspace 分散禁止スペース(固定幅)
|
168
|
+
* textvariable 全角スペース
|
169
|
+
* thinspace 細いスペース
|
170
|
+
* figurespace 数字の間隔
|
171
|
+
* punctuationspace 句読点等の間隔
|
172
|
+
* sixthspace 1/6スペース
|
173
|
+
* quarterspace 1/4スペース
|
174
|
+
* thirdspace 1/3スペース
|
175
|
+
* columnbreak 改段
|
176
|
+
* framebreak 改フレーム
|
177
|
+
* pagebreak 改ページ
|
178
|
+
* oddpagebreak 奇数改ページ
|
179
|
+
* evenpagebreak 偶数改ページ
|
180
|
+
* footnotesymbol 脚注記号
|
@@ -0,0 +1,11 @@
|
|
1
|
+
For GitHub users;
|
2
|
+
|
3
|
+
This is a pure-ruby implementation of RFC4122 that I wrote back in
|
4
|
+
2005. I have touched its internals a few times (mainly bugfixes). I
|
5
|
+
know someone has already uploaded an old copy of it to GitHub, and
|
6
|
+
thats' 100% legal he has the right to do so, but I believe what I have
|
7
|
+
now is better than the older ones. So I upload this.
|
8
|
+
|
9
|
+
It's very tiny (<300 lines ruby code) and you can simply copy
|
10
|
+
lib/uuid.rb to your project. The gemspec file can help you maintain
|
11
|
+
your dependency though.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
UUID: Pure-ruby RFC4122 Implementation
|
2
|
+
|
3
|
+
RFC4122をフルサポート(はず)のライブラリ。使いかたは
|
4
|
+
|
5
|
+
require 'uuid'
|
6
|
+
UUID.create # => instance
|
7
|
+
|
8
|
+
とか。
|
9
|
+
|
10
|
+
基本的にUUIDってのは存在していることに意味があるオブジェクトなため、それ自身には
|
11
|
+
ほとんどインスタンスメソッドを持たない。以下はその数少ないメソッドたち
|
12
|
+
|
13
|
+
* UUID#==, UUID#<=>
|
14
|
+
比較。RFC4122によるとなぜかUUIDは順序つきなんだそうだ。何に使うのか不明。RFCに準
|
15
|
+
拠するためだけのメソッド。
|
16
|
+
|
17
|
+
* UUID#to_i, UUID#to_int
|
18
|
+
128bit unsigned intとみなして整数化。
|
19
|
+
|
20
|
+
* UUID#to_s, UUID#to_uri, UUID#guid
|
21
|
+
人間が読める文字列にする。to_uriはRFC4122が定めるURIとして変換。guidはよく
|
22
|
+
Windowsとかで見るあれ。
|
23
|
+
|
24
|
+
* UUID#raw_bytes
|
25
|
+
これも文字列を返すんだけど、基本的には読めない。128bit長のUUID値そのもの。
|
26
|
+
|
27
|
+
|
28
|
+
# Local Variables:
|
29
|
+
# mode: text
|
30
|
+
# indent-tabs-mode: t
|
31
|
+
# tab-width: 8
|
32
|
+
# fill-column: 79
|
33
|
+
# default-justification: full
|
34
|
+
# End:
|
data/doc/sample.css
CHANGED
@@ -89,3 +89,20 @@ div h5 {
|
|
89
89
|
font-size: larger;
|
90
90
|
border-bottom: solid 1px #000000;
|
91
91
|
}
|
92
|
+
|
93
|
+
p {
|
94
|
+
text-indent: 1em;
|
95
|
+
}
|
96
|
+
|
97
|
+
p.caption {
|
98
|
+
font-weight: bold;
|
99
|
+
text-indent: 0em;
|
100
|
+
}
|
101
|
+
|
102
|
+
p.noindent {
|
103
|
+
text-indent: 0em;
|
104
|
+
}
|
105
|
+
|
106
|
+
p.flushright {
|
107
|
+
text-align: right;
|
108
|
+
}
|
data/doc/sample.yaml
CHANGED
@@ -28,19 +28,23 @@ aut: 吟遊詩人
|
|
28
28
|
#
|
29
29
|
# coverimage: カバー用画像。画像ディレクトリ内に置いてもディレクトリ名は不要(例: cover.jpg)
|
30
30
|
#
|
31
|
-
# 固有ID
|
32
|
-
urnid: example.
|
31
|
+
# 固有IDに使用するドメイン。指定しない場合には、時刻に基づくランダムUUIDが入る
|
32
|
+
# urnid: urn:uid:http://example.com/some-book-title/1.0.2/
|
33
33
|
# CSSファイル (yamlファイルおよびReVIEWファイルを置いたディレクトリにあること)
|
34
|
-
stylesheet:
|
34
|
+
stylesheet: stylesheet.css
|
35
|
+
# LaTeX用のスタイルファイル(styディレクトリ以下に置くこと)
|
36
|
+
# texstyle: samplemacro
|
35
37
|
# 目次として抽出するレベル
|
36
38
|
toclevel: 3
|
37
39
|
# セクション番号を表示するレベル
|
38
40
|
secnolevel: 2
|
39
41
|
# EPUB標準の目次以外に目次を作成するか
|
40
42
|
# mytoc: nil
|
43
|
+
# 奥付を作成するか。デフォルトでは作成されない。trueを指定するとデフォルトの奥付、ファイル名を指定するとそれがcolophon.htmlとしてコピーされる
|
44
|
+
# colophon: true
|
41
45
|
# XHTML生成後に実行するプログラム。$1:HTMLの生成されたディレクトリ $2:ReVIEWファイルのあるディレクトリ $3:起動時指定のyamlファイル名
|
42
46
|
# posthook: hook.sh
|
43
47
|
# review-compileに渡すパラメータ
|
44
48
|
params: --stylesheet=sample.css
|
45
|
-
# デバッグフラグ。nil
|
49
|
+
# デバッグフラグ。nilでないときには一時ファイルをカレントディレクトリに作成し、削除もしない
|
46
50
|
# debug: nil
|
data/lib/lineinput.rb
CHANGED
data/lib/review/book.rb
CHANGED
@@ -27,9 +27,11 @@ module ReVIEW
|
|
27
27
|
|
28
28
|
class Book
|
29
29
|
|
30
|
+
attr_accessor :param
|
31
|
+
|
30
32
|
def Book.load_default
|
31
33
|
%w( . .. ../.. ).each do |basedir|
|
32
|
-
if File.file?("#{basedir}/
|
34
|
+
if File.file?("#{basedir}/CHAPS")
|
33
35
|
return load(basedir)
|
34
36
|
end
|
35
37
|
end
|
@@ -38,14 +40,7 @@ module ReVIEW
|
|
38
40
|
|
39
41
|
def Book.load(dir)
|
40
42
|
update_rubyenv dir
|
41
|
-
|
42
|
-
then new(dir, Parameters.load("#{dir}/PARAMS"))
|
43
|
-
else new(dir)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def setParameter(param)
|
48
|
-
@param = param
|
43
|
+
new(dir)
|
49
44
|
end
|
50
45
|
|
51
46
|
@basedir_seen = {}
|
@@ -73,9 +68,7 @@ module ReVIEW
|
|
73
68
|
:chapter_file,
|
74
69
|
:part_file,
|
75
70
|
:bib_file,
|
76
|
-
:index_file,
|
77
71
|
:reject_file,
|
78
|
-
:nocode_file,
|
79
72
|
:predef_file,
|
80
73
|
:postdef_file,
|
81
74
|
:ext,
|
@@ -109,7 +102,6 @@ module ReVIEW
|
|
109
102
|
|
110
103
|
def chapter_index
|
111
104
|
@chapter_index ||= ChapterIndex.new(chapters())
|
112
|
-
@chapter_index.setParameter(@param)
|
113
105
|
@chapter_index
|
114
106
|
end
|
115
107
|
|
@@ -278,10 +270,8 @@ module ReVIEW
|
|
278
270
|
:chapter_file => const_get_safe(mod, :CHAPS_FILE),
|
279
271
|
:part_file => const_get_safe(mod, :PART_FILE),
|
280
272
|
:bib_file => const_get_safe(mod, :BIB_FILE),
|
281
|
-
:index_file => const_get_safe(mod, :INDEX_FILE),
|
282
273
|
:reject_file => const_get_safe(mod, :REJECT_FILE) ||
|
283
274
|
const_get_safe(mod, :WORDS_FILE),
|
284
|
-
:nocode_file => const_get_safe(mod, :NOCODE_FILE),
|
285
275
|
:predef_file => const_get_safe(mod, :PREDEF_FILE),
|
286
276
|
:postdef_file => const_get_safe(mod, :POSTDEF_FILE),
|
287
277
|
:ext => const_get_safe(mod, :EXT),
|
@@ -313,16 +303,14 @@ module ReVIEW
|
|
313
303
|
def initialize(params = {})
|
314
304
|
@chapter_file = params[:chapter_file] || 'CHAPS'
|
315
305
|
@part_file = params[:part_file] || 'CHAPS'
|
316
|
-
@index_file = params[:index_file] || 'INDEX'
|
317
306
|
@reject_file = params[:reject_file] || 'REJECT'
|
318
|
-
@nocode_file = params[:nocode_file] || 'NOCODE'
|
319
307
|
@predef_file = params[:predef_file] || 'PREDEF'
|
320
308
|
@postdef_file = params[:postdef_file] || 'POSTDEF'
|
321
309
|
@page_metric = params[:page_metric] || PageMetric.a5
|
322
310
|
@ext = params[:ext] || '.re'
|
323
311
|
@image_dir = params[:image_dir] || 'images'
|
324
312
|
@image_types = unify_exts(params[:image_types] ||
|
325
|
-
%w( eps tif tiff png bmp jpg jpeg gif svg ))
|
313
|
+
%w( eps ai tif tiff png bmp jpg jpeg gif svg ))
|
326
314
|
@bib_file = params[:bib_file] || "bib#{@ext}"
|
327
315
|
end
|
328
316
|
|
@@ -342,9 +330,7 @@ module ReVIEW
|
|
342
330
|
path_param :chapter_file
|
343
331
|
path_param :part_file
|
344
332
|
path_param :bib_file
|
345
|
-
path_param :index_file
|
346
333
|
path_param :reject_file
|
347
|
-
path_param :nocode_file
|
348
334
|
path_param :predef_file
|
349
335
|
path_param :postdef_file
|
350
336
|
attr_reader :ext
|
@@ -438,10 +424,9 @@ module ReVIEW
|
|
438
424
|
@table_index = nil
|
439
425
|
@footnote_index = nil
|
440
426
|
@image_index = nil
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
@param = param
|
427
|
+
@numberless_image_index = nil
|
428
|
+
@indepimage_index = nil
|
429
|
+
@headline_index = nil
|
445
430
|
end
|
446
431
|
|
447
432
|
def env
|
@@ -482,11 +467,11 @@ module ReVIEW
|
|
482
467
|
end
|
483
468
|
}
|
484
469
|
}
|
485
|
-
if
|
470
|
+
if ReVIEW.book.param["inencoding"] =~ /^EUC$/
|
486
471
|
@title = NKF.nkf("-E -w", @title)
|
487
|
-
elsif
|
472
|
+
elsif ReVIEW.book.param["inencoding"] =~ /^SJIS$/
|
488
473
|
@title = NKF.nkf("-S -w", @title)
|
489
|
-
elsif
|
474
|
+
elsif ReVIEW.book.param["inencoding"] =~ /^JIS$/
|
490
475
|
@title = NKF.nkf("-J -w", @title)
|
491
476
|
else
|
492
477
|
@title = NKF.nkf("-w", @title)
|
@@ -507,11 +492,11 @@ module ReVIEW
|
|
507
492
|
end
|
508
493
|
|
509
494
|
def content
|
510
|
-
if
|
495
|
+
if ReVIEW.book.param["inencoding"] =~ /^EUC$/i
|
511
496
|
@content = NKF.nkf("-E -w", File.read(path()))
|
512
|
-
elsif
|
497
|
+
elsif ReVIEW.book.param["inencoding"] =~ /^SJIS$/i
|
513
498
|
@content = NKF.nkf("-S -w", File.read(path()))
|
514
|
-
elsif
|
499
|
+
elsif ReVIEW.book.param["inencoding"] =~ /^JIS$/i
|
515
500
|
@content = NKF.nkf("-J -w", File.read(path()))
|
516
501
|
else
|
517
502
|
@content = NKF.nkf("-w", File.read(path())) # auto detect
|
@@ -529,7 +514,6 @@ module ReVIEW
|
|
529
514
|
|
530
515
|
def list_index
|
531
516
|
@list_index ||= ListIndex.parse(lines())
|
532
|
-
@list_index.setParameter(@param)
|
533
517
|
@list_index
|
534
518
|
end
|
535
519
|
|
@@ -539,7 +523,6 @@ module ReVIEW
|
|
539
523
|
|
540
524
|
def table_index
|
541
525
|
@table_index ||= TableIndex.parse(lines())
|
542
|
-
@table_index.setParameter(@param)
|
543
526
|
@table_index
|
544
527
|
end
|
545
528
|
|
@@ -549,22 +532,36 @@ module ReVIEW
|
|
549
532
|
|
550
533
|
def footnote_index
|
551
534
|
@footnote_index ||= FootnoteIndex.parse(lines())
|
552
|
-
@footnote_index.setParameter(@param)
|
553
535
|
@footnote_index
|
554
536
|
end
|
555
537
|
|
556
538
|
def image(id)
|
557
|
-
image_index()[id]
|
539
|
+
return image_index()[id] if image_index().has_key?(id)
|
540
|
+
return numberless_image_index()[id] if numberless_image_index().has_key?(id)
|
541
|
+
indepimage_index()[id]
|
542
|
+
end
|
543
|
+
|
544
|
+
def numberless_image_index
|
545
|
+
@numberless_image_index ||=
|
546
|
+
NumberlessImageIndex.parse(lines(), id(),
|
547
|
+
"#{book.basedir}#{@book.image_dir}",
|
548
|
+
@book.image_types)
|
558
549
|
end
|
559
550
|
|
560
551
|
def image_index
|
561
552
|
@image_index ||= ImageIndex.parse(lines(), id(),
|
562
553
|
"#{book.basedir}#{@book.image_dir}",
|
563
554
|
@book.image_types)
|
564
|
-
@image_index.setParameter(@param)
|
565
555
|
@image_index
|
566
556
|
end
|
567
557
|
|
558
|
+
def indepimage_index
|
559
|
+
@indepimage_index ||=
|
560
|
+
IndepImageIndex.parse(lines(), id(),
|
561
|
+
"#{book.basedir}#{@book.image_dir}",
|
562
|
+
@book.image_types)
|
563
|
+
end
|
564
|
+
|
568
565
|
def bibpaper(id)
|
569
566
|
bibpaper_index()[id]
|
570
567
|
end
|
@@ -572,9 +569,19 @@ module ReVIEW
|
|
572
569
|
def bibpaper_index
|
573
570
|
raise FileNotFound, "no such bib file: #{@book.bib_file}" unless @book.bib_exist?
|
574
571
|
@bibpaper_index ||= BibpaperIndex.parse(@book.read_bib.lines.to_a)
|
575
|
-
@bibpaper_index.setParameter(@param)
|
576
572
|
@bibpaper_index
|
577
573
|
end
|
578
|
-
end
|
579
574
|
|
575
|
+
def headline(caption)
|
576
|
+
headline_index()[caption]
|
577
|
+
end
|
578
|
+
|
579
|
+
def headline_index
|
580
|
+
@headline_index ||= HeadlineIndex.parse(lines(), self)
|
581
|
+
end
|
582
|
+
|
583
|
+
def on_CHAPS?
|
584
|
+
@book.read_CHAPS().lines.map(&:strip).include?(id() + @book.ext())
|
585
|
+
end
|
586
|
+
end
|
580
587
|
end
|