review 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }