review 1.0.0 → 1.1.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.
Files changed (100) hide show
  1. data/.travis.yml +1 -2
  2. data/ChangeLog +65 -0
  3. data/Gemfile +5 -0
  4. data/README.rdoc +6 -1
  5. data/Rakefile +14 -28
  6. data/bin/review-check +9 -21
  7. data/bin/review-compile +45 -12
  8. data/bin/review-epubmaker +477 -220
  9. data/bin/review-epubmaker-ng +5 -14
  10. data/bin/review-index +4 -2
  11. data/bin/review-init +94 -0
  12. data/bin/review-pdfmaker +70 -287
  13. data/bin/review-preproc +5 -2
  14. data/bin/review-vol +4 -11
  15. data/debian/changelog +3 -3
  16. data/debian/copyright +5 -3
  17. data/debian/docs +1 -0
  18. data/doc/format.rdoc +57 -11
  19. data/doc/quickstart.rdoc +4 -4
  20. data/doc/sample.yaml +11 -7
  21. data/lib/epubmaker.rb +1 -1
  22. data/lib/epubmaker/epubv2.rb +26 -27
  23. data/lib/epubmaker/epubv3.rb +13 -13
  24. data/lib/epubmaker/producer.rb +1 -1
  25. data/lib/review.rb +3 -4
  26. data/lib/review/book.rb +17 -581
  27. data/lib/review/book/base.rb +247 -0
  28. data/lib/review/book/chapter.rb +81 -0
  29. data/lib/review/book/compilable.rb +163 -0
  30. data/lib/review/book/index.rb +339 -0
  31. data/lib/review/book/page_metric.rb +38 -0
  32. data/lib/review/book/parameters.rb +97 -0
  33. data/lib/review/book/part.rb +44 -0
  34. data/lib/review/book/volume.rb +65 -0
  35. data/lib/review/builder.rb +34 -40
  36. data/lib/review/compiler.rb +32 -13
  37. data/lib/review/configure.rb +38 -0
  38. data/lib/review/ewbbuilder.rb +23 -21
  39. data/lib/review/extentions.rb +3 -0
  40. data/lib/review/extentions/object.rb +9 -0
  41. data/lib/review/{compat.rb → extentions/string.rb} +11 -0
  42. data/lib/review/htmlbuilder.rb +162 -74
  43. data/lib/review/htmlutils.rb +28 -1
  44. data/lib/review/i18n.yaml +11 -0
  45. data/lib/review/idgxmlbuilder.rb +119 -35
  46. data/lib/review/inaobuilder.rb +355 -0
  47. data/lib/review/latexbuilder.rb +133 -59
  48. data/lib/review/latexutils.rb +15 -6
  49. data/lib/review/makerhelper.rb +59 -0
  50. data/lib/review/markdownbuilder.rb +129 -0
  51. data/lib/review/preprocessor.rb +20 -7
  52. data/lib/review/review.tex.erb +250 -0
  53. data/lib/review/textutils.rb +28 -3
  54. data/lib/review/tocparser.rb +20 -12
  55. data/lib/review/tocprinter.rb +7 -3
  56. data/lib/review/topbuilder.rb +44 -27
  57. data/lib/review/version.rb +3 -0
  58. data/review.gemspec +20 -117
  59. data/test/book_test_helper.rb +35 -0
  60. data/test/sample-book/README.md +5 -0
  61. data/test/sample-book/src/CHAPS +2 -0
  62. data/test/sample-book/src/PREDEF +1 -0
  63. data/test/sample-book/src/Rakefile +26 -0
  64. data/test/sample-book/src/_cover.html +3 -0
  65. data/test/sample-book/src/ch01.re +71 -0
  66. data/test/sample-book/src/ch02.re +3 -0
  67. data/test/sample-book/src/config.yml +55 -0
  68. data/test/sample-book/src/images/ch01-imgsample.jpg +0 -0
  69. data/test/sample-book/src/images/cover.jpg +0 -0
  70. data/test/sample-book/src/main.css +251 -0
  71. data/test/sample-book/src/preface.re +15 -0
  72. data/test/sample-book/src/sty/jumoline.sty +310 -0
  73. data/test/sample-book/src/sty/samplemacro.sty +21 -0
  74. data/test/sample-book/src/vendor/jumoline/README +29 -0
  75. data/test/sample-book/src/vendor/jumoline/jumoline.dtx +2988 -0
  76. data/test/sample-book/src/vendor/jumoline/jumoline.ins +6 -0
  77. data/test/test_book.rb +26 -646
  78. data/test/test_book_chapter.rb +418 -0
  79. data/test/test_book_parameter.rb +42 -0
  80. data/test/test_book_part.rb +53 -0
  81. data/test/test_builder.rb +17 -10
  82. data/test/test_compiler.rb +46 -0
  83. data/test/test_epubmaker.rb +1 -1
  84. data/test/test_epubmaker_cmd.rb +36 -0
  85. data/test/test_helper.rb +17 -0
  86. data/test/test_htmlbuilder.rb +156 -24
  87. data/test/test_htmlutils.rb +4 -0
  88. data/test/test_i18n.rb +6 -2
  89. data/test/test_idgxmlbuilder.rb +33 -11
  90. data/test/test_inaobuilder.rb +247 -0
  91. data/test/test_index.rb +31 -0
  92. data/test/test_latexbuilder.rb +115 -35
  93. data/test/test_makerhelper.rb +50 -0
  94. data/test/test_pdfmaker_cmd.rb +36 -0
  95. data/test/test_preprocessor.rb +7 -7
  96. data/test/test_topbuilder.rb +6 -7
  97. data/test/test_uuid.rb +1 -0
  98. metadata +117 -12
  99. data/lib/review/index.rb +0 -323
  100. data/lib/review/volume.rb +0 -66
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+ require 'review/book'
3
+
4
+ require 'stringio'
5
+ require 'tempfile'
6
+ require 'tmpdir'
7
+
8
+ include ReVIEW
9
+
10
+ module BookTestHelper
11
+ def mktmpbookdir(files = {})
12
+ created_files = {}
13
+ Dir.mktmpdir do |dir|
14
+ files.each_pair do |basename, content|
15
+ path = File.join(dir, basename)
16
+ File.open(path, 'w') {|o| o.print content }
17
+ created_files[basename] = path
18
+ end
19
+ book = Book::Base.new(dir)
20
+ yield(dir, book, created_files)
21
+ end
22
+ end
23
+
24
+ def get_instance_variables(obj)
25
+ obj.instance_variables.inject({}) do |memo, name|
26
+ value = obj.instance_variable_get(name)
27
+ if value.instance_variables.empty?
28
+ memo[name] = value
29
+ else
30
+ memo[name] = get_instance_variables(value)
31
+ end
32
+ memo
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,5 @@
1
+ # ReVIEWサンプル書籍データ
2
+
3
+ ReVIEW ( http://github.com/kmuto/review )で書籍データを作るためのサンプルファイルです。
4
+
5
+ 必要なファイルはsrc/ディレクトリ内にあります。srcディレクトリで「review-epubmaker config.yml」と実行すればEPUBが、「review-pdfmaker config.yml」とすればPDFが生成されます(PDFの生成にはpLaTeXとdvipdfmxが必要です)。
@@ -0,0 +1,2 @@
1
+ ch01.re
2
+ ch02.re
@@ -0,0 +1 @@
1
+ preface.re
@@ -0,0 +1,26 @@
1
+ require 'fileutils'
2
+
3
+ def build(mode, chapter)
4
+ sh "review-compile --target=#{mode} --footnotetext --singledirmode --stylesheet=style.css #{chapter} > tmp"
5
+ mode_ext = {"html" => "html", "latex" => "tex",
6
+ "idgxml" => "xml", "inao" => "inao"}
7
+ FileUtils.mv "tmp", chapter.gsub(/re\z/, mode_ext[mode])
8
+ end
9
+
10
+ def build_all(mode)
11
+ sh "review-compile --all --target=#{mode} --footnotetext --singledirmode --stylesheet=style.css"
12
+ end
13
+
14
+ desc "build html (Usage: rake build re=target.re)"
15
+ task :html do
16
+ if ENV['re'].nil?
17
+ puts "Usage: rake build re=target.re"
18
+ exit
19
+ end
20
+ build("html", ENV['re'])
21
+ end
22
+
23
+ desc "build all html"
24
+ task :html_all do
25
+ build_all("html")
26
+ end
@@ -0,0 +1,3 @@
1
+ <div id="cover-image" style="img { max-width:100%; }">
2
+ <img src="images/cover.jpg" alt="cover"/>
3
+ </div>
@@ -0,0 +1,71 @@
1
+ = サンプル
2
+
3
+ //lead{
4
+ 書き方のサンプルです。上書きするなりして消して下さい。
5
+ //}
6
+
7
+ == 本文の書き方
8
+
9
+ 最初の段落です。
10
+ この行も同じ段落です。
11
+
12
+ 次の段落です。
13
+
14
+
15
+
16
+ 2行以上以上空いていても1行空いているのと同様に処理します。
17
+
18
+ === 見出し
19
+
20
+ 「=」「==」「===」の後に一文字空白をあけると見出しになります。
21
+
22
+
23
+ ====[column] コラムについて
24
+
25
+ 見出しの先頭に「[column]」と書くと、そこはコラムになります。
26
+
27
+ == 箇条書き
28
+
29
+ 番号のない箇条書きは「*」を使います。前後に空白を入れて下さい。
30
+
31
+ * 1つ目
32
+ * 2つ目
33
+ * 3つ目
34
+
35
+ 番号つきの箇条書きには、「1.」「2.」などと書きます。
36
+ 数字の値は実際には無視され、連番が振られます。
37
+
38
+ 1. 1つ目
39
+ 2. 2つ目
40
+ 3. 3つ目
41
+
42
+ == ソースコードなどのリスト
43
+
44
+ リストには「//list」ブロックや「//emlist」ブロックを使います。
45
+
46
+ //list[list][リストのサンプル]{
47
+ int main(int argc, char **argv) {
48
+ puts("OK");
49
+ return 0;
50
+ }
51
+ //}
52
+
53
+ 文中にリストを書くには「//emlist」になります。
54
+
55
+ //emlist{
56
+ def main
57
+ puts "ok"
58
+ end
59
+ //}
60
+
61
+ == 画像
62
+
63
+ 画像は「//image」ブロックを使います。
64
+
65
+ //image[imgsample][画像サンプル]{
66
+ //}
67
+
68
+
69
+ より詳しくは、
70
+ @<href>{https://github.com/kmuto/review/blob/master/doc/format.rdoc}
71
+ を御覧ください。
@@ -0,0 +1,3 @@
1
+ = サンプルその2
2
+
3
+ 基本はサンプルと同様です。
@@ -0,0 +1,55 @@
1
+ # review-epubmaker向けの設定ファイルの例。
2
+ # yamlファイルをReVIEWファイルのある場所に置き、
3
+ # 「review-epubmaker yamlファイル」を実行すると、<bookname>.epubファイルが
4
+ # 生成されます。
5
+ # このファイルはUTF-8エンコーディングで記述してください。
6
+
7
+ # ブック名(ファイル名になるもの。ASCII範囲の文字を使用)
8
+ bookname: book
9
+ # 書名
10
+ booktitle: ReVIEWサンプル書籍
11
+ # 著者
12
+ aut: 高橋征義
13
+ prt: 達人出版会
14
+ prt_url: http://github.com/takahashim/review-sample-book/
15
+ edt: 高橋征義
16
+ 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: 編集者
26
+ # dsr: デザイナ
27
+ # ill: イラストレータ
28
+ # pht: 撮影者
29
+ # trl: 翻訳者
30
+ # date: 刊行日
31
+ # rights: 権利表記
32
+ # 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ファイルおよびReVIEWファイルを置いたディレクトリにあること
41
+ stylesheet: main.css
42
+ # 目次として抽出するレベル
43
+ toclevel: 2
44
+ # セクション番号を表示するレベル
45
+ secnolevel: 3
46
+ # review-compileに渡すパラメータ
47
+ params: --stylesheet=main.css
48
+ # 目次生成用?
49
+ mytoc: true
50
+ # 奥付生成用
51
+ colophon: true
52
+ texstyle: samplemacro
53
+ pubhistory: |
54
+ 2011年08月03日 v1.0.0版発行
55
+ debug: true
@@ -0,0 +1,251 @@
1
+ @charset "utf-8";
2
+ /* Tatujin-Publishing */
3
+ /* Style sheet for epub */
4
+ /* Ver.0.8b1 */
5
+
6
+ /*
7
+ Scale & Rhythm
8
+ line-height 1.6
9
+ 16px = 1em
10
+ x:p:h1:h2:h3 = 12px:14px:16px:24px:30px
11
+ */
12
+ * {
13
+ }
14
+ body {
15
+ margin: 0;
16
+ padding: 0;
17
+ font-size: 1em;
18
+ line-height:1.6;
19
+ font-family: "ShinGoPro-Regular","ShinGo-Regular", sans-serif;
20
+ /*
21
+ word-break: normal;
22
+ -webkit-line-break: after-white-space;
23
+ */
24
+ }
25
+ p, ul, ol, dl, pre, table {
26
+ font-family: "ShinGo Regular","ShinGo R","新ゴR","新ゴ R", sans-serif;
27
+ font-size: 0.875em;
28
+ }
29
+ /* Heading */
30
+ h1 {
31
+ margin: 0 0 3em;
32
+ padding: 0.5em 0 0;
33
+ border-top: 14px #326450 solid;
34
+ text-align: left;
35
+ font-size: 1.875em;
36
+ font-weight: bold;
37
+ }
38
+ h2 {
39
+ margin: 3em 0 0.5em;
40
+ padding: 0.5em 0 0;
41
+ border-top: 2px #326450 solid;
42
+ text-align: left;
43
+ font-size: 1.5em;
44
+ font-weight: bold;
45
+ }
46
+ h3 {
47
+ margin: 3em 0 0.5em;
48
+ padding: 0;
49
+ text-align: left;
50
+ font-size: 1em;
51
+ font-weight: bold;
52
+ }
53
+ h4, h5, h6 {
54
+ margin:0.7em 0;
55
+ padding: 0;
56
+ text-align: left;
57
+ line-height: 1.6;
58
+ font-weight: bold;
59
+ }
60
+ /* Paragraph */
61
+ p {
62
+ margin:0.7em 0;
63
+ padding: 0;
64
+ text-align: left;
65
+ text-indent: 1em;
66
+ line-height: 1.6;
67
+ }
68
+ div.lead p {
69
+ color: #666;
70
+ line-height: 1.6;
71
+ font-size: 0.75em;
72
+ }
73
+ /* List */
74
+ ul, ol {
75
+ margin: 2em 0 2em 2em;
76
+ padding: 0;
77
+ list-style-position: outside;
78
+ }
79
+ ul > li,
80
+ ol > li {
81
+ margin: 0 0 0.7em 0;
82
+ padding: 0;
83
+ line-height: 1.6;
84
+ }
85
+ dl {
86
+ margin: 2em 0;
87
+ padding: 0;
88
+ }
89
+ dt {
90
+ margin: 0;
91
+ padding: 0;
92
+ font-weight: bold;
93
+ }
94
+ dd {
95
+ margin: 0 0 1em 2em;
96
+ padding: 0;
97
+ line-height: 1.6;
98
+ }
99
+ /* Table
100
+ p.tablecaptionではなく
101
+ table caption {}を使う方が良いかも?
102
+ */
103
+ table {
104
+ margin: 0 auto 2em auto;
105
+ border-collapse: collapse;
106
+ }
107
+ table tr th {
108
+ background-color: #eee;
109
+ border:1px #aaa solid;
110
+ font-size: 0.75em;
111
+ font-weight: normal;
112
+ }
113
+ table tr td {
114
+ padding: 0.3em;
115
+ border:1px #aaa solid;
116
+ font-size: 0.75em;
117
+ }
118
+ p.tablecaption, table caption {
119
+ margin: 0;
120
+ color: #666;
121
+ font-size: 0.75em;
122
+ font-weight: bold;
123
+ text-indent: 0;
124
+ }
125
+ /* Quote */
126
+ blockquote {
127
+ margin: 2em 0 2em 2em;
128
+ padding: 0.3em 1em;
129
+ border: 1px #aaa solid;
130
+ }
131
+ /* Column Block */
132
+ div.column {
133
+ margin: 2em 0 2em 2em;
134
+ padding: 0.3em 1em;
135
+ background-color: #eee;
136
+ -webkit-border-radius: 0.7em;
137
+ }
138
+ div.column *{
139
+ margin:0.7em 0;
140
+ }
141
+ div.column ul,
142
+ div.column ol {
143
+ list-style-position: inside;
144
+ }
145
+ /* Code Block */
146
+ /*
147
+ ※シンプルにできるかも
148
+ div.code {}
149
+ div.code pre.list,
150
+ div.code pre.cmd {}
151
+ div.code p.caption {}
152
+ */
153
+ div.code, div.caption-code, div.source-code, div.emlist-code, div.emlistnum-code {
154
+ margin: 1em 0 2em 2em;
155
+ padding: 0;
156
+ }
157
+ pre.emlist, pre.source, pre.list {
158
+ margin: 0;
159
+ padding: 5px;
160
+ border: 1px #aaa solid;
161
+ }
162
+ div p.caption {
163
+ margin: 0;
164
+ color: #666;
165
+ font-size: 0.75em;
166
+ font-weight: bold;
167
+ }
168
+ div.cmd-code pre.cmd {
169
+ margin: 0;
170
+ padding: 5px;
171
+ color: #ccc;
172
+ font-weight: bold;
173
+ background-color: #444;
174
+ -webkit-border-radius: 0.5em;
175
+ }
176
+ pre.cmd, pre.emlist, pre.list, pre.source {
177
+ white-space: pre-wrap;
178
+ }
179
+
180
+ /* Image Block */
181
+ /* div.image p.caption {}
182
+ ※captionをそろえた方が良いかも?*/
183
+ div.image {
184
+ margin: 2em auto;
185
+ padding: 0;
186
+ }
187
+ div.image img {
188
+ margin: 0 auto;
189
+ padding: 0;
190
+ display: block;
191
+ }
192
+ div.image p.caption {
193
+ margin: 0 auto;
194
+ text-align: center;
195
+ color: #666;
196
+ font-size: 0.75em;
197
+ font-weight: bold;
198
+ text-indent: 0;
199
+ }
200
+ /* Footnote Block */
201
+ /* p.footnoteはいらないかも? */
202
+ div.footnote {
203
+ }
204
+ div.footnote p.footnote {
205
+ color: #666;
206
+ line-height: 1.6;
207
+ font-size: 0.75em;
208
+ text-indent: 0;
209
+ }
210
+ /* Colophon */
211
+ div.colophon {
212
+ margin: 3em auto;
213
+ }
214
+ div.colophon p {
215
+ text-indent: 0;
216
+ }
217
+ div.colophon p.title {
218
+ font-size: 1.5em;
219
+ }
220
+ div.colophon table {
221
+ margin: 1em 0 2em;
222
+ border: none;
223
+ }
224
+ div.colophon table tr th {
225
+ background-color: #fff;
226
+ font-size: 1.2em;
227
+ font-weight: normal;
228
+ border: none;
229
+ }
230
+ div.colophon table tr td {
231
+ font-size: 1.2em;
232
+ font-weight: normal;
233
+ border: none;
234
+ }
235
+
236
+ /* Inline */
237
+ a[href],
238
+ a:link,
239
+ a:visited {
240
+ border-bottom: 1px dotted #531084;
241
+ text-decoration: none;
242
+ }
243
+ b {
244
+ font-weight: bold;
245
+ }
246
+ strong{
247
+ font-weight: bold;
248
+ }
249
+ em {
250
+ font-style: italic;
251
+ }