rpub 0.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 (61) hide show
  1. data/.gitignore +8 -0
  2. data/.rspec +5 -0
  3. data/.travis.yml +5 -0
  4. data/.yardopts +6 -0
  5. data/Gemfile +2 -0
  6. data/Gemfile.lock +51 -0
  7. data/Guardfile +5 -0
  8. data/HISTORY.md +5 -0
  9. data/LICENSE +0 -0
  10. data/README.md +182 -0
  11. data/Rakefile +11 -0
  12. data/bin/rpub +6 -0
  13. data/example/advanced/README +1 -0
  14. data/example/advanced/config.yml +11 -0
  15. data/example/advanced/layout.html +0 -0
  16. data/example/advanced/styles.css +0 -0
  17. data/example/simple/01-introduction.md +3 -0
  18. data/example/simple/02-foo.md +4 -0
  19. data/example/simple/03-bar.md +4 -0
  20. data/example/simple/config.yml +8 -0
  21. data/lib/rpub.rb +53 -0
  22. data/lib/rpub/book.rb +70 -0
  23. data/lib/rpub/chapter.rb +84 -0
  24. data/lib/rpub/commander.rb +14 -0
  25. data/lib/rpub/commands/base.rb +33 -0
  26. data/lib/rpub/commands/clean.rb +55 -0
  27. data/lib/rpub/commands/compile.rb +56 -0
  28. data/lib/rpub/commands/help.rb +37 -0
  29. data/lib/rpub/commands/main.rb +45 -0
  30. data/lib/rpub/commands/package.rb +45 -0
  31. data/lib/rpub/commands/preview.rb +56 -0
  32. data/lib/rpub/compilation_helpers.rb +43 -0
  33. data/lib/rpub/compressor.rb +46 -0
  34. data/lib/rpub/epub.rb +37 -0
  35. data/lib/rpub/epub/container.rb +14 -0
  36. data/lib/rpub/epub/content.rb +80 -0
  37. data/lib/rpub/epub/cover.rb +27 -0
  38. data/lib/rpub/epub/html_toc.rb +25 -0
  39. data/lib/rpub/epub/toc.rb +35 -0
  40. data/lib/rpub/hash_delegation.rb +23 -0
  41. data/lib/rpub/subclass_tracker.rb +53 -0
  42. data/lib/rpub/version.rb +3 -0
  43. data/lib/rpub/xml_file.rb +14 -0
  44. data/rpub.gemspec +52 -0
  45. data/spec/fixtures/clean/config.yml +2 -0
  46. data/spec/fixtures/clean/example.epub +0 -0
  47. data/spec/fixtures/clean/preview.html +0 -0
  48. data/spec/fixtures/no_files/config.yml +0 -0
  49. data/spec/fixtures/preview/a.md +1 -0
  50. data/spec/fixtures/preview/b.md +1 -0
  51. data/spec/fixtures/preview/config.yml +2 -0
  52. data/spec/rpub/book_spec.rb +62 -0
  53. data/spec/rpub/chapter_spec.rb +61 -0
  54. data/spec/rpub/commands/clean_spec.rb +46 -0
  55. data/spec/rpub/commands/main_spec.rb +26 -0
  56. data/spec/rpub/commands/preview_spec.rb +42 -0
  57. data/spec/rpub_spec.rb +7 -0
  58. data/spec/spec_helper.rb +21 -0
  59. data/support/layout.html +22 -0
  60. data/support/styles.css +66 -0
  61. metadata +310 -0
@@ -0,0 +1,2 @@
1
+ ---
2
+ title: foo
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rpub::Book do
4
+ let(:subject) { described_class.new('some_file', 'title' => 'My "Awesome" Title!', 'version' => '1.0.3') }
5
+
6
+ it 'should start with an empty configuration' do
7
+ described_class.new('some_file').config.should == {}
8
+ end
9
+
10
+ it { should respond_to(:title) }
11
+ its(:title) { should == 'My "Awesome" Title!' }
12
+ its(:filename) { should == 'my-awesome-title-1.0.3.epub' }
13
+
14
+ describe 'chapters' do
15
+ before { subject.add_chapter 'foo' }
16
+
17
+ it { should have(1).chapters }
18
+
19
+ it { should be_kind_of(Enumerable) }
20
+
21
+ it 'should start with no chapters' do
22
+ described_class.new('foo').should have(0).chapters
23
+ end
24
+
25
+ it 'should allow chaining multiple calls' do
26
+ subject << 'foo' << 'bar'
27
+ subject.should have(3).chapters
28
+ end
29
+
30
+ it 'should yield chapters' do
31
+ yielded = false
32
+ subject.each { |c| yielded = true }
33
+ yielded.should be_true
34
+ end
35
+ end
36
+
37
+ describe '#uid' do
38
+ it 'should change when chapters change' do
39
+ Rpub::Book.new('bar').add_chapter('foo').should_not == subject.uid
40
+ end
41
+
42
+ it 'should change when config changes' do
43
+ Rpub::Book.new('bar', 'baz' => 'qux').should_not == subject.uid
44
+ end
45
+ end
46
+
47
+ describe '#images' do
48
+ before { subject << '![foo](bar)' << '![baz](qux)' << '![bla](qux)' }
49
+ it { should have(2).images }
50
+ its(:images) { should include('bar') }
51
+ its(:images) { should include('qux') }
52
+ end
53
+
54
+ describe '#outline' do
55
+ before { subject << '# foo' << '## bar' }
56
+ its(:outline) { should have(2).elements }
57
+ it 'should combine chapter outlines' do
58
+ subject.outline.first[0].should == 'chapter-0-foo.html'
59
+ subject.outline.first[1][0].text.should == 'foo'
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rpub::Chapter do
4
+ let(:subject) { described_class.new('foo', 1, 'document') }
5
+
6
+ its(:content) { should == 'foo' }
7
+ its(:number) { should == 1 }
8
+ its(:layout) { should == 'document' }
9
+
10
+ describe '#uid' do
11
+ it 'should change when content changes' do
12
+ subject.uid.should_not == described_class.new('bar', 1, 'bar').uid
13
+ end
14
+
15
+ it 'should change when layout changes' do
16
+ subject.uid.should_not == described_class.new('foo', 1, 'qux').uid
17
+ end
18
+
19
+ it 'should change when content changes' do
20
+ subject.uid.should_not == described_class.new('foo', 2, 'bar').uid
21
+ end
22
+ end
23
+
24
+ describe '#id' do
25
+ its(:id) { should == 'chapter-1' }
26
+ end
27
+
28
+ describe '#filename' do
29
+ its(:filename) { should == 'chapter-1-untitled.html' }
30
+ end
31
+
32
+ describe '#title' do
33
+ context 'without a suitable markdown title' do
34
+ its(:title) { should == 'untitled' }
35
+ end
36
+
37
+ context 'with a markdown heading' do
38
+ let(:subject) { described_class.new('# My Title', 1, 'bar') }
39
+ its(:title) { should == 'My Title' }
40
+ end
41
+ end
42
+
43
+ describe 'markdown parsing' do
44
+ let(:subject) { described_class.new('foo', 1, nil) }
45
+ its(:to_html) { should == "<p>foo</p>\n" }
46
+ end
47
+
48
+ describe '#images' do
49
+ let(:subject) { described_class.new('![alt](foo.png)', 1, 'document') }
50
+
51
+ it { should have(1).images }
52
+ its('images.first') { should == 'foo.png' }
53
+ end
54
+
55
+ describe '#outline' do
56
+ let(:subject) { described_class.new("# foo\n\nbla bla bla \n\n## bar\n\n# baz", 1, nil) }
57
+ it 'should list headings in order' do
58
+ subject.outline.map(&:text).should == %w[foo bar baz]
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rpub::Commands::Clean do
4
+ before do
5
+ Dir.chdir File.join(FIXTURES_DIRECTORY, 'clean')
6
+ end
7
+
8
+ after do
9
+ FileUtils.touch 'preview.html'
10
+ FileUtils.touch 'example.epub'
11
+ end
12
+
13
+ it 'should remove example.epub file' do
14
+ expect {
15
+ described_class.new.invoke
16
+ }.to remove_file('example.epub')
17
+ end
18
+
19
+ it 'should remove preview.html file' do
20
+ expect {
21
+ described_class.new.invoke
22
+ }.to remove_file('preview.html')
23
+ end
24
+
25
+ context 'when in dry run mode' do
26
+ let(:buffer) { StringIO.new }
27
+ let(:subject) { described_class.new(['-d'], buffer) }
28
+
29
+ it 'should print preview.html' do
30
+ subject.invoke
31
+ buffer.string.should include('preview.html')
32
+ end
33
+
34
+ it 'should not print non-existant files' do
35
+ FileUtils.rm 'preview.html'
36
+ subject.invoke
37
+ buffer.string.should_not include('preview.html')
38
+ end
39
+
40
+ it 'should not remove existing files' do
41
+ expect {
42
+ subject.invoke
43
+ }.to_not remove_file('preview.html')
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rpub::Commands::Main do
4
+ let(:buffer) { StringIO.new }
5
+
6
+ it 'should default to help text' do
7
+ described_class.new([], buffer).invoke
8
+ buffer.string.should =~ /Display command reference/
9
+ end
10
+
11
+ it 'should raise error when a subcommand remains' do
12
+ expect {
13
+ described_class.new(['foo'], buffer).invoke
14
+ }.should raise_error(Rpub::InvalidSubcommand)
15
+ end
16
+
17
+ it 'should print the version number' do
18
+ described_class.new(['-v'], buffer).invoke
19
+ buffer.string.should =~ /rpub \d+\.\d+\.\d+/
20
+ end
21
+
22
+ it 'should print help text' do
23
+ described_class.new(['-h'], buffer).invoke
24
+ buffer.string.should =~ /Display command reference/
25
+ end
26
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rpub::Commands::Preview do
4
+ before do
5
+ Dir.chdir File.join(FIXTURES_DIRECTORY, 'preview')
6
+ end
7
+
8
+ after do
9
+ File.unlink 'preview.html' if File.exist?('preview.html')
10
+ File.unlink 'foo.bar' if File.exist?('foo.bar')
11
+ end
12
+
13
+ context 'generated content' do
14
+ before { Rpub::Commands::Preview.new.invoke }
15
+ let(:subject) { File.read('preview.html') }
16
+
17
+ it { should include('<p>foo</p>') }
18
+ it { should include('<p>bar</p>') }
19
+ it { should match(/foo.*bar/m) }
20
+ it { should match(/<head>/) }
21
+ end
22
+
23
+ it 'should create new preview file' do
24
+ expect {
25
+ Rpub::Commands::Preview.new.invoke
26
+ }.to create_file('preview.html')
27
+ end
28
+
29
+ it 'should do nothing when there are no files to preview' do
30
+ Dir.chdir File.join(FIXTURES_DIRECTORY, 'no_files')
31
+ expect {
32
+ Rpub::Commands::Preview.new.invoke
33
+ }.to_not create_file('preview.html')
34
+ end
35
+
36
+ it 'should allow overriding the filename' do
37
+ expect {
38
+ Rpub::Commands::Preview.new(['-o', 'foo.bar']).invoke
39
+ }.to create_file('foo.bar')
40
+ end
41
+
42
+ end
data/spec/rpub_spec.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rpub do
4
+ it 'should define a version number' do
5
+ Rpub::VERSION.should =~ /\d+\.\d+\.\d+/
6
+ end
7
+ end
@@ -0,0 +1,21 @@
1
+ require 'rpub'
2
+
3
+ FIXTURES_DIRECTORY = File.expand_path('../fixtures', __FILE__)
4
+
5
+ RSpec::Matchers.define :remove_file do |filename|
6
+ match do |block|
7
+ before = File.exist?(filename)
8
+ block.call
9
+ after = File.exist?(filename)
10
+ before && !after
11
+ end
12
+ end
13
+
14
+ RSpec::Matchers.define :create_file do |filename|
15
+ match do |block|
16
+ before = File.exist?(filename)
17
+ block.call
18
+ after = File.exist?(filename)
19
+ !before && after
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <%
6
+ extend ::Kramdown::Utils::Html
7
+ title = ''
8
+ if @converter
9
+ h = @converter.root.children.find {|c| c.type == :header}
10
+ if h
11
+ collector = lambda {|c| c.children.collect {|cc| cc.type == :text ? escape_html(cc.value, :text) : collector.call(cc)}.join('')}
12
+ title = collector.call(h)
13
+ end
14
+ end
15
+ %>
16
+ <title><%= title %></title>
17
+ <link rel="stylesheet" href="styles.css" type="text/css" />
18
+ </head>
19
+ <body>
20
+ <%= @body %>
21
+ </body>
22
+ </html>
@@ -0,0 +1,66 @@
1
+ body {
2
+ margin: 3%;
3
+ font-family: Georgia, serif;
4
+ line-height: 1.4em;
5
+ }
6
+
7
+ h1, h2, h3, h4, h5, h6, p, ul, ol, dl, table, img, pre {
8
+ display: block;
9
+ margin: 1.4em 0;
10
+ }
11
+
12
+ h1, h2, h3, h4, h5, h6 {
13
+ font-family: sans-serif;
14
+ page-break-after: avoid;
15
+ page-break-inside: avoid;
16
+ }
17
+
18
+ h1 {
19
+ margin-bottom: 2.8em;
20
+ page-break-before: always;
21
+ }
22
+
23
+ h2 {
24
+ margin-top: 2.8em;
25
+ }
26
+
27
+ abbr {
28
+ font-size: 86.5%;
29
+ letter-spacing: .1em;
30
+ cursor: help;
31
+ }
32
+
33
+ .footnotes {
34
+ font-family: sans-serif;
35
+ font-size: 86.5%;
36
+ color: #999;
37
+ }
38
+
39
+ .footnotes ol {
40
+ list-style-type: decimal-leading-zero;
41
+ margin: 2.8em 0 1.4em 0;
42
+ padding: 0 0 0 2.2em;
43
+ }
44
+
45
+ pre {
46
+ margin-left: 2em;
47
+ }
48
+
49
+ pre, code, kbd, var, tt, .codeRay, .code {
50
+ font-family: Menlo, monospace;
51
+ font-size: 86.5%;
52
+ color: #333;
53
+ page-break-inside: avoid;
54
+ }
55
+
56
+ .footnotes pre, .footnotes code, .footnotes kbd, .footnotes var, .footnotes tt, .footnotes .codeRay, .footnotes .code {
57
+ color: #888;
58
+ }
59
+
60
+ dt {
61
+ font-style: italic;
62
+ }
63
+
64
+ dd {
65
+ margin: 0 0 0 1.4em;
66
+ }
metadata ADDED
@@ -0,0 +1,310 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rpub
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Arjan van der Gaag
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: typogruby
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: kramdown
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rubyzip
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: builder
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: yard
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rspec
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rake
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: guard
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: guard-rspec
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: rb-fsevent
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: growl
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ description: an ePub generation library in Ruby
191
+ email: arjan@arjanvandergaag.nl
192
+ executables:
193
+ - rpub
194
+ extensions: []
195
+ extra_rdoc_files:
196
+ - LICENSE
197
+ - README.md
198
+ - HISTORY.md
199
+ files:
200
+ - .gitignore
201
+ - .rspec
202
+ - .travis.yml
203
+ - .yardopts
204
+ - Gemfile
205
+ - Gemfile.lock
206
+ - Guardfile
207
+ - HISTORY.md
208
+ - LICENSE
209
+ - README.md
210
+ - Rakefile
211
+ - bin/rpub
212
+ - example/advanced/README
213
+ - example/advanced/config.yml
214
+ - example/advanced/layout.html
215
+ - example/advanced/styles.css
216
+ - example/simple/01-introduction.md
217
+ - example/simple/02-foo.md
218
+ - example/simple/03-bar.md
219
+ - example/simple/config.yml
220
+ - lib/rpub.rb
221
+ - lib/rpub/book.rb
222
+ - lib/rpub/chapter.rb
223
+ - lib/rpub/commander.rb
224
+ - lib/rpub/commands/base.rb
225
+ - lib/rpub/commands/clean.rb
226
+ - lib/rpub/commands/compile.rb
227
+ - lib/rpub/commands/help.rb
228
+ - lib/rpub/commands/main.rb
229
+ - lib/rpub/commands/package.rb
230
+ - lib/rpub/commands/preview.rb
231
+ - lib/rpub/compilation_helpers.rb
232
+ - lib/rpub/compressor.rb
233
+ - lib/rpub/epub.rb
234
+ - lib/rpub/epub/container.rb
235
+ - lib/rpub/epub/content.rb
236
+ - lib/rpub/epub/cover.rb
237
+ - lib/rpub/epub/html_toc.rb
238
+ - lib/rpub/epub/toc.rb
239
+ - lib/rpub/hash_delegation.rb
240
+ - lib/rpub/subclass_tracker.rb
241
+ - lib/rpub/version.rb
242
+ - lib/rpub/xml_file.rb
243
+ - rpub.gemspec
244
+ - spec/fixtures/clean/config.yml
245
+ - spec/fixtures/clean/example.epub
246
+ - spec/fixtures/clean/preview.html
247
+ - spec/fixtures/no_files/config.yml
248
+ - spec/fixtures/preview/a.md
249
+ - spec/fixtures/preview/b.md
250
+ - spec/fixtures/preview/config.yml
251
+ - spec/rpub/book_spec.rb
252
+ - spec/rpub/chapter_spec.rb
253
+ - spec/rpub/commands/clean_spec.rb
254
+ - spec/rpub/commands/main_spec.rb
255
+ - spec/rpub/commands/preview_spec.rb
256
+ - spec/rpub_spec.rb
257
+ - spec/spec_helper.rb
258
+ - support/layout.html
259
+ - support/styles.css
260
+ homepage: http://avdgaag.github.com/rpub
261
+ licenses: []
262
+ post_install_message:
263
+ rdoc_options:
264
+ - --charset=UTF-8
265
+ require_paths:
266
+ - lib
267
+ required_ruby_version: !ruby/object:Gem::Requirement
268
+ none: false
269
+ requirements:
270
+ - - ! '>='
271
+ - !ruby/object:Gem::Version
272
+ version: '0'
273
+ segments:
274
+ - 0
275
+ hash: 756011084715788975
276
+ required_rubygems_version: !ruby/object:Gem::Requirement
277
+ none: false
278
+ requirements:
279
+ - - ! '>='
280
+ - !ruby/object:Gem::Version
281
+ version: '0'
282
+ segments:
283
+ - 0
284
+ hash: 756011084715788975
285
+ requirements: []
286
+ rubyforge_project:
287
+ rubygems_version: 1.8.22
288
+ signing_key:
289
+ specification_version: 3
290
+ summary: ! 'rPub is a command-line tool that generates a collection of plain text
291
+ input files into an eBook in ePub format. It provides several related functions
292
+ to make working with ePub files a little easier: * Generation of table of contents
293
+ * Tracking of references to tables or figures * Validation of output file * Packaging
294
+ your eBook in an archive with additional README file * Very simple version control'
295
+ test_files:
296
+ - spec/fixtures/clean/config.yml
297
+ - spec/fixtures/clean/example.epub
298
+ - spec/fixtures/clean/preview.html
299
+ - spec/fixtures/no_files/config.yml
300
+ - spec/fixtures/preview/a.md
301
+ - spec/fixtures/preview/b.md
302
+ - spec/fixtures/preview/config.yml
303
+ - spec/rpub/book_spec.rb
304
+ - spec/rpub/chapter_spec.rb
305
+ - spec/rpub/commands/clean_spec.rb
306
+ - spec/rpub/commands/main_spec.rb
307
+ - spec/rpub/commands/preview_spec.rb
308
+ - spec/rpub_spec.rb
309
+ - spec/spec_helper.rb
310
+ has_rdoc: