review-peg 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +36 -0
- data/.rubocop.yml +47 -0
- data/.rubocop_todo.yml +605 -0
- data/.travis.yml +18 -0
- data/COPYING +515 -0
- data/ChangeLog +2449 -0
- data/Dockerfile +22 -0
- data/Gemfile +6 -0
- data/README.rdoc +81 -0
- data/Rakefile +51 -0
- data/bin/review-catalog-converter-peg +129 -0
- data/bin/review-check-peg +169 -0
- data/bin/review-checkdep-peg +63 -0
- data/bin/review-compile-peg +202 -0
- data/bin/review-epubmaker-legacy-peg +1024 -0
- data/bin/review-epubmaker-peg +44 -0
- data/bin/review-index-peg +110 -0
- data/bin/review-init-peg +151 -0
- data/bin/review-pdfmaker-peg +18 -0
- data/bin/review-preproc-peg +131 -0
- data/bin/review-validate-peg +51 -0
- data/bin/review-vol-peg +100 -0
- 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 +62 -0
- data/debian/docs +6 -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/NEWS.ja.md +350 -0
- data/doc/NEWS.md +354 -0
- 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.ja.md +222 -0
- data/doc/quickstart.md +252 -0
- data/doc/ruby-uuid/README +11 -0
- data/doc/ruby-uuid/README.ja +34 -0
- data/doc/sample.css +108 -0
- data/doc/sample.yml +238 -0
- data/lib/epubmaker.rb +24 -0
- data/lib/epubmaker/content.rb +93 -0
- data/lib/epubmaker/epubcommon.rb +424 -0
- data/lib/epubmaker/epubv2.rb +139 -0
- data/lib/epubmaker/epubv3.rb +222 -0
- data/lib/epubmaker/producer.rb +330 -0
- data/lib/lineinput.rb +107 -0
- data/lib/review.rb +3 -0
- data/lib/review/book.rb +43 -0
- data/lib/review/book/base.rb +401 -0
- data/lib/review/book/chapter.rb +100 -0
- data/lib/review/book/compilable.rb +184 -0
- data/lib/review/book/image_finder.rb +71 -0
- data/lib/review/book/index.rb +413 -0
- data/lib/review/book/page_metric.rb +47 -0
- data/lib/review/book/part.rb +54 -0
- data/lib/review/book/volume.rb +67 -0
- data/lib/review/builder.rb +452 -0
- data/lib/review/catalog.rb +52 -0
- data/lib/review/compiler.rb +5183 -0
- data/lib/review/compiler/literals_1_9.kpeg +22 -0
- data/lib/review/compiler/literals_1_9.rb +435 -0
- data/lib/review/configure.rb +64 -0
- data/lib/review/epubbuilder.rb +18 -0
- data/lib/review/epubmaker.rb +480 -0
- data/lib/review/ewbbuilder.rb +381 -0
- data/lib/review/exception.rb +21 -0
- data/lib/review/extentions.rb +4 -0
- data/lib/review/extentions/array.rb +25 -0
- data/lib/review/extentions/object.rb +9 -0
- data/lib/review/extentions/string.rb +33 -0
- data/lib/review/htmlbuilder.rb +1166 -0
- data/lib/review/htmllayout.rb +41 -0
- data/lib/review/htmltoc.rb +45 -0
- data/lib/review/htmlutils.rb +90 -0
- data/lib/review/i18n.rb +96 -0
- data/lib/review/i18n.yml +169 -0
- data/lib/review/idgxmlbuilder.rb +1233 -0
- data/lib/review/inaobuilder.rb +357 -0
- data/lib/review/latexbuilder.rb +941 -0
- data/lib/review/latexindex.rb +35 -0
- data/lib/review/latexutils.rb +95 -0
- data/lib/review/layout.tex.erb +340 -0
- data/lib/review/lineinput.rb +17 -0
- data/lib/review/location.rb +24 -0
- data/lib/review/makerhelper.rb +67 -0
- data/lib/review/markdownbuilder.rb +339 -0
- data/lib/review/node.rb +288 -0
- data/lib/review/pdfmaker.rb +332 -0
- data/lib/review/preprocessor.rb +530 -0
- data/lib/review/review.kpeg +745 -0
- data/lib/review/sec_counter.rb +69 -0
- data/lib/review/template.rb +21 -0
- data/lib/review/textbuilder.rb +17 -0
- data/lib/review/textutils.rb +16 -0
- data/lib/review/tocparser.rb +348 -0
- data/lib/review/tocprinter.rb +205 -0
- data/lib/review/topbuilder.rb +796 -0
- data/lib/review/unfold.rb +138 -0
- data/lib/review/version.rb +3 -0
- data/lib/uuid.rb +312 -0
- data/review.gemspec +32 -0
- data/templates/html/layout-html5.html.erb +17 -0
- data/templates/html/layout-xhtml1.html.erb +20 -0
- 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/xml/container.xml.erb +6 -0
- data/test/CHAPS +2 -0
- data/test/assets/test.xml.erb +3 -0
- data/test/assets/test_template.tex +255 -0
- data/test/assets/test_template_backmatter.tex +32 -0
- data/test/bib.re +13 -0
- data/test/book_test_helper.rb +35 -0
- data/test/sample-book/README.md +7 -0
- data/test/sample-book/src/Rakefile +58 -0
- data/test/sample-book/src/_cover.html +3 -0
- data/test/sample-book/src/catalog.yml +10 -0
- data/test/sample-book/src/ch01.re +71 -0
- data/test/sample-book/src/ch02.re +3 -0
- data/test/sample-book/src/config.yml +186 -0
- 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 +15 -0
- data/test/sample-book/src/sty/jumoline.sty +310 -0
- data/test/sample-book/src/sty/reviewmacro.sty +39 -0
- data/test/sample-book/src/style.css +251 -0
- data/test/sample-book/src/vendor/jumoline/README +29 -0
- data/test/sample-book/src/vendor/jumoline/jumoline.dtx +2988 -0
- data/test/sample-book/src/vendor/jumoline/jumoline.ins +6 -0
- data/test/test.re +43 -0
- data/test/test_book.rb +556 -0
- data/test/test_book_chapter.rb +280 -0
- data/test/test_book_part.rb +54 -0
- data/test/test_builder.rb +80 -0
- data/test/test_catalog.rb +119 -0
- data/test/test_catalog_converter_cmd.rb +73 -0
- data/test/test_compiler.rb +92 -0
- data/test/test_configure.rb +50 -0
- data/test/test_epub3maker.rb +529 -0
- data/test/test_epubmaker.rb +569 -0
- data/test/test_epubmaker_cmd.rb +40 -0
- data/test/test_helper.rb +92 -0
- data/test/test_htmlbuilder.rb +1114 -0
- data/test/test_htmltoc.rb +32 -0
- data/test/test_htmlutils.rb +50 -0
- data/test/test_i18n.rb +180 -0
- data/test/test_idgxmlbuilder.rb +608 -0
- data/test/test_image_finder.rb +82 -0
- data/test/test_inaobuilder.rb +245 -0
- data/test/test_index.rb +174 -0
- data/test/test_latexbuilder.rb +732 -0
- data/test/test_lineinput.rb +182 -0
- data/test/test_makerhelper.rb +66 -0
- data/test/test_markdownbuilder.rb +125 -0
- data/test/test_pdfmaker.rb +171 -0
- data/test/test_pdfmaker_cmd.rb +40 -0
- data/test/test_preprocessor.rb +23 -0
- data/test/test_review_ext.rb +31 -0
- data/test/test_template.rb +26 -0
- data/test/test_textutils.rb +32 -0
- data/test/test_topbuilder.rb +291 -0
- data/test/test_uuid.rb +157 -0
- metadata +357 -0
@@ -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
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
@charset "utf-8";
|
2
|
+
|
3
|
+
h1 {
|
4
|
+
color: #000080;
|
5
|
+
font-weight: bold;
|
6
|
+
text-align: center;
|
7
|
+
}
|
8
|
+
|
9
|
+
h2 {
|
10
|
+
color: #000080;
|
11
|
+
font-weight: bold;
|
12
|
+
border-bottom: dotted 1px #000080;
|
13
|
+
margin-top: 1em;
|
14
|
+
}
|
15
|
+
|
16
|
+
h3 {
|
17
|
+
color: #000080;
|
18
|
+
border-bottom: dotted 1px #000080;
|
19
|
+
margin-top: 1em;
|
20
|
+
}
|
21
|
+
|
22
|
+
p.lead {
|
23
|
+
padding: 1em;
|
24
|
+
background: #c0c0ff;
|
25
|
+
}
|
26
|
+
|
27
|
+
p.footnote {
|
28
|
+
font-size: xx-small;
|
29
|
+
padding: 1em;
|
30
|
+
background: #d0d0d0;
|
31
|
+
}
|
32
|
+
|
33
|
+
p.sourcecaption {
|
34
|
+
font-weight: bold;
|
35
|
+
text-align: center;
|
36
|
+
}
|
37
|
+
p.imagecaption {
|
38
|
+
font-weight: bold;
|
39
|
+
text-align: center;
|
40
|
+
}
|
41
|
+
p.listcaption {
|
42
|
+
font-weight: bold;
|
43
|
+
text-align: center;
|
44
|
+
}
|
45
|
+
p.emlistcaption {
|
46
|
+
font-weight: bold;
|
47
|
+
text-align: center;
|
48
|
+
}
|
49
|
+
p.tablecaption {
|
50
|
+
font-weight: bold;
|
51
|
+
text-align: center;
|
52
|
+
}
|
53
|
+
p.notecaption {
|
54
|
+
font-weight: bold;
|
55
|
+
text-align: center;
|
56
|
+
}
|
57
|
+
|
58
|
+
img {
|
59
|
+
text-align: center;
|
60
|
+
}
|
61
|
+
|
62
|
+
table {
|
63
|
+
border: solid 1px #000000;
|
64
|
+
width: 90%;
|
65
|
+
margin-bottom: 1em;
|
66
|
+
}
|
67
|
+
|
68
|
+
th {
|
69
|
+
border-bottom: solid 1px #000000;
|
70
|
+
background: #800000;
|
71
|
+
color: #ffffff;
|
72
|
+
}
|
73
|
+
|
74
|
+
span.kw {
|
75
|
+
font-weight: bold;
|
76
|
+
}
|
77
|
+
|
78
|
+
div.column {
|
79
|
+
padding: 0.5em;
|
80
|
+
background: #ffd0d0;
|
81
|
+
border: dotted 2px #808080;
|
82
|
+
}
|
83
|
+
|
84
|
+
div.image {
|
85
|
+
text-align: center;
|
86
|
+
}
|
87
|
+
|
88
|
+
div h5 {
|
89
|
+
font-size: larger;
|
90
|
+
border-bottom: solid 1px #000000;
|
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.yml
ADDED
@@ -0,0 +1,238 @@
|
|
1
|
+
# review-epubmaker向けの設定ファイルの例。
|
2
|
+
# yamlファイルをRe:VIEWファイルのある場所に置き、
|
3
|
+
# 「review-epubmaker yamlファイル」を実行すると、<bookname>.epubファイルが
|
4
|
+
# 生成されます。
|
5
|
+
# このファイルはUTF-8エンコーディングで記述してください。
|
6
|
+
|
7
|
+
# ブック名(ファイル名になるもの。ASCII範囲の文字を使用)
|
8
|
+
bookname: review-sample
|
9
|
+
|
10
|
+
# 書名
|
11
|
+
booktitle: Re:VIEW EPUBサンプル
|
12
|
+
|
13
|
+
# 著者名。「, 」で区切って複数指定できる
|
14
|
+
aut: ["Minero Aoki", "Kenshi Muto", "Masayoshi Takahashi", "Masanori Kado"]
|
15
|
+
|
16
|
+
# 以下はオプション
|
17
|
+
# 以下はオプション(autと同じように配列書式で複数指定可能)。
|
18
|
+
# a-が付いているものはcreator側、
|
19
|
+
# 付いていないものはcontributor側(二次協力者)に入る
|
20
|
+
# a-adp, adp: 異なるメディア向けに作り直した者
|
21
|
+
# a-ann, ann: 注釈記述者
|
22
|
+
# a-arr, arr: アレンジした者
|
23
|
+
# a-art, art: グラフィックデザインおよび芸術家
|
24
|
+
# a-asn, asn: 関連・かつての所有者・関係者
|
25
|
+
# a-aqt, aqt: 大きく引用された人物
|
26
|
+
# a-aft, aft: 後書き・奥付の責任者
|
27
|
+
# a-aui, aui: 序論・序文・前書きの責任者
|
28
|
+
# a-ant, ant: 目録責任者
|
29
|
+
# a-bkp, bkp: メディア制作責任者
|
30
|
+
# a-clb, clb: 限定参加または補足者
|
31
|
+
# a-cmm, cmm: 解釈・分析・考察者
|
32
|
+
# a-dsr, dsr: デザイナ
|
33
|
+
# a-edt, edt: 編集者
|
34
|
+
# a-ill, ill: イラストレータ
|
35
|
+
# a-lyr, lyr: 歌詞作成者
|
36
|
+
# a-mdc, mdc: メタデータセットの一次的責任者
|
37
|
+
# a-mus, mus: 音楽家
|
38
|
+
# a-nrt, nrt: 語り手
|
39
|
+
# a-oth, oth: その他
|
40
|
+
# a-pht, pht: 撮影責任者
|
41
|
+
# a-prt, prt: 出版社
|
42
|
+
# a-red, red: 項目の枠組起草者
|
43
|
+
# a-rev, rev: 評論者
|
44
|
+
# a-spn, spn: 援助者
|
45
|
+
# a-ths, ths: 監督者
|
46
|
+
# a-trc, trc: 筆記・タイプ作業者
|
47
|
+
# a-trl, trl: 翻訳者
|
48
|
+
|
49
|
+
# rights: 権利表記(配列で複数指定可)
|
50
|
+
# date: 刊行日(省略した場合は実行時の日付)
|
51
|
+
# description: 説明
|
52
|
+
# subject: 短い説明用タグ(配列で複数指定可)
|
53
|
+
# type: 書籍のカテゴリーなど(配列で複数指定可)
|
54
|
+
# format: メディアタイプおよび特徴(配列で複数指定可)
|
55
|
+
# source: 出版物生成の重要なリソース情報(配列で複数指定可)
|
56
|
+
# relation: 補助的リソース(配列で複数指定可)
|
57
|
+
# coverage: 内容の範囲や領域(配列で複数指定可)
|
58
|
+
|
59
|
+
|
60
|
+
# デバッグフラグ。nullでないときには一時ファイルをカレントディレクトリに作成し、削除もしない
|
61
|
+
debug: null
|
62
|
+
|
63
|
+
# htmlext: HTMLファイルの拡張子(省略した場合はhtml)
|
64
|
+
#
|
65
|
+
# CSSファイル(配列で複数指定可)
|
66
|
+
# stylesheet: ["stylesheet.css"]
|
67
|
+
|
68
|
+
# ePUBのバージョン (2か3)
|
69
|
+
# epubversion: 2
|
70
|
+
# HTMLのバージョン (4か5。epubversionを3にしたときには5にする)
|
71
|
+
# htmlversion: 4
|
72
|
+
|
73
|
+
# 目次として抽出する見出しレベル
|
74
|
+
toclevel: 3
|
75
|
+
|
76
|
+
# 採番の設定。採番させたくない見出しには「==[nonum]」のようにnonum指定をする
|
77
|
+
#
|
78
|
+
# 本文でセクション番号を表示する見出しレベル
|
79
|
+
secnolevel: 2
|
80
|
+
|
81
|
+
# 付録の連番のスタイル。null(アラビア数字1〜。デフォルト)、alpha(英字A〜)、roman(ローマ数字I〜)
|
82
|
+
# appendix_format: null
|
83
|
+
|
84
|
+
# 以下のsecnolevelはまだ未実装。
|
85
|
+
# 前付でセクション番号を表示する見出しレベル(未実装)
|
86
|
+
# pre_secnolevel: 0
|
87
|
+
# 後付(付録)でセクション番号を表示する見出しレベル(未実装)
|
88
|
+
# post_secnolevel: 1
|
89
|
+
# 部番号を表示する見出しレベル(未実装)
|
90
|
+
# part_secnolevel: 1
|
91
|
+
|
92
|
+
# 本文中に目次ページを作成するか。省略した場合はnull (作成しない)
|
93
|
+
# toc: true
|
94
|
+
|
95
|
+
# EPUB2標準の目次(NCX)以外に物理目次ファイルを作成するか。省略した場合はnull (作成しない)
|
96
|
+
# ePUB3においてはこの設定によらず必ず作成される
|
97
|
+
# mytoc: true
|
98
|
+
|
99
|
+
# 表紙にするHTMLファイル。ファイル名を指定すると表紙として入る
|
100
|
+
# cover: null
|
101
|
+
# 表紙に配置し、書籍の影絵にも利用する画像ファイル。省略した場合はnull (画像を使わない)。画像ディレクトリ内に置いてもディレクトリ名は不要(例: cover.jpg)
|
102
|
+
# coverimage: null
|
103
|
+
# 表紙の後に大扉ページを作成するか。省略した場合はnull (作成しない)
|
104
|
+
# titlepage: null
|
105
|
+
# 自動生成される大扉ページを上書きするファイル。ファイル名を指定すると大扉として入る
|
106
|
+
# titlefile: null
|
107
|
+
# 原書大扉ページにするHTMLファイル。ファイル名を指定すると原書大扉として入る
|
108
|
+
# originaltitlefile: null
|
109
|
+
# 権利表記ページファイル。ファイル名を指定すると権利表記として入る
|
110
|
+
# creditfile: null
|
111
|
+
|
112
|
+
# 奥付を作成するか。デフォルトでは作成されない。trueを指定するとデフォルトの奥付、ファイル名を指定するとそれがcolophon.htmlとしてコピーされる
|
113
|
+
# colophon: true
|
114
|
+
|
115
|
+
# 裏表紙ファイル (画像はcoversまたはimagesに配置する)。ファイル名を指定すると裏表紙として入る
|
116
|
+
# backcover: null
|
117
|
+
|
118
|
+
# プロフィールページファイル。ファイル名を指定すると著者紹介として入る
|
119
|
+
# profile: null
|
120
|
+
# プロフィールページの目次上の見出し
|
121
|
+
# profiletitle: 著者紹介
|
122
|
+
|
123
|
+
# 広告ファイル。ファイル名を指定すると広告として入る
|
124
|
+
# advfile: null
|
125
|
+
|
126
|
+
# 取り込む画像が格納されているディレクトリ。省略した場合は以下
|
127
|
+
# imagedir: images
|
128
|
+
|
129
|
+
# 取り込むフォントが格納されているディレクトリ。省略した場合は以下
|
130
|
+
# fontdir: fonts
|
131
|
+
|
132
|
+
# imagedir内から取り込まれる対象となるファイル拡張子。省略した場合は以下
|
133
|
+
# image_ext: ["png", "gif", "jpg", "jpeg", "svg", "ttf", "woff", "otf"]
|
134
|
+
|
135
|
+
# fontdir内から取り込まれる対象となるファイル拡張子。省略した場合は以下
|
136
|
+
# font_ext: ["ttf", "woff", "otf"]
|
137
|
+
|
138
|
+
# review-compileに渡すパラメータ
|
139
|
+
params: --stylesheet=sample.css
|
140
|
+
# Pygmentsカラーリングを利用する (pygments外部gemが必要)
|
141
|
+
# pygments: true
|
142
|
+
|
143
|
+
# カタログファイル名を指定する
|
144
|
+
# catalogfile: catalog.yml
|
145
|
+
# 1ページの行数文字数と1kbごとのページ数を用紙サイズで指定する(A5 or B5)。
|
146
|
+
# page_metric: A5
|
147
|
+
# あるいは、配列で指定することもできる
|
148
|
+
# 各数字の意味は、順にリストの行数、リストの1行字数、テキストの行数、テキストの1行字数、1kバイト毎のページ数
|
149
|
+
# page_metric: [40,80,40,80,2]
|
150
|
+
|
151
|
+
# 以下のパラメータを有効にするときには、
|
152
|
+
# epubmaker:
|
153
|
+
# パラメータ: 値
|
154
|
+
# パラメータ: 値
|
155
|
+
# ...
|
156
|
+
# という構成にする必要がある(インデントさせる)
|
157
|
+
|
158
|
+
# epubmaker:
|
159
|
+
# 目次を要素の階層表現にしない。省略した場合(null)は階層化する。
|
160
|
+
# 特に部扉が入るなどの理由で、構成によっては階層化目次でepubcheckに
|
161
|
+
# パスしない目次ができるが、そのようなときにはこれをtrueにする
|
162
|
+
# flattoc: null
|
163
|
+
# 目次のインデントレベルをスペース文字で表現する(flattocがtrueのときのみ)
|
164
|
+
# flattocindent: true
|
165
|
+
# NCX目次の見出しレベルごとの飾り(配列で設定)。EPUB3ではNCXは作られない
|
166
|
+
# ncxindent:
|
167
|
+
#-
|
168
|
+
#- -
|
169
|
+
# フックは、各段階で介入したいときのプログラムを指定する。自動で適切な引数が渡される
|
170
|
+
# プログラムには実行権限が必要
|
171
|
+
# ファイル変換処理の前に実行するプログラム。スタイルシートのコンパイルをしたいときなどに利用する。
|
172
|
+
# 渡される引数1=作業用展開ディレクトリ
|
173
|
+
# hook_beforeprocess: null
|
174
|
+
# 前付の作成後に実行するプログラム。作業用展開ディレクトリにある目次ファイル(toc-html.txt)を操作したいときなどに利用する。
|
175
|
+
# 渡される引数1=作業用展開ディレクトリ
|
176
|
+
# hook_afterfrontmatter: null
|
177
|
+
# 本文の変換後に実行するプログラム。作業用展開ディレクトリにある目次ファイル(toc-html.txt)を操作したいときなどに利用する。
|
178
|
+
# 渡される引数1=作業用展開ディレクトリ
|
179
|
+
# hook_afterbody: null
|
180
|
+
# 後付の作成後に実行するプログラム。作業用展開ディレクトリにある目次ファイル(toc-html.txt)を操作したいときなどに利用する。
|
181
|
+
# 渡される引数1=作業用展開ディレクトリ
|
182
|
+
# hook_afterbackmatter: null
|
183
|
+
# 画像およびフォントをコピーした後に実行するプログラム。別の画像やフォントを追加したいときなどに利用する。
|
184
|
+
# 渡される引数1=作業用展開ディレクトリ
|
185
|
+
# hook_aftercopyimage: null
|
186
|
+
# ePUB zipアーカイブ直前に実行するプログラム。メタ情報などを加工したいときなどに利用する。
|
187
|
+
# 渡される引数1=ePUB準備ディレクトリ
|
188
|
+
# hook_prepack: null
|
189
|
+
# 変換したHTMLファイルおよびCSSを解析して厳密に使用している画像ファイルだけを取り込むか。デフォルトはnull(imagesディレクトリすべてを取り込む)
|
190
|
+
# なお、フォント、カバー、広告についてはこの設定によらずディレクトリ内のものがすべて取り込まれる
|
191
|
+
# verify_target_images: null
|
192
|
+
# verify_target_imagesがtrueの状態において、解析で発見されなくても強制的に取り込むファイルの相対パスの配列
|
193
|
+
# force_include_images: []
|
194
|
+
# Re:VIEWファイル名を使わず、前付にpre01,pre02...、本文にchap01,chap02l...、後付にpost01,post02...という名前付けルールにするか
|
195
|
+
# rename_for_legacy: null
|
196
|
+
# ePUBアーカイブの非圧縮実行
|
197
|
+
# zip_stage1: "zip -0Xq"
|
198
|
+
# ePUBアーカイブの圧縮実行
|
199
|
+
# zip_stage2: "zip -Xr9Dq"
|
200
|
+
# ePUBアーカイブに追加するパス(デフォルトはmimetype、META-INF、OEBPS)
|
201
|
+
# zip_addpath: null
|
202
|
+
# EPUBで表紙をコンテンツに含めるか。デフォルトでは作成されない。yesにするとiBooks等でも最初に表紙が表示されるようになる
|
203
|
+
# cover_linear: null
|
204
|
+
#
|
205
|
+
# epubmaker:階層を使うものはここまで
|
206
|
+
|
207
|
+
# LaTeX用のスタイルファイル(styディレクトリ以下に置くこと)
|
208
|
+
# texstyle: samplemacro
|
209
|
+
# LaTeX用のdocumentclassを指定する
|
210
|
+
# texdocumentclass: ["jsarticle", "b5paper,oneside"]
|
211
|
+
# LaTeX用のコマンドを指定する(platex or lualatex)
|
212
|
+
# texcommand: "platex"
|
213
|
+
# LaTeX用のオプションを指定する(default: "-kanji=#{kanji}")
|
214
|
+
# texoptions: "-kanji=utf-8"
|
215
|
+
# LaTeX用のdvi変換コマンドを指定する(dvipdfmx)
|
216
|
+
# dvicommand: "dvipdfmx"
|
217
|
+
# LaTeX用のdvi変換コマンドのオプションを指定する
|
218
|
+
# dvioptions: "-d 5"
|
219
|
+
|
220
|
+
# 以下のパラメータを有効にするときには、
|
221
|
+
# pdfmaker:
|
222
|
+
# パラメータ: 値
|
223
|
+
# パラメータ: 値
|
224
|
+
# ...
|
225
|
+
# という構成にする必要がある(インデントさせる)
|
226
|
+
#
|
227
|
+
# pdfmaker:
|
228
|
+
# TeXコンパイル前に実行するプログラム。変換後のTeXソースを調整したいときに使用する。
|
229
|
+
# 渡される引数1=作業用展開ディレクトリ、引数2=呼び出しを実行したディレクトリ
|
230
|
+
# hook_beforetexcompile: null
|
231
|
+
# TeXコンパイル後に実行するプログラム。索引作業をして再度コンパイルしたいときなどに使用する。
|
232
|
+
# 渡される引数1=作業用展開ディレクトリ、引数2=呼び出しを実行したディレクトリ
|
233
|
+
# hook_aftertexcompile: null
|
234
|
+
# PDF(book.pdf)作成後に実行するプログラム。PDFに加工を施したいときに使用する。
|
235
|
+
# 渡される引数1=作業用展開ディレクトリ、引数2=呼び出しを実行したディレクトリ
|
236
|
+
# hook_afterdvipdf: null
|
237
|
+
#
|
238
|
+
# pdfmaker:階層を使うものはここまで
|
data/lib/epubmaker.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# = epubmaker.rb -- EPUB production set.
|
3
|
+
#
|
4
|
+
# Copyright (c) 2010-2013 Kenshi Muto
|
5
|
+
#
|
6
|
+
# This program is free software.
|
7
|
+
# You can distribute or modify this program under the terms of
|
8
|
+
# the GNU LGPL, Lesser General Public License version 2.1.
|
9
|
+
# For details of the GNU LGPL, see the file "COPYING".
|
10
|
+
#
|
11
|
+
# == Quick usage
|
12
|
+
# require 'epubmaker'
|
13
|
+
# epub = EPUBMaker::Producer.new
|
14
|
+
# params = epub.load("config.yml")
|
15
|
+
# epub.contents.push(EPUBMaker::Content.new({"file" => "ch01.xhtml"}))
|
16
|
+
# epub.contents.push(EPUBMaker::Content.new({"file" => "ch02.xhtml"}))
|
17
|
+
# ...
|
18
|
+
# epub.import_imageinfo("images")
|
19
|
+
# epub.produce
|
20
|
+
|
21
|
+
require 'epubmaker/producer'
|
22
|
+
require 'epubmaker/content'
|
23
|
+
require 'epubmaker/epubv2'
|
24
|
+
require 'epubmaker/epubv3'
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# = content.rb -- Content object for EPUBMaker.
|
3
|
+
#
|
4
|
+
# Copyright (c) 2010-2014 Kenshi Muto
|
5
|
+
#
|
6
|
+
# This program is free software.
|
7
|
+
# You can distribute or modify this program under the terms of
|
8
|
+
# the GNU LGPL, Lesser General Public License version 2.1.
|
9
|
+
# For details of the GNU LGPL, see the file "COPYING".
|
10
|
+
#
|
11
|
+
|
12
|
+
module EPUBMaker
|
13
|
+
|
14
|
+
# EPUBMaker::Content represents a content data for EPUBMaker.
|
15
|
+
# EPUBMaker#contents takes an array of Content.
|
16
|
+
class Content
|
17
|
+
# ID
|
18
|
+
attr_accessor :id
|
19
|
+
# File path (will accept #<anchor> suffix also)
|
20
|
+
attr_accessor :file
|
21
|
+
# MIME type
|
22
|
+
attr_accessor :media
|
23
|
+
# Title
|
24
|
+
attr_accessor :title
|
25
|
+
# Header level (from 1)
|
26
|
+
attr_accessor :level
|
27
|
+
# Show in TOC? nil:No.
|
28
|
+
attr_accessor :notoc
|
29
|
+
# Properties (EPUB3)
|
30
|
+
attr_accessor :properties
|
31
|
+
# Chapter type (pre/post/part/nil(body))
|
32
|
+
attr_accessor :chaptype
|
33
|
+
|
34
|
+
# :call-seq:
|
35
|
+
# initialize(file, id, media, title, level, notoc)
|
36
|
+
# initialize(hash)
|
37
|
+
# Construct Content object by passing a sequence of parameters or hash.
|
38
|
+
# Keys of +hash+ relate with each parameters.
|
39
|
+
# +file+ (or +hash+["file"]) is required. Others are optional.
|
40
|
+
def initialize(fileorhash, id=nil, media=nil, title=nil, level=nil, notoc=nil, properties=nil, chaptype=nil)
|
41
|
+
if fileorhash.instance_of?(Hash)
|
42
|
+
@id = fileorhash["id"]
|
43
|
+
@file = fileorhash["file"]
|
44
|
+
@media = fileorhash["media"]
|
45
|
+
@title = fileorhash["title"]
|
46
|
+
@level = fileorhash["level"]
|
47
|
+
@notoc = fileorhash["notoc"]
|
48
|
+
@properties = fileorhash["properties"] || []
|
49
|
+
@chaptype = fileorhash["chaptype"]
|
50
|
+
else
|
51
|
+
@file = fileorhash
|
52
|
+
@id = id
|
53
|
+
@media = media
|
54
|
+
@title = title
|
55
|
+
@level = level
|
56
|
+
@notoc = notoc
|
57
|
+
@properties = properties || []
|
58
|
+
@chaptype = chaptype
|
59
|
+
end
|
60
|
+
complement
|
61
|
+
end
|
62
|
+
|
63
|
+
def ==(other)
|
64
|
+
if self.class != other.class
|
65
|
+
return false
|
66
|
+
end
|
67
|
+
[self.id, self.file, self.media, self.title, self.level, self.notoc, self.chaptype, self.properties] ==
|
68
|
+
[other.id, other.file, other.media, other.title, other.level, other.notoc, other.chaptype, other.properties]
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
# Complement other parameters by using file parameter.
|
74
|
+
def complement
|
75
|
+
@id = @file.gsub(/[\\\/\. ]/, '-') if @id.nil?
|
76
|
+
@id = "rv-#{@id}" if @id =~ /\A[^a-z]/i
|
77
|
+
@media = @file.sub(/.+\./, '').downcase if !@file.nil? && @media.nil?
|
78
|
+
|
79
|
+
@media = "application/xhtml+xml" if @media == "xhtml" || @media == "xml" || @media == "html"
|
80
|
+
@media = "text/css" if @media == "css"
|
81
|
+
@media = "image/jpeg" if @media == "jpg" || @media == "jpeg" || @media == "image/jpg"
|
82
|
+
@media = "image/png" if @media == "png"
|
83
|
+
@media = "image/gif" if @media == "gif"
|
84
|
+
@media = "image/svg+xml" if @media == "svg" || @media == "image/svg"
|
85
|
+
@media = "application/vnd.ms-opentype" if @media == "ttf" || @media == "otf"
|
86
|
+
@media = "application/font-woff" if @media == "woff"
|
87
|
+
|
88
|
+
if @id.nil? || @file.nil? || @media.nil?
|
89
|
+
raise "Type error: #{id}, #{file}, #{media}, #{title}, #{notoc}"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|