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,280 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'book_test_helper'
3
+ class ChapterTest < Test::Unit::TestCase
4
+ include BookTestHelper
5
+
6
+ def test_initialize
7
+ ch = Book::Chapter.new(:book, :number, :name, '/foo/bar', :io)
8
+ assert_equal :book, ch.book
9
+ assert_equal :number, ch.number
10
+ assert_equal '/foo/bar', ch.path
11
+ assert_equal "#<ReVIEW::Book::Chapter number /foo/bar>", ch.inspect
12
+ end
13
+
14
+ def test_dirname_and_basename
15
+ ch = Book::Chapter.new(nil, nil, nil, nil, nil)
16
+ assert_equal nil, ch.dirname
17
+ assert_equal nil, ch.basename
18
+
19
+ ch = Book::Chapter.new(nil, nil, nil, '/foo/bar', nil)
20
+ assert_equal '/foo', ch.dirname
21
+ assert_equal 'bar', ch.basename
22
+
23
+ ch = Book::Chapter.new(nil, nil, nil, 'bar', nil)
24
+ assert_equal '.', ch.dirname
25
+ assert_equal 'bar', ch.basename
26
+ end
27
+
28
+ def test_name
29
+ ch = Book::Chapter.new(nil, nil, 'foo', nil)
30
+ assert_equal 'foo', ch.name
31
+
32
+ ch = Book::Chapter.new(nil, nil, 'foo.bar', nil)
33
+ assert_equal 'foo', ch.name
34
+
35
+ # ch = Book::Chapter.new(nil, nil, nil, nil)
36
+ # assert_raises(TypeError) { ch.name } # XXX: OK?
37
+ end
38
+
39
+ def test_open
40
+ ch = Book::Chapter.new(nil, nil, nil, __FILE__, :io)
41
+ assert_equal :io, ch.open
42
+ assert_equal [:io], ch.open {|io| [io] }
43
+
44
+ ch = Book::Chapter.new(nil, nil, nil, __FILE__)
45
+ assert_equal __FILE__, ch.open.path
46
+ assert_equal [__FILE__], ch.open {|io| [io.path] }
47
+ end
48
+
49
+ def test_size
50
+ ch = Book::Chapter.new(nil, nil, nil, __FILE__, :io)
51
+ assert_equal File.size(__FILE__), ch.size
52
+
53
+ File.open(__FILE__, 'r') do |i|
54
+ ch = Book::Chapter.new(nil, nil, nil, nil, i)
55
+ assert_raises(TypeError) do # XXX: OK?
56
+ ch.size
57
+ end
58
+ end
59
+ end
60
+
61
+ def test_title
62
+ io = StringIO.new
63
+ book = Book::Base.new(nil)
64
+ ch = Book::Chapter.new(book, nil, nil, nil, io)
65
+ assert_equal '', ch.title
66
+
67
+ io = StringIO.new("=1\n=2\n")
68
+ ch = Book::Chapter.new(book, nil, nil, nil, io)
69
+ assert_equal '1', ch.title
70
+ end
71
+
72
+ def test_lines
73
+ lines = ["1\n", "2\n", "3"]
74
+ tf = Tempfile.new('chapter_test')
75
+ tf.print lines.join('')
76
+ tf.close
77
+
78
+ book = Book::Base.new(nil)
79
+ ch = Book::Chapter.new(book, nil, nil, tf.path)
80
+ assert_equal lines, ch.lines
81
+
82
+ lines = ["1\n", "2\n", "3"]
83
+ tf1 = Tempfile.new('chapter_test1')
84
+ tf1.print lines.join('')
85
+ tf1.close
86
+ tf2 = Tempfile.new('chapter_test2')
87
+ tf2.puts lines.join('')
88
+ tf2.puts lines.join('')
89
+ tf2.close
90
+
91
+ ch = Book::Chapter.new(book, nil, nil, tf1.path, tf2.path)
92
+ assert_equal lines, ch.lines # XXX: OK?
93
+ end
94
+
95
+ def test_volume
96
+ content = "abc\ndef"
97
+ tf1 = Tempfile.new('chapter_test1')
98
+ tf1.print content
99
+ tf1.close
100
+ tf2 = Tempfile.new('chapter_test2')
101
+ tf2.print content
102
+ tf2.print content
103
+ tf2.close
104
+
105
+ book = Book::Base.new(nil)
106
+ ch = Book::Chapter.new(book, nil, nil, tf1.path)
107
+ assert ch.volume
108
+ assert_equal content.gsub(/\s/, '').size, ch.volume.bytes
109
+
110
+ book = Book::Base.new(nil)
111
+ ch = Book::Chapter.new(book, nil, nil, tf1.path, tf2)
112
+ assert ch.volume
113
+ assert_equal content.gsub(/\s/, '').size, ch.volume.bytes # XXX: OK?
114
+ end
115
+
116
+ def test_on_CHAPS?
117
+ mktmpbookdir 'CHAPS' => "chapter1.re\nchapter2.re",
118
+ 'chapter1.re' => '12345', 'preface.re' => 'abcde' do |dir, book, files|
119
+ ch1 = Book::Chapter.new(book, 1, 'chapter1', files['chapter1.re'])
120
+ pre = Book::Chapter.new(book, nil, 'preface', files['preface.re'])
121
+
122
+ assert ch1.on_CHAPS?
123
+ assert !pre.on_CHAPS?
124
+
125
+ ch2_path = File.join(dir, 'chapter2.er')
126
+ File.open(ch2_path, 'w') {}
127
+ ch2 = Book::Chapter.new(book, 2, 'chapter2', ch2_path)
128
+
129
+ ch3_path = File.join(dir, 'chapter3.er')
130
+ File.open(ch3_path, 'w') {}
131
+ ch3 = Book::Chapter.new(book, 3, 'chapter3', ch3_path)
132
+
133
+ assert ch2.on_CHAPS?
134
+ assert !ch3.on_CHAPS?
135
+ end
136
+ end
137
+
138
+ def test_list_index
139
+ do_test_index(<<E, Book::ListIndex, :list_index, :list)
140
+ //list
141
+ //listnum [abc]
142
+ //list [def]
143
+ //table [def]
144
+ //table [others]
145
+ E
146
+ end
147
+
148
+ def test_table_index
149
+ do_test_index(<<E, Book::TableIndex, :table_index, :table)
150
+ //table
151
+ //table [abc]
152
+ //table [def]
153
+ //list [def]
154
+ //list [others]
155
+ E
156
+ end
157
+
158
+ def test_footnote_index
159
+ content = <<E
160
+ //footnote
161
+ //footnote [abc][text...]
162
+ //footnote [def][text...]
163
+ //footnote [xyz]
164
+ //list [def]
165
+ //list [others]
166
+ E
167
+ do_test_index(content, Book::FootnoteIndex, :footnote_index, :footnote) do |ch|
168
+ assert_raises ReVIEW::KeyError do
169
+ ch.footnote('xyz')
170
+ end
171
+ end
172
+ end
173
+
174
+ def test_bibpaper
175
+ do_test_index(<<E, Book::BibpaperIndex, :bibpaper_index, :bibpaper, :filename => 'bib.re')
176
+ //bibpaper
177
+ //bibpaper [abc][text...]
178
+ //bibpaper [def][text...]
179
+ //bibpaper [xyz]
180
+ //list [def]
181
+ //list [others]
182
+ E
183
+ assert_raises FileNotFound do
184
+ do_test_index('', Book::BibpaperIndex, :bibpaper_index, :bibpaper, :filename => 'bib')
185
+ end
186
+ end
187
+
188
+ def test_headline_index
189
+ do_test_index(<<E, Book::HeadlineIndex, :headline_index, :headline, :propagate => false)
190
+ ==
191
+ == abc
192
+ == def
193
+ === def
194
+ //table others
195
+ E
196
+ end
197
+
198
+
199
+ def test_headline_index_nullsection
200
+ do_test_index(<<E, Book::HeadlineIndex, :headline_index, :headline, :propagate => false)
201
+ == abc
202
+ ==== dummy
203
+ == def
204
+ E
205
+ end
206
+
207
+
208
+ def test_column_index
209
+ book = Book::Base.new(nil)
210
+ do_test_index(<<E, Book::ColumnIndex, :column_index, :column, :propagate => false)
211
+ = dummy1
212
+ ===[column]{abc} aaaa
213
+ = dummy2
214
+ ===[column] def
215
+ == dummy3
216
+ E
217
+ end
218
+
219
+ def test_image
220
+ do_test_index(<<E, Book::ImageIndex, :image_index, :image)
221
+ //image
222
+ //image [abc]
223
+ //image [def]
224
+ //list [def]
225
+ //list [others]
226
+ E
227
+
228
+ do_test_index(<<E, Book::NumberlessImageIndex, :numberless_image_index, :image, :propagate => false)
229
+ //numberlessimage
230
+ //numberlessimage [abc]
231
+ //numberlessimage [def]
232
+ //list [def]
233
+ //list [others]
234
+ E
235
+
236
+ do_test_index(<<E, Book::ImageIndex, :image_index, :image)
237
+ //image
238
+ //numberlessimage [abc]
239
+ //image [def]
240
+ //list [def]
241
+ //list [others]
242
+ E
243
+
244
+ do_test_index(<<E, Book::NumberlessImageIndex, :numberless_image_index, :image, :propagate => false)
245
+ //image
246
+ //numberlessimage [abc]
247
+ //image [def]
248
+ //list [def]
249
+ //list [others]
250
+ E
251
+ end
252
+
253
+ def do_test_index(content, klass, list_method, ref_method, opts = {})
254
+ Dir.mktmpdir do |dir|
255
+ path = File.join(dir, opts[:filename] || 'chapter.re')
256
+
257
+ book = Book::Base.new(dir)
258
+
259
+ ch = nil
260
+ File.open(path, 'w') do |o|
261
+ o.print content
262
+ ch = Book::Chapter.new(book, 1, 'chapter', o.path)
263
+ end
264
+
265
+ assert ch.__send__(ref_method, 'abc')
266
+ assert ch.__send__(ref_method, 'def')
267
+ assert_raises ReVIEW::KeyError do
268
+ ch.__send__(ref_method, nil)
269
+ end
270
+ assert_raises ReVIEW::KeyError do
271
+ ch.__send__(ref_method, 'others')
272
+ end
273
+ assert_raises ReVIEW::KeyError do
274
+ ch.__send__(ref_method, 'not exist id')
275
+ end
276
+
277
+ yield(ch) if block_given?
278
+ end
279
+ end
280
+ end
@@ -0,0 +1,54 @@
1
+ require 'book_test_helper'
2
+ class PartTest < Test::Unit::TestCase
3
+ include BookTestHelper
4
+
5
+ def test_initialize
6
+ part = Book::Part.new(nil, nil, nil)
7
+ assert_equal nil, part.number
8
+ assert_equal nil, part.chapters
9
+ assert_equal '', part.name
10
+
11
+ part = Book::Part.new(nil, 123, [], 'name')
12
+ assert_equal 123, part.number
13
+ assert_equal [], part.chapters
14
+ assert_equal 'name', part.name
15
+ end
16
+
17
+ def test_each_chapter
18
+ part = Book::Part.new(nil, nil, [1, 2, 3])
19
+
20
+ tmp = []
21
+ part.each_chapter do |ch|
22
+ tmp << ch
23
+ end
24
+ assert_equal [1, 2, 3], tmp
25
+ end
26
+
27
+ def test_volume
28
+ book = Book::Base.new(nil)
29
+ part = Book::Part.new(book, nil, [])
30
+ assert part.volume
31
+ assert_equal 0, part.volume.bytes
32
+ assert_equal 0, part.volume.chars
33
+ assert_equal 0, part.volume.lines
34
+
35
+ chs = []
36
+ tfs = [] ## prevent from removing Tempfile
37
+ Tempfile.open('part_test') do |o|
38
+ o.print "12345"
39
+ chs << Book::Chapter.new(book, nil, nil, o.path)
40
+ tfs << o
41
+ end
42
+ Tempfile.open('part_test') do |o|
43
+ o.print "67890"
44
+ chs << Book::Chapter.new(book, nil, nil, o.path)
45
+ tfs << o
46
+ end
47
+
48
+ part = Book::Part.new(book, nil, chs)
49
+ assert part.volume
50
+ assert part.volume.bytes > 0
51
+ assert part.volume.chars > 0
52
+ assert part.volume.lines > 0
53
+ end
54
+ end
@@ -0,0 +1,80 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+ require 'review/builder'
5
+
6
+ require 'review/book'
7
+
8
+ class MockCompiler
9
+ def text(s)
10
+ [:text, s]
11
+ end
12
+ end
13
+
14
+ class BuidlerTest < Test::Unit::TestCase
15
+ include ReVIEW
16
+
17
+ def setup
18
+ @b = Builder.new
19
+ chap = ReVIEW::Book::Chapter.new(nil, nil, '-', nil)
20
+ @b.bind(MockCompiler.new, chap, nil)
21
+ end
22
+
23
+ def test_initialize
24
+ assert Builder.new
25
+ end
26
+
27
+ def test_bind
28
+ b = Builder.new
29
+ chap = ReVIEW::Book::Chapter.new(ReVIEW::Book::Base.load, nil, '-', nil)
30
+ assert_nothing_raised do
31
+ b.bind(nil, chap, nil)
32
+ end
33
+ end
34
+
35
+ def test_result
36
+ b = Builder.new
37
+ assert_raises(NoMethodError) do # XXX: OK?
38
+ b.result
39
+ end
40
+
41
+ b = Builder.new
42
+ chapter = ReVIEW::Book::Chapter.new(ReVIEW::Book::Base.load, nil, '-', nil)
43
+ b.bind(nil, chapter, nil)
44
+ assert_equal '', b.result
45
+ end
46
+
47
+ def test_not_implemented_methods
48
+ ex = NoMethodError # XXX: OK?
49
+ [
50
+ :list_header, :list_body, :listnum_body,
51
+ :source_header, :source_body,
52
+ :image_image, :image_dummy,
53
+ :table_header, :table_begin, :tr, :th, :table_end,
54
+ :compile_ruby, :compile_kw, :compile_href,
55
+ :bibpaper_header, :bibpaper_bibpaper,
56
+ :inline_hd_chap,
57
+ ].each do |m|
58
+ b = Builder.new
59
+ assert_raises(ex) { b.__send__(m) }
60
+ end
61
+ end
62
+
63
+ class XBuilder < Builder
64
+ def list_header(id, caption)
65
+ end
66
+
67
+ def list_body(lines)
68
+ end
69
+
70
+ def listnum_body(lines)
71
+ end
72
+
73
+ def source_header(caption)
74
+ end
75
+
76
+ def source_body(lines)
77
+ end
78
+ end
79
+ end
80
+
@@ -0,0 +1,119 @@
1
+ require 'test_helper'
2
+ require 'review/catalog'
3
+
4
+ class CatalogTest < Test::Unit::TestCase
5
+ include ReVIEW
6
+
7
+ def test_predef
8
+ sut = Catalog.new(yaml)
9
+ exp =<<-EOS
10
+ pre01.re
11
+ pre02.re
12
+ EOS
13
+ assert_equal(exp.chomp, sut.predef)
14
+ end
15
+
16
+ def test_chaps
17
+ sut = Catalog.new(yaml)
18
+ exp =<<-EOS
19
+ ch01.re
20
+ ch02.re
21
+ EOS
22
+ assert_equal(exp.chomp, sut.chaps)
23
+ end
24
+
25
+ def test_chaps_empty
26
+ yaml = StringIO.new
27
+ sut = Catalog.new(yaml)
28
+ assert_equal("", sut.chaps)
29
+ end
30
+
31
+ def test_appendix
32
+ sut = Catalog.new(yaml)
33
+ exp =<<-EOS
34
+ post01.re
35
+ post02.re
36
+ EOS
37
+ assert_equal(exp.chomp, sut.appendix)
38
+ end
39
+
40
+ def test_chaps_with_parts
41
+ sut = Catalog.new(yaml_with_parts)
42
+ exp =<<-EOS
43
+ ch01.re
44
+ ch02.re
45
+ ch03.re
46
+ ch04.re
47
+ ch05.re
48
+ EOS
49
+ assert_equal(exp.chomp, sut.chaps)
50
+ end
51
+
52
+ def test_parts
53
+ sut = Catalog.new(yaml_with_parts)
54
+ exp =<<-EOS
55
+ part1.re
56
+ part2.re
57
+ EOS
58
+ assert_equal(exp.chomp, sut.parts)
59
+ end
60
+
61
+ def test_parts_with_empty
62
+ sut = Catalog.new(yaml)
63
+ assert_equal("", sut.parts)
64
+ end
65
+
66
+ def test_parts2
67
+ sut = Catalog.new(yaml_with_parts)
68
+ assert_equal(["ch01.re",
69
+ {"part1.re" => ["ch02.re"]},
70
+ "ch03.re",
71
+ {"part2.re" => ["ch04.re", "ch05.re"]}],
72
+ sut.parts_with_chaps)
73
+ end
74
+
75
+ def test_postdef
76
+ sut = Catalog.new(yaml)
77
+ exp =<<-EOS
78
+ back01.re
79
+ back02.re
80
+ EOS
81
+ assert_equal(exp.chomp, sut.postdef)
82
+ end
83
+
84
+ private
85
+ def yaml
86
+ StringIO.new <<-EOS
87
+
88
+ PREDEF:
89
+ - pre01.re
90
+ - pre02.re
91
+
92
+ CHAPS:
93
+ - ch01.re
94
+ - ch02.re
95
+
96
+ APPENDIX:
97
+ - post01.re
98
+ - post02.re
99
+
100
+ POSTDEF:
101
+ - back01.re
102
+ - back02.re
103
+ EOS
104
+ end
105
+
106
+ def yaml_with_parts
107
+ StringIO.new <<-EOS
108
+ CHAPS:
109
+ - ch01.re
110
+ - part1.re:
111
+ - ch02.re
112
+ - ch03.re
113
+ - part2.re:
114
+ - ch04.re
115
+ - ch05.re
116
+
117
+ EOS
118
+ end
119
+ end