epubforge 0.0.5
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/Gemfile +26 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +26 -0
- data/Rakefile +71 -0
- data/VERSION +1 -0
- data/bin/epubforge +10 -0
- data/config/actions/book_to_epub.rb +20 -0
- data/config/actions/generate.rb +24 -0
- data/config/actions/generate_chapter.rb +26 -0
- data/config/actions/git_backup.rb +23 -0
- data/config/actions/gitify.rb +72 -0
- data/config/actions/globals.rb +77 -0
- data/config/actions/help.rb +21 -0
- data/config/actions/init.rb +137 -0
- data/config/actions/kindle.rb +68 -0
- data/config/actions/notes_to_epub.rb +20 -0
- data/config/actions/notes_to_kindle.rb +17 -0
- data/config/actions/word_count.rb +126 -0
- data/config/actions/wrap_scene_notes_in_hidden_div.rb +118 -0
- data/config/htmlizers.rb +62 -0
- data/lib/action/actions_lookup.rb +41 -0
- data/lib/action/cli_command.rb +72 -0
- data/lib/action/cli_sequence.rb +55 -0
- data/lib/action/file_transformer.rb +59 -0
- data/lib/action/run_description.rb +24 -0
- data/lib/action/runner.rb +122 -0
- data/lib/action/thor_action.rb +149 -0
- data/lib/core_extensions/array.rb +5 -0
- data/lib/core_extensions/kernel.rb +42 -0
- data/lib/core_extensions/nil_class.rb +5 -0
- data/lib/core_extensions/object.rb +5 -0
- data/lib/core_extensions/string.rb +37 -0
- data/lib/custom_helpers.rb +60 -0
- data/lib/epub/assets/asset.rb +11 -0
- data/lib/epub/assets/html.rb +8 -0
- data/lib/epub/assets/image.rb +18 -0
- data/lib/epub/assets/markdown.rb +8 -0
- data/lib/epub/assets/page.rb +32 -0
- data/lib/epub/assets/stylesheet.rb +22 -0
- data/lib/epub/assets/textile.rb +8 -0
- data/lib/epub/builder.rb +270 -0
- data/lib/epub/packager.rb +16 -0
- data/lib/epubforge.rb +97 -0
- data/lib/errors.rb +8 -0
- data/lib/project/project.rb +65 -0
- data/lib/utils/action_loader.rb +7 -0
- data/lib/utils/class_loader.rb +83 -0
- data/lib/utils/directory_builder.rb +181 -0
- data/lib/utils/downloader.rb +58 -0
- data/lib/utils/file_orderer.rb +45 -0
- data/lib/utils/file_path.rb +152 -0
- data/lib/utils/html_translator.rb +99 -0
- data/lib/utils/html_translator_queue.rb +70 -0
- data/lib/utils/htmlizer.rb +92 -0
- data/lib/utils/misc.rb +20 -0
- data/lib/utils/root_path.rb +20 -0
- data/lib/utils/settings.rb +146 -0
- data/lib/utils/template_evaluator.rb +20 -0
- data/templates/default/book/afterword.markdown.template +4 -0
- data/templates/default/book/chapter-%i%.markdown.sequence +4 -0
- data/templates/default/book/foreword.markdown.template +6 -0
- data/templates/default/book/images/cover.png +0 -0
- data/templates/default/book/stylesheets/stylesheet.css.template +2 -0
- data/templates/default/book/title_page.markdown.template +4 -0
- data/templates/default/notes/character.named.markdown.template +4 -0
- data/templates/default/notes/stylesheets/stylesheet.css.template +2 -0
- data/templates/default/payload.rb +65 -0
- data/templates/default/settings/actions/local_action.rb.example +14 -0
- data/templates/default/settings/config.rb.form +55 -0
- data/templates/default/settings/htmlizers.rb +0 -0
- data/templates/default/settings/wordcount.template +6 -0
- data/test/helper.rb +22 -0
- data/test/misc/config.rb +7 -0
- data/test/sample_text/sample.markdown +30 -0
- data/test/sample_text/sample.textile +24 -0
- data/test/test_custom_helpers.rb +22 -0
- data/test/test_directory_builder.rb +141 -0
- data/test/test_epf_root.rb +9 -0
- data/test/test_epubforge.rb +164 -0
- data/test/test_htmlizers.rb +24 -0
- data/test/test_runner.rb +15 -0
- data/test/test_utils.rb +39 -0
- metadata +328 -0
@@ -0,0 +1,164 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'thor'
|
3
|
+
|
4
|
+
class TestEpubforge < Test::Unit::TestCase #
|
5
|
+
context "Testing a few basic commands" do
|
6
|
+
should "print successfully" do
|
7
|
+
printout = EpubForge.collect_stdout do
|
8
|
+
EpubForge::Action::Runner.new.exec # empty args, should append --help
|
9
|
+
end
|
10
|
+
|
11
|
+
assert_match /\( wc \| count \)/, printout
|
12
|
+
assert_match /epubforge \[action\] \[folder\]/, printout
|
13
|
+
end
|
14
|
+
|
15
|
+
should "initialize a new project" do
|
16
|
+
create_project do
|
17
|
+
assert @project_dir.join( EpubForge::Project::SETTINGS_FOLDER, EpubForge::Project::CONFIG_FILE_NAME ).file?
|
18
|
+
assert @project_dir.join( "settings", "actions" ).directory?
|
19
|
+
assert @project_dir.join( "notes" ).directory?
|
20
|
+
assert @project_dir.join( "book", "title_page.markdown" ).file?
|
21
|
+
assert @project_dir.join( "book", "images", "cover.png" ).file?
|
22
|
+
assert_equal 1, @project_dir.join( "book", "chapter-0001.markdown" ).grep( /^Chapter/ ).length
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "testing a fresh project" do
|
27
|
+
should "successfully count ALL THE WORDS!" do
|
28
|
+
create_project do
|
29
|
+
EpubForge.collect_stdout do
|
30
|
+
report = EpubForge::Action::Runner.new.exec( "wc", @project_dir )
|
31
|
+
assert_kind_of Hash, report
|
32
|
+
assert_equal 87, report["Book"]
|
33
|
+
assert_equal 94, report["Today"]
|
34
|
+
assert @project_dir.join( EpubForge::Project::SETTINGS_FOLDER, EpubForge::Action::WordCount::WORD_COUNT_FILE ).exist?
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
should "fail to count words when no project is given and cwd is not a project" do
|
40
|
+
create_project do
|
41
|
+
printout = EpubForge.collect_stdout do
|
42
|
+
assert !EpubForge::Action::Runner.new.exec( "wc" )
|
43
|
+
end
|
44
|
+
|
45
|
+
assert_match /Error\(s\) trying to complete the requested action/, printout
|
46
|
+
assert_match /Current directory is not an epubforge project/, printout
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
should "create an .epub file" do
|
51
|
+
create_project do
|
52
|
+
printout = EpubForge.collect_stdout do
|
53
|
+
EpubForge::Action::Runner.new.exec( "forge", @project_dir )
|
54
|
+
end
|
55
|
+
|
56
|
+
assert @ebook_file.file?
|
57
|
+
assert_match /Done building epub/, printout
|
58
|
+
|
59
|
+
Dir.mktmpdir do |unzip_dir|
|
60
|
+
unzip_dir = unzip_dir.fwf_filepath
|
61
|
+
`unzip #{@ebook_file} -d #{unzip_dir}`
|
62
|
+
|
63
|
+
unzip_dir.join("META-INF") do |d|
|
64
|
+
assert d.directory?
|
65
|
+
container = d.join( "container.xml" )
|
66
|
+
assert container.file?
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
unzip_dir.join("OEBPS") do |d|
|
71
|
+
d.join("Images") do |d|
|
72
|
+
assert d.directory?
|
73
|
+
assert d.join("cover.png").file?
|
74
|
+
end
|
75
|
+
|
76
|
+
d.join("Text") do |d|
|
77
|
+
d.join( "section0002.xhtml" ) do |section|
|
78
|
+
assert section.file?
|
79
|
+
section_text = section.read
|
80
|
+
assert_match /DOCTYPE/, section_text
|
81
|
+
assert_match /<title>#{@book_title}<\/title>/, section_text
|
82
|
+
assert_match /Now go find something else to do/, section_text
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
d.join("Styles") do |d|
|
87
|
+
assert d.directory?
|
88
|
+
end
|
89
|
+
|
90
|
+
d.join( "content.opf" ) do |content|
|
91
|
+
content_text = content.read
|
92
|
+
assert_match /<dc:title>#{@book_title}<\/dc:title>/, content_text
|
93
|
+
assert_match /Text\/section0003/, content_text
|
94
|
+
end
|
95
|
+
|
96
|
+
d.join( "toc.ncx" ) do |toc|
|
97
|
+
assert_equal 1, toc.grep( /DOCTYPE/ ).length
|
98
|
+
assert_equal 4, toc.grep( /meta name=/ ).length
|
99
|
+
|
100
|
+
section_count = EpubForge.root( "templates", "default", "book" ).glob( :ext => ["template", "sequence"] ).length + @chapter_count - 1
|
101
|
+
assert_equal section_count, toc.grep( /xhtml/ ).length
|
102
|
+
assert_equal 1, toc.grep( /#{@book_title}/ ).length
|
103
|
+
|
104
|
+
assert_equal section_count, toc.grep( /<content src=/ ).length
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
should "create an .epub of the notes directory" do
|
112
|
+
create_project do
|
113
|
+
EpubForge::Action::Runner.new.exec( "forge_notes", @project_dir )
|
114
|
+
|
115
|
+
assert @notes_file.file?
|
116
|
+
assert ! @notes_file.empty?
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
protected
|
122
|
+
def create_project( &block )
|
123
|
+
EpubForge::Utils::DirectoryBuilder.tmpdir do |d|
|
124
|
+
@project_dir = d.current_path.join("project")
|
125
|
+
@printout = EpubForge.collect_stdout do
|
126
|
+
EpubForge::Action::Runner.new.exec( "init", @project_dir, fill_in_project_options )
|
127
|
+
end
|
128
|
+
|
129
|
+
assert @project_dir.directory?, "Project directory doesn't exist. Cannot proceed."
|
130
|
+
|
131
|
+
|
132
|
+
@book_title = fill_in_project_options[:answers][:title]
|
133
|
+
@chapter_count = fill_in_project_options[:answers][:chapter_count].to_i
|
134
|
+
@ebook_file = @project_dir.join( @book_title.epf_underscorize + ".epub" )
|
135
|
+
@notes_file = @project_dir.join( @book_title.epf_underscorize + ".notes.epub" )
|
136
|
+
|
137
|
+
yield
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def fill_in_project_options( opts = {} )
|
142
|
+
template_options = {
|
143
|
+
:answers => {
|
144
|
+
:chapter_count => 3,
|
145
|
+
:title => "The Courtesan of Fate",
|
146
|
+
:author => "Wilberforce Poncer",
|
147
|
+
:license => "You Owe Me All the Money Limited License, v. 2.1",
|
148
|
+
:use_git => true,
|
149
|
+
:git => {
|
150
|
+
:repo_id => "abcdef0123456789",
|
151
|
+
:backup_type => "Back up to a remote host.",
|
152
|
+
:host => "myhost.somewhere.com",
|
153
|
+
:user => "andersbr",
|
154
|
+
:repo => "/home/andersbr/git"
|
155
|
+
}
|
156
|
+
}
|
157
|
+
}
|
158
|
+
|
159
|
+
template_options[:answers].merge(opts)
|
160
|
+
|
161
|
+
template_options
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'helper'
|
2
|
+
Htmlizer = EpubForge::Utils::Htmlizer
|
3
|
+
|
4
|
+
class TestHtmlizers < Test::Unit::TestCase
|
5
|
+
context "testing htmlizers" do
|
6
|
+
setup do
|
7
|
+
@samples = EpubForge.root("test", "sample_text")
|
8
|
+
end
|
9
|
+
|
10
|
+
should "test markdown" do
|
11
|
+
result = Htmlizer.instance.translate( @samples.join("sample.markdown") )
|
12
|
+
assert_match /<h1.*This is a header</, result
|
13
|
+
end
|
14
|
+
|
15
|
+
should "test textile" do
|
16
|
+
result = Htmlizer.instance.translate( @samples.join("sample.textile") )
|
17
|
+
assert_match /<h1.*This is a header</, result
|
18
|
+
end
|
19
|
+
|
20
|
+
should "test everything else" do
|
21
|
+
skip "not written"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/test/test_runner.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
Runner = EpubForge::Action::Runner
|
4
|
+
|
5
|
+
class TestRunner < Test::Unit::TestCase
|
6
|
+
context "Testing argument parsing" do
|
7
|
+
setup do
|
8
|
+
@runner = Runner.new
|
9
|
+
end
|
10
|
+
|
11
|
+
should "parse empty args" do
|
12
|
+
# @runner.send( :parse_args, ??? )
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/test/test_utils.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
include EpubForge::Utils
|
4
|
+
|
5
|
+
class TestUtils < Test::Unit::TestCase
|
6
|
+
context "testing file orderer" do
|
7
|
+
should "accurately sort files in the templates/book dir" do
|
8
|
+
files = %W(afterword.markdown
|
9
|
+
chapter-0002.markdown
|
10
|
+
chapter-0001.markdown
|
11
|
+
foreword.markdown
|
12
|
+
title_page.markdown
|
13
|
+
chapter-0003.markdown)
|
14
|
+
|
15
|
+
files_in_expected_order = %W( title_page.markdown
|
16
|
+
foreword.markdown
|
17
|
+
chapter-0001.markdown
|
18
|
+
chapter-0002.markdown
|
19
|
+
chapter-0003.markdown
|
20
|
+
afterword.markdown)
|
21
|
+
|
22
|
+
orderers = %w(title_page foreword chapter-.* afterword)
|
23
|
+
reordered_files = FileOrderer.new( orderers ).reorder( files ).map(&:to_s)
|
24
|
+
|
25
|
+
assert_equal files_in_expected_order, reordered_files
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "testing template_handler" do
|
30
|
+
should "evaluate erb in a string" do
|
31
|
+
sample = "(<%= Time.now %>): <%= @var_is_set %>"
|
32
|
+
result = TemplateEvaluator.new( sample, var_is_set: "true" ).result
|
33
|
+
|
34
|
+
assert_match /true/, result
|
35
|
+
time_string = /\((.*)\)/.match(result)[1]
|
36
|
+
assert_kind_of Time, Time.parse( time_string )
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,328 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: epubforge
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.5
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Bryce Anderson
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-04-30 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: xdg
|
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: builder
|
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: nokogiri
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.5'
|
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: '1.5'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: thor
|
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: fun_with_files
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
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: fun_with_configurations
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :runtime
|
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: rdoc
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '3.12'
|
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: '3.12'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: bundler
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 1.3.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: 1.3.0
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: jeweler
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ~>
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 1.8.4
|
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: 1.8.4
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: shoulda
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ~>
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '3.3'
|
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: '3.3'
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
name: debugger
|
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: ! "= epubforge =\n\nWrite your book in markdown, then do all sorts of
|
191
|
+
increasingly nifty things with it using this command-line utility.\n\n== Project
|
192
|
+
description ==\n\nepubforge is a command-line utility for creating, tracking and
|
193
|
+
managing longer (novella and book-length) writing projects. Write your text in
|
194
|
+
markdown (http://whatismarkdown.com/), use the built in actions to convert your
|
195
|
+
project to various ebook formats, track wordcount over the life of the project,
|
196
|
+
manage a story bible, and back your project up using git.\n\nOr go further and define
|
197
|
+
your own formatters/converters and actions in Ruby. Have fun!\n\n\n== Contributing
|
198
|
+
to epubforge ==\n \n* Check out the latest master to make sure the feature hasn't
|
199
|
+
been implemented or the bug hasn't been fixed yet.\n* Check out the issue tracker
|
200
|
+
to make sure someone already hasn't requested it and/or contributed it.\n* Fork
|
201
|
+
the project.\n* Start a feature/bugfix branch.\n* Commit and push until you are
|
202
|
+
happy with your contribution.\n* Make sure to add tests for it. This is important
|
203
|
+
so I don't break it in a future version unintentionally.\n* Please try not to mess
|
204
|
+
with the Rakefile, version, or history. If you want to have your own version, or
|
205
|
+
is otherwise necessary, that is fine, but please isolate to its own commit so I
|
206
|
+
can cherry-pick around it.\n\n== Copyright ==\n\nCopyright (c) 2013 Bryce Anderson.
|
207
|
+
See LICENSE.txt for\nfurther details.\n\n"
|
208
|
+
email: keeputahweird@gmail.com
|
209
|
+
executables:
|
210
|
+
- epubforge
|
211
|
+
extensions: []
|
212
|
+
extra_rdoc_files:
|
213
|
+
- LICENSE.txt
|
214
|
+
- README.rdoc
|
215
|
+
files:
|
216
|
+
- ./bin/epubforge
|
217
|
+
- ./config/actions/book_to_epub.rb
|
218
|
+
- ./config/actions/generate.rb
|
219
|
+
- ./config/actions/generate_chapter.rb
|
220
|
+
- ./config/actions/git_backup.rb
|
221
|
+
- ./config/actions/gitify.rb
|
222
|
+
- ./config/actions/globals.rb
|
223
|
+
- ./config/actions/help.rb
|
224
|
+
- ./config/actions/init.rb
|
225
|
+
- ./config/actions/kindle.rb
|
226
|
+
- ./config/actions/notes_to_epub.rb
|
227
|
+
- ./config/actions/notes_to_kindle.rb
|
228
|
+
- ./config/actions/word_count.rb
|
229
|
+
- ./config/actions/wrap_scene_notes_in_hidden_div.rb
|
230
|
+
- ./config/htmlizers.rb
|
231
|
+
- ./lib/action/actions_lookup.rb
|
232
|
+
- ./lib/action/cli_command.rb
|
233
|
+
- ./lib/action/cli_sequence.rb
|
234
|
+
- ./lib/action/file_transformer.rb
|
235
|
+
- ./lib/action/run_description.rb
|
236
|
+
- ./lib/action/runner.rb
|
237
|
+
- ./lib/action/thor_action.rb
|
238
|
+
- ./lib/core_extensions/array.rb
|
239
|
+
- ./lib/core_extensions/kernel.rb
|
240
|
+
- ./lib/core_extensions/nil_class.rb
|
241
|
+
- ./lib/core_extensions/object.rb
|
242
|
+
- ./lib/core_extensions/string.rb
|
243
|
+
- ./lib/custom_helpers.rb
|
244
|
+
- ./lib/epub/assets/asset.rb
|
245
|
+
- ./lib/epub/assets/html.rb
|
246
|
+
- ./lib/epub/assets/image.rb
|
247
|
+
- ./lib/epub/assets/markdown.rb
|
248
|
+
- ./lib/epub/assets/page.rb
|
249
|
+
- ./lib/epub/assets/stylesheet.rb
|
250
|
+
- ./lib/epub/assets/textile.rb
|
251
|
+
- ./lib/epub/builder.rb
|
252
|
+
- ./lib/epub/packager.rb
|
253
|
+
- ./lib/epubforge.rb
|
254
|
+
- ./lib/errors.rb
|
255
|
+
- ./lib/project/project.rb
|
256
|
+
- ./lib/utils/action_loader.rb
|
257
|
+
- ./lib/utils/class_loader.rb
|
258
|
+
- ./lib/utils/directory_builder.rb
|
259
|
+
- ./lib/utils/downloader.rb
|
260
|
+
- ./lib/utils/file_orderer.rb
|
261
|
+
- ./lib/utils/file_path.rb
|
262
|
+
- ./lib/utils/html_translator.rb
|
263
|
+
- ./lib/utils/html_translator_queue.rb
|
264
|
+
- ./lib/utils/htmlizer.rb
|
265
|
+
- ./lib/utils/misc.rb
|
266
|
+
- ./lib/utils/root_path.rb
|
267
|
+
- ./lib/utils/settings.rb
|
268
|
+
- ./lib/utils/template_evaluator.rb
|
269
|
+
- ./templates/default/book/afterword.markdown.template
|
270
|
+
- ./templates/default/book/chapter-%i%.markdown.sequence
|
271
|
+
- ./templates/default/book/foreword.markdown.template
|
272
|
+
- ./templates/default/book/images/cover.png
|
273
|
+
- ./templates/default/book/stylesheets/stylesheet.css.template
|
274
|
+
- ./templates/default/book/title_page.markdown.template
|
275
|
+
- ./templates/default/notes/character.named.markdown.template
|
276
|
+
- ./templates/default/notes/stylesheets/stylesheet.css.template
|
277
|
+
- ./templates/default/payload.rb
|
278
|
+
- ./templates/default/settings/actions/local_action.rb.example
|
279
|
+
- ./templates/default/settings/config.rb.form
|
280
|
+
- ./templates/default/settings/htmlizers.rb
|
281
|
+
- ./templates/default/settings/wordcount.template
|
282
|
+
- ./test/helper.rb
|
283
|
+
- ./test/misc/config.rb
|
284
|
+
- ./test/sample_text/sample.markdown
|
285
|
+
- ./test/sample_text/sample.textile
|
286
|
+
- ./test/test_custom_helpers.rb
|
287
|
+
- ./test/test_directory_builder.rb
|
288
|
+
- ./test/test_epf_root.rb
|
289
|
+
- ./test/test_epubforge.rb
|
290
|
+
- ./test/test_htmlizers.rb
|
291
|
+
- ./test/test_runner.rb
|
292
|
+
- ./test/test_utils.rb
|
293
|
+
- Gemfile
|
294
|
+
- LICENSE.txt
|
295
|
+
- README.rdoc
|
296
|
+
- Rakefile
|
297
|
+
- VERSION
|
298
|
+
- bin/epubforge
|
299
|
+
homepage: http://github.com/darth_schmoo/epubforge
|
300
|
+
licenses:
|
301
|
+
- MIT
|
302
|
+
post_install_message:
|
303
|
+
rdoc_options: []
|
304
|
+
require_paths:
|
305
|
+
- lib
|
306
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
307
|
+
none: false
|
308
|
+
requirements:
|
309
|
+
- - ! '>='
|
310
|
+
- !ruby/object:Gem::Version
|
311
|
+
version: '0'
|
312
|
+
segments:
|
313
|
+
- 0
|
314
|
+
hash: 4298602007966861026
|
315
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
316
|
+
none: false
|
317
|
+
requirements:
|
318
|
+
- - ! '>='
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '0'
|
321
|
+
requirements: []
|
322
|
+
rubyforge_project:
|
323
|
+
rubygems_version: 1.8.25
|
324
|
+
signing_key:
|
325
|
+
specification_version: 3
|
326
|
+
summary: Write your book in markdown, then do all sorts of increasingly nifty things
|
327
|
+
with it.
|
328
|
+
test_files: []
|