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.
- data/.gitignore +8 -0
- data/.rspec +5 -0
- data/.travis.yml +5 -0
- data/.yardopts +6 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +51 -0
- data/Guardfile +5 -0
- data/HISTORY.md +5 -0
- data/LICENSE +0 -0
- data/README.md +182 -0
- data/Rakefile +11 -0
- data/bin/rpub +6 -0
- data/example/advanced/README +1 -0
- data/example/advanced/config.yml +11 -0
- data/example/advanced/layout.html +0 -0
- data/example/advanced/styles.css +0 -0
- data/example/simple/01-introduction.md +3 -0
- data/example/simple/02-foo.md +4 -0
- data/example/simple/03-bar.md +4 -0
- data/example/simple/config.yml +8 -0
- data/lib/rpub.rb +53 -0
- data/lib/rpub/book.rb +70 -0
- data/lib/rpub/chapter.rb +84 -0
- data/lib/rpub/commander.rb +14 -0
- data/lib/rpub/commands/base.rb +33 -0
- data/lib/rpub/commands/clean.rb +55 -0
- data/lib/rpub/commands/compile.rb +56 -0
- data/lib/rpub/commands/help.rb +37 -0
- data/lib/rpub/commands/main.rb +45 -0
- data/lib/rpub/commands/package.rb +45 -0
- data/lib/rpub/commands/preview.rb +56 -0
- data/lib/rpub/compilation_helpers.rb +43 -0
- data/lib/rpub/compressor.rb +46 -0
- data/lib/rpub/epub.rb +37 -0
- data/lib/rpub/epub/container.rb +14 -0
- data/lib/rpub/epub/content.rb +80 -0
- data/lib/rpub/epub/cover.rb +27 -0
- data/lib/rpub/epub/html_toc.rb +25 -0
- data/lib/rpub/epub/toc.rb +35 -0
- data/lib/rpub/hash_delegation.rb +23 -0
- data/lib/rpub/subclass_tracker.rb +53 -0
- data/lib/rpub/version.rb +3 -0
- data/lib/rpub/xml_file.rb +14 -0
- data/rpub.gemspec +52 -0
- data/spec/fixtures/clean/config.yml +2 -0
- data/spec/fixtures/clean/example.epub +0 -0
- data/spec/fixtures/clean/preview.html +0 -0
- data/spec/fixtures/no_files/config.yml +0 -0
- data/spec/fixtures/preview/a.md +1 -0
- data/spec/fixtures/preview/b.md +1 -0
- data/spec/fixtures/preview/config.yml +2 -0
- data/spec/rpub/book_spec.rb +62 -0
- data/spec/rpub/chapter_spec.rb +61 -0
- data/spec/rpub/commands/clean_spec.rb +46 -0
- data/spec/rpub/commands/main_spec.rb +26 -0
- data/spec/rpub/commands/preview_spec.rb +42 -0
- data/spec/rpub_spec.rb +7 -0
- data/spec/spec_helper.rb +21 -0
- data/support/layout.html +22 -0
- data/support/styles.css +66 -0
- metadata +310 -0
@@ -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 << '' << '' << '' }
|
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('', 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
data/spec/spec_helper.rb
ADDED
@@ -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
|
data/support/layout.html
ADDED
@@ -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>
|
data/support/styles.css
ADDED
@@ -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:
|