review-peg 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (174) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +36 -0
  3. data/.rubocop.yml +47 -0
  4. data/.rubocop_todo.yml +605 -0
  5. data/.travis.yml +18 -0
  6. data/COPYING +515 -0
  7. data/ChangeLog +2449 -0
  8. data/Dockerfile +22 -0
  9. data/Gemfile +6 -0
  10. data/README.rdoc +81 -0
  11. data/Rakefile +51 -0
  12. data/bin/review-catalog-converter-peg +129 -0
  13. data/bin/review-check-peg +169 -0
  14. data/bin/review-checkdep-peg +63 -0
  15. data/bin/review-compile-peg +202 -0
  16. data/bin/review-epubmaker-legacy-peg +1024 -0
  17. data/bin/review-epubmaker-peg +44 -0
  18. data/bin/review-index-peg +110 -0
  19. data/bin/review-init-peg +151 -0
  20. data/bin/review-pdfmaker-peg +18 -0
  21. data/bin/review-preproc-peg +131 -0
  22. data/bin/review-validate-peg +51 -0
  23. data/bin/review-vol-peg +100 -0
  24. data/debian/README.Debian +12 -0
  25. data/debian/README.source +5 -0
  26. data/debian/changelog +5 -0
  27. data/debian/compat +1 -0
  28. data/debian/control +22 -0
  29. data/debian/copyright +62 -0
  30. data/debian/docs +6 -0
  31. data/debian/manpage.1.ex +59 -0
  32. data/debian/patches/path.diff +91 -0
  33. data/debian/patches/series +1 -0
  34. data/debian/review.install +13 -0
  35. data/debian/review.links +4 -0
  36. data/debian/rules +13 -0
  37. data/debian/source/format +1 -0
  38. data/doc/NEWS.ja.md +350 -0
  39. data/doc/NEWS.md +354 -0
  40. data/doc/catalog.ja.md +53 -0
  41. data/doc/catalog.md +52 -0
  42. data/doc/format.ja.md +734 -0
  43. data/doc/format.md +746 -0
  44. data/doc/format_idg.ja.md +203 -0
  45. data/doc/quickstart.ja.md +222 -0
  46. data/doc/quickstart.md +252 -0
  47. data/doc/ruby-uuid/README +11 -0
  48. data/doc/ruby-uuid/README.ja +34 -0
  49. data/doc/sample.css +108 -0
  50. data/doc/sample.yml +238 -0
  51. data/lib/epubmaker.rb +24 -0
  52. data/lib/epubmaker/content.rb +93 -0
  53. data/lib/epubmaker/epubcommon.rb +424 -0
  54. data/lib/epubmaker/epubv2.rb +139 -0
  55. data/lib/epubmaker/epubv3.rb +222 -0
  56. data/lib/epubmaker/producer.rb +330 -0
  57. data/lib/lineinput.rb +107 -0
  58. data/lib/review.rb +3 -0
  59. data/lib/review/book.rb +43 -0
  60. data/lib/review/book/base.rb +401 -0
  61. data/lib/review/book/chapter.rb +100 -0
  62. data/lib/review/book/compilable.rb +184 -0
  63. data/lib/review/book/image_finder.rb +71 -0
  64. data/lib/review/book/index.rb +413 -0
  65. data/lib/review/book/page_metric.rb +47 -0
  66. data/lib/review/book/part.rb +54 -0
  67. data/lib/review/book/volume.rb +67 -0
  68. data/lib/review/builder.rb +452 -0
  69. data/lib/review/catalog.rb +52 -0
  70. data/lib/review/compiler.rb +5183 -0
  71. data/lib/review/compiler/literals_1_9.kpeg +22 -0
  72. data/lib/review/compiler/literals_1_9.rb +435 -0
  73. data/lib/review/configure.rb +64 -0
  74. data/lib/review/epubbuilder.rb +18 -0
  75. data/lib/review/epubmaker.rb +480 -0
  76. data/lib/review/ewbbuilder.rb +381 -0
  77. data/lib/review/exception.rb +21 -0
  78. data/lib/review/extentions.rb +4 -0
  79. data/lib/review/extentions/array.rb +25 -0
  80. data/lib/review/extentions/object.rb +9 -0
  81. data/lib/review/extentions/string.rb +33 -0
  82. data/lib/review/htmlbuilder.rb +1166 -0
  83. data/lib/review/htmllayout.rb +41 -0
  84. data/lib/review/htmltoc.rb +45 -0
  85. data/lib/review/htmlutils.rb +90 -0
  86. data/lib/review/i18n.rb +96 -0
  87. data/lib/review/i18n.yml +169 -0
  88. data/lib/review/idgxmlbuilder.rb +1233 -0
  89. data/lib/review/inaobuilder.rb +357 -0
  90. data/lib/review/latexbuilder.rb +941 -0
  91. data/lib/review/latexindex.rb +35 -0
  92. data/lib/review/latexutils.rb +95 -0
  93. data/lib/review/layout.tex.erb +340 -0
  94. data/lib/review/lineinput.rb +17 -0
  95. data/lib/review/location.rb +24 -0
  96. data/lib/review/makerhelper.rb +67 -0
  97. data/lib/review/markdownbuilder.rb +339 -0
  98. data/lib/review/node.rb +288 -0
  99. data/lib/review/pdfmaker.rb +332 -0
  100. data/lib/review/preprocessor.rb +530 -0
  101. data/lib/review/review.kpeg +745 -0
  102. data/lib/review/sec_counter.rb +69 -0
  103. data/lib/review/template.rb +21 -0
  104. data/lib/review/textbuilder.rb +17 -0
  105. data/lib/review/textutils.rb +16 -0
  106. data/lib/review/tocparser.rb +348 -0
  107. data/lib/review/tocprinter.rb +205 -0
  108. data/lib/review/topbuilder.rb +796 -0
  109. data/lib/review/unfold.rb +138 -0
  110. data/lib/review/version.rb +3 -0
  111. data/lib/uuid.rb +312 -0
  112. data/review.gemspec +32 -0
  113. data/templates/html/layout-html5.html.erb +17 -0
  114. data/templates/html/layout-xhtml1.html.erb +20 -0
  115. data/templates/ncx/epubv2.ncx.erb +11 -0
  116. data/templates/opf/epubv2.opf.erb +21 -0
  117. data/templates/opf/epubv3.opf.erb +18 -0
  118. data/templates/xml/container.xml.erb +6 -0
  119. data/test/CHAPS +2 -0
  120. data/test/assets/test.xml.erb +3 -0
  121. data/test/assets/test_template.tex +255 -0
  122. data/test/assets/test_template_backmatter.tex +32 -0
  123. data/test/bib.re +13 -0
  124. data/test/book_test_helper.rb +35 -0
  125. data/test/sample-book/README.md +7 -0
  126. data/test/sample-book/src/Rakefile +58 -0
  127. data/test/sample-book/src/_cover.html +3 -0
  128. data/test/sample-book/src/catalog.yml +10 -0
  129. data/test/sample-book/src/ch01.re +71 -0
  130. data/test/sample-book/src/ch02.re +3 -0
  131. data/test/sample-book/src/config.yml +186 -0
  132. data/test/sample-book/src/images/ch01-imgsample.jpg +0 -0
  133. data/test/sample-book/src/images/cover.jpg +0 -0
  134. data/test/sample-book/src/preface.re +15 -0
  135. data/test/sample-book/src/sty/jumoline.sty +310 -0
  136. data/test/sample-book/src/sty/reviewmacro.sty +39 -0
  137. data/test/sample-book/src/style.css +251 -0
  138. data/test/sample-book/src/vendor/jumoline/README +29 -0
  139. data/test/sample-book/src/vendor/jumoline/jumoline.dtx +2988 -0
  140. data/test/sample-book/src/vendor/jumoline/jumoline.ins +6 -0
  141. data/test/test.re +43 -0
  142. data/test/test_book.rb +556 -0
  143. data/test/test_book_chapter.rb +280 -0
  144. data/test/test_book_part.rb +54 -0
  145. data/test/test_builder.rb +80 -0
  146. data/test/test_catalog.rb +119 -0
  147. data/test/test_catalog_converter_cmd.rb +73 -0
  148. data/test/test_compiler.rb +92 -0
  149. data/test/test_configure.rb +50 -0
  150. data/test/test_epub3maker.rb +529 -0
  151. data/test/test_epubmaker.rb +569 -0
  152. data/test/test_epubmaker_cmd.rb +40 -0
  153. data/test/test_helper.rb +92 -0
  154. data/test/test_htmlbuilder.rb +1114 -0
  155. data/test/test_htmltoc.rb +32 -0
  156. data/test/test_htmlutils.rb +50 -0
  157. data/test/test_i18n.rb +180 -0
  158. data/test/test_idgxmlbuilder.rb +608 -0
  159. data/test/test_image_finder.rb +82 -0
  160. data/test/test_inaobuilder.rb +245 -0
  161. data/test/test_index.rb +174 -0
  162. data/test/test_latexbuilder.rb +732 -0
  163. data/test/test_lineinput.rb +182 -0
  164. data/test/test_makerhelper.rb +66 -0
  165. data/test/test_markdownbuilder.rb +125 -0
  166. data/test/test_pdfmaker.rb +171 -0
  167. data/test/test_pdfmaker_cmd.rb +40 -0
  168. data/test/test_preprocessor.rb +23 -0
  169. data/test/test_review_ext.rb +31 -0
  170. data/test/test_template.rb +26 -0
  171. data/test/test_textutils.rb +32 -0
  172. data/test/test_topbuilder.rb +291 -0
  173. data/test/test_uuid.rb +157 -0
  174. 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