epubforge 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/Gemfile +26 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.rdoc +26 -0
  4. data/Rakefile +71 -0
  5. data/VERSION +1 -0
  6. data/bin/epubforge +10 -0
  7. data/config/actions/book_to_epub.rb +20 -0
  8. data/config/actions/generate.rb +24 -0
  9. data/config/actions/generate_chapter.rb +26 -0
  10. data/config/actions/git_backup.rb +23 -0
  11. data/config/actions/gitify.rb +72 -0
  12. data/config/actions/globals.rb +77 -0
  13. data/config/actions/help.rb +21 -0
  14. data/config/actions/init.rb +137 -0
  15. data/config/actions/kindle.rb +68 -0
  16. data/config/actions/notes_to_epub.rb +20 -0
  17. data/config/actions/notes_to_kindle.rb +17 -0
  18. data/config/actions/word_count.rb +126 -0
  19. data/config/actions/wrap_scene_notes_in_hidden_div.rb +118 -0
  20. data/config/htmlizers.rb +62 -0
  21. data/lib/action/actions_lookup.rb +41 -0
  22. data/lib/action/cli_command.rb +72 -0
  23. data/lib/action/cli_sequence.rb +55 -0
  24. data/lib/action/file_transformer.rb +59 -0
  25. data/lib/action/run_description.rb +24 -0
  26. data/lib/action/runner.rb +122 -0
  27. data/lib/action/thor_action.rb +149 -0
  28. data/lib/core_extensions/array.rb +5 -0
  29. data/lib/core_extensions/kernel.rb +42 -0
  30. data/lib/core_extensions/nil_class.rb +5 -0
  31. data/lib/core_extensions/object.rb +5 -0
  32. data/lib/core_extensions/string.rb +37 -0
  33. data/lib/custom_helpers.rb +60 -0
  34. data/lib/epub/assets/asset.rb +11 -0
  35. data/lib/epub/assets/html.rb +8 -0
  36. data/lib/epub/assets/image.rb +18 -0
  37. data/lib/epub/assets/markdown.rb +8 -0
  38. data/lib/epub/assets/page.rb +32 -0
  39. data/lib/epub/assets/stylesheet.rb +22 -0
  40. data/lib/epub/assets/textile.rb +8 -0
  41. data/lib/epub/builder.rb +270 -0
  42. data/lib/epub/packager.rb +16 -0
  43. data/lib/epubforge.rb +97 -0
  44. data/lib/errors.rb +8 -0
  45. data/lib/project/project.rb +65 -0
  46. data/lib/utils/action_loader.rb +7 -0
  47. data/lib/utils/class_loader.rb +83 -0
  48. data/lib/utils/directory_builder.rb +181 -0
  49. data/lib/utils/downloader.rb +58 -0
  50. data/lib/utils/file_orderer.rb +45 -0
  51. data/lib/utils/file_path.rb +152 -0
  52. data/lib/utils/html_translator.rb +99 -0
  53. data/lib/utils/html_translator_queue.rb +70 -0
  54. data/lib/utils/htmlizer.rb +92 -0
  55. data/lib/utils/misc.rb +20 -0
  56. data/lib/utils/root_path.rb +20 -0
  57. data/lib/utils/settings.rb +146 -0
  58. data/lib/utils/template_evaluator.rb +20 -0
  59. data/templates/default/book/afterword.markdown.template +4 -0
  60. data/templates/default/book/chapter-%i%.markdown.sequence +4 -0
  61. data/templates/default/book/foreword.markdown.template +6 -0
  62. data/templates/default/book/images/cover.png +0 -0
  63. data/templates/default/book/stylesheets/stylesheet.css.template +2 -0
  64. data/templates/default/book/title_page.markdown.template +4 -0
  65. data/templates/default/notes/character.named.markdown.template +4 -0
  66. data/templates/default/notes/stylesheets/stylesheet.css.template +2 -0
  67. data/templates/default/payload.rb +65 -0
  68. data/templates/default/settings/actions/local_action.rb.example +14 -0
  69. data/templates/default/settings/config.rb.form +55 -0
  70. data/templates/default/settings/htmlizers.rb +0 -0
  71. data/templates/default/settings/wordcount.template +6 -0
  72. data/test/helper.rb +22 -0
  73. data/test/misc/config.rb +7 -0
  74. data/test/sample_text/sample.markdown +30 -0
  75. data/test/sample_text/sample.textile +24 -0
  76. data/test/test_custom_helpers.rb +22 -0
  77. data/test/test_directory_builder.rb +141 -0
  78. data/test/test_epf_root.rb +9 -0
  79. data/test/test_epubforge.rb +164 -0
  80. data/test/test_htmlizers.rb +24 -0
  81. data/test/test_runner.rb +15 -0
  82. data/test/test_utils.rb +39 -0
  83. 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
@@ -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
@@ -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: []