softcover 0.6.5 → 0.6.6
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.
- checksums.yaml +4 -4
- data/.pull_requests/1385518404 +0 -0
- data/lib/softcover/book_manifest.rb +48 -17
- data/lib/softcover/builders/html.rb +11 -7
- data/lib/softcover/version.rb +1 -1
- data/spec/book_manifest_spec.rb +23 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d3c3f7ec1c29b0d9916d06aaab5a587d197d2a5a
|
|
4
|
+
data.tar.gz: db1916e845252bcd7816dc6dbfd68ae71b1c3f8d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6621e690252b6d378e5b2d5850b705ad6ac5464cbf2065e228148488eae1c885a827198033de49ca76bc238f537962e432d3d290c4e8fbdd235a257a92c569ad
|
|
7
|
+
data.tar.gz: b109970ac67eac9ff43c696c9da122bb3adce718cce79bd7c6dcb407c302c8dc6fb1d4db56cab5e91251ed01bed1e7a1f61d4df65301b24b01a20653eeb3213c
|
|
File without changes
|
|
@@ -36,6 +36,19 @@ class Softcover::BookManifest < OpenStruct
|
|
|
36
36
|
def to_hash
|
|
37
37
|
marshal_dump.merge({ menu_heading: menu_heading })
|
|
38
38
|
end
|
|
39
|
+
|
|
40
|
+
def source
|
|
41
|
+
case extension
|
|
42
|
+
when '.md'
|
|
43
|
+
:markdown
|
|
44
|
+
when '.tex'
|
|
45
|
+
:polytex
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def full_name
|
|
50
|
+
"#{slug}#{extension}"
|
|
51
|
+
end
|
|
39
52
|
end
|
|
40
53
|
|
|
41
54
|
class Section < OpenStruct
|
|
@@ -153,11 +166,13 @@ class Softcover::BookManifest < OpenStruct
|
|
|
153
166
|
def chapter_file_paths
|
|
154
167
|
pdf_chapter_names.map do |name|
|
|
155
168
|
file_path = case
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
169
|
+
when markdown? || @origin == :markdown
|
|
170
|
+
chapter = chapters.find { |chapter| chapter.slug == name }
|
|
171
|
+
extension = chapter.nil? ? '.md' : chapter.extension
|
|
172
|
+
File.join("chapters", "#{name}#{extension}")
|
|
173
|
+
when polytex?
|
|
174
|
+
File.join("chapters", "#{name}.tex")
|
|
175
|
+
end
|
|
161
176
|
|
|
162
177
|
yield file_path if block_given?
|
|
163
178
|
|
|
@@ -166,8 +181,6 @@ class Softcover::BookManifest < OpenStruct
|
|
|
166
181
|
end
|
|
167
182
|
|
|
168
183
|
# Returns chapters for the PDF.
|
|
169
|
-
# The frontmatter pseudo-chapter exists for the sake of HTML/EPUB/MOBI, so
|
|
170
|
-
# it's not returned as part of the chapters.
|
|
171
184
|
def pdf_chapter_names
|
|
172
185
|
chaps = chapters.reject { |chapter| chapter.slug.match(/frontmatter/) }.
|
|
173
186
|
collect(&:slug)
|
|
@@ -227,6 +240,33 @@ class Softcover::BookManifest < OpenStruct
|
|
|
227
240
|
raise NotFound
|
|
228
241
|
end
|
|
229
242
|
|
|
243
|
+
# Returns the source files specified by Book.txt.
|
|
244
|
+
# Allows a mixture of Markdown and PolyTeX files.
|
|
245
|
+
def source_files
|
|
246
|
+
self.class.find_book_root!
|
|
247
|
+
md_tex = /.*(?:\.md|\.tex)/
|
|
248
|
+
File.readlines(MD_PATH).select { |path| path =~ md_tex }.map(&:strip)
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
def basenames
|
|
252
|
+
source_files.map { |file| File.basename(file, '.*') }
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
def extensions
|
|
256
|
+
source_files.map { |file| File.extname(file) }
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def chapter_objects
|
|
260
|
+
basenames.zip(extensions).map do |name, extension|
|
|
261
|
+
Chapter.new(slug: name, extension: extension)
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
def read_from_md
|
|
266
|
+
{ chapters: chapter_objects, filename: MD_PATH }
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
|
|
230
270
|
private
|
|
231
271
|
|
|
232
272
|
def read_from_yml
|
|
@@ -236,18 +276,9 @@ class Softcover::BookManifest < OpenStruct
|
|
|
236
276
|
YAML.load_file(YAML_PATH)
|
|
237
277
|
end
|
|
238
278
|
|
|
239
|
-
def read_from_md
|
|
240
|
-
self.class.find_book_root!
|
|
241
|
-
chapters = File.readlines(MD_PATH).select do |path|
|
|
242
|
-
path =~ /(.*)\.md/
|
|
243
|
-
end.map do |file|
|
|
244
|
-
Chapter.new(slug: File.basename(file.strip, '.md'))
|
|
245
|
-
end
|
|
246
|
-
{ chapters: chapters, filename: MD_PATH }
|
|
247
|
-
end
|
|
248
279
|
|
|
249
280
|
def verify_paths!
|
|
250
|
-
chapter_file_paths do |chapter_path
|
|
281
|
+
chapter_file_paths do |chapter_path|
|
|
251
282
|
next if chapter_path =~ /frontmatter/
|
|
252
283
|
unless File.exist?(chapter_path)
|
|
253
284
|
raise "Chapter file in manifest not found in #{chapter_path}"
|
|
@@ -28,7 +28,7 @@ module Softcover
|
|
|
28
28
|
rewrite_master_latex_file
|
|
29
29
|
# Reset the manifest to use PolyTeX.
|
|
30
30
|
self.manifest = Softcover::BookManifest.new(source: :polytex,
|
|
31
|
-
verify_paths:
|
|
31
|
+
verify_paths: false,
|
|
32
32
|
origin: :markdown)
|
|
33
33
|
end
|
|
34
34
|
|
|
@@ -54,12 +54,16 @@ module Softcover
|
|
|
54
54
|
|
|
55
55
|
# Writes the LaTeX files for a given Markdown chapter.
|
|
56
56
|
def write_latex_files(chapter, options = {})
|
|
57
|
-
path = File.join('chapters', chapter.slug + '.md')
|
|
58
|
-
cc = Softcover.custom_styles
|
|
59
|
-
md = Polytexnic::Pipeline.new(File.read(path), source: :md,
|
|
60
|
-
custom_commands: cc)
|
|
61
57
|
filename = path("#{manifest.polytex_dir}/#{chapter.slug}.tex")
|
|
62
|
-
|
|
58
|
+
if chapter.source == :polytex
|
|
59
|
+
FileUtils.cp path("chapters/#{chapter.full_name}"), filename
|
|
60
|
+
else
|
|
61
|
+
path = File.join('chapters', chapter.full_name)
|
|
62
|
+
cc = Softcover.custom_styles
|
|
63
|
+
md = Polytexnic::Pipeline.new(File.read(path), source: :markdown,
|
|
64
|
+
custom_commands: cc)
|
|
65
|
+
File.write(filename, md.polytex)
|
|
66
|
+
end
|
|
63
67
|
end
|
|
64
68
|
|
|
65
69
|
# Rewrites the master LaTeX file <name>.tex to use chapters from Book.txt.
|
|
@@ -68,7 +72,7 @@ module Softcover
|
|
|
68
72
|
lines = File.readlines('Book.txt')
|
|
69
73
|
tex_file = []
|
|
70
74
|
lines.each do |line|
|
|
71
|
-
if line =~ /(.*)
|
|
75
|
+
if line =~ /(.*)(?:\.md|\.tex)\s*$/
|
|
72
76
|
tex_file << "\\include{#{manifest.polytex_dir}/#{$1}}"
|
|
73
77
|
elsif line =~ /(.*):\s*$/ # frontmatter or mainmatter
|
|
74
78
|
tex_file << "\\#{$1}"
|
data/lib/softcover/version.rb
CHANGED
data/spec/book_manifest_spec.rb
CHANGED
|
@@ -48,6 +48,28 @@ describe Softcover::BookManifest do
|
|
|
48
48
|
its(:title) { should eq "book" }
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
context "with mixed Markdown & PolyTeX files" do
|
|
54
|
+
before do
|
|
55
|
+
manifest.stub(:source_files).and_return(['foo.md', 'bar.tex'])
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should have the right basenames" do
|
|
59
|
+
expect(manifest.basenames).to eq ['foo', 'bar']
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should have the right extensions" do
|
|
63
|
+
expect(manifest.extensions).to eq ['.md', '.tex']
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should have the right chapter objects" do
|
|
67
|
+
expect(manifest.chapter_objects[0].slug). to eq 'foo'
|
|
68
|
+
expect(manifest.chapter_objects[0].extension).to eq '.md'
|
|
69
|
+
expect(manifest.chapter_objects[1].slug). to eq 'bar'
|
|
70
|
+
expect(manifest.chapter_objects[1].extension).to eq '.tex'
|
|
71
|
+
end
|
|
72
|
+
end
|
|
51
73
|
end
|
|
52
74
|
|
|
53
75
|
context "in an invalid book directory" do
|
|
@@ -55,4 +77,4 @@ describe Softcover::BookManifest do
|
|
|
55
77
|
expect{ subject }.to raise_error(Softcover::BookManifest::NotFound)
|
|
56
78
|
end
|
|
57
79
|
end
|
|
58
|
-
end
|
|
80
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: softcover
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael Hartl
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-11-
|
|
12
|
+
date: 2013-11-27 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: polytexnic
|
|
@@ -365,6 +365,7 @@ files:
|
|
|
365
365
|
- .pull_requests/1384468478
|
|
366
366
|
- .pull_requests/1384801823
|
|
367
367
|
- .pull_requests/1385070261
|
|
368
|
+
- .pull_requests/1385518404
|
|
368
369
|
- .rspec
|
|
369
370
|
- .ruby-gemset
|
|
370
371
|
- .ruby-version
|