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.
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: []