softcover 0.6.10 → 0.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bef4d9aa77bc1f4a22c64871d5e8fafb18994875
4
- data.tar.gz: 83699d357e811c2fd6cee9e4e8852a89058172b5
3
+ metadata.gz: 61bd49f3b8a3353e6ec2337fdbb106034190e783
4
+ data.tar.gz: fb0e6e1d6f0a088cbec3e16e2202fce24446aa5e
5
5
  SHA512:
6
- metadata.gz: 54fce6cdcd78b0e736b60eb950e03a669cc86fbf1d0778fd3057f6e7e2654016a37574699f40c5bb4121d73b19a1b91ba17b6bd9b20c6bf51d1769d1c242fa83
7
- data.tar.gz: 36067b6fa74f26ca4883ce0018828e571adad5ac9ac42098097cf6438e3c95df43a74daa2f28663bf504148aeda284167f766d8baab5685ab1e88a2fbc9d05e4
6
+ metadata.gz: 7320553767b7915b937bc88d4cbec6c909d17d7aa99b4c874b8d07f6453a35bd682ffb07a4c52d0a228a38875fd3b5c6e1d4ecca86bf2b2e38f644d4ab0553e9
7
+ data.tar.gz: 221b381059780a02c6da6fcc7381c52e1baf8d209aba80eeab0a0aa4fdc4d17d87dfcf327e859280c3b44928d6d9f8199b7fe290c93c79ccfd604c2562de66f7
data/.gitignore CHANGED
@@ -24,3 +24,4 @@ pygments.sty
24
24
  .api_token
25
25
  .project_id
26
26
  spec/fixtures/md-book/log/tralics.log
27
+ .ruby-*
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -54,7 +54,7 @@ class Softcover::BookManifest < OpenStruct
54
54
  class Section < OpenStruct
55
55
  end
56
56
 
57
- MD_PATH = 'Book.txt'
57
+ TXT_PATH = 'Book.txt'
58
58
  YAML_PATH = "book.yml"
59
59
 
60
60
  def initialize(options = {})
@@ -70,6 +70,8 @@ class Softcover::BookManifest < OpenStruct
70
70
 
71
71
  marshal_load attrs
72
72
 
73
+ write_master_latex_file(self)
74
+
73
75
  if polytex?
74
76
  tex_filename = filename + '.tex'
75
77
  self.chapters = []
@@ -88,18 +90,17 @@ class Softcover::BookManifest < OpenStruct
88
90
  else
89
91
  self.frontmatter = []
90
92
  end
91
- self.author = base_contents.scan(/^\s*\\author\{(.*?)\}/).flatten.first
92
93
  chapter_includes(base_contents).each_with_index do |name, i|
93
94
  slug = File.basename(name, '.*')
94
- title_regex = /^\s*\\chapter{(.*)}/
95
+ chapter_title_regex = /^\s*\\chapter{(.*)}/
95
96
  content = File.read(File.join(polytex_dir, slug + '.tex'))
96
- title = content[title_regex, 1]
97
+ chapter_title = content[chapter_title_regex, 1]
97
98
  j = 0
98
99
  sections = content.scan(/^\s*\\section{(.*)}/).flatten.map do |name|
99
100
  Section.new(name: name, section_number: j += 1)
100
101
  end
101
102
  chapters.push Chapter.new(slug: slug,
102
- title: title,
103
+ title: chapter_title,
103
104
  sections: sections,
104
105
  chapter_number: i + 1)
105
106
  end
@@ -224,7 +225,7 @@ class Softcover::BookManifest < OpenStruct
224
225
  end
225
226
 
226
227
  def self.valid_directory?
227
- [YAML_PATH, MD_PATH].any? { |f| File.exist?(f) }
228
+ [YAML_PATH, TXT_PATH].any? { |f| File.exist?(f) }
228
229
  end
229
230
 
230
231
  # Changes the directory until in the book's root directory.
@@ -245,7 +246,7 @@ class Softcover::BookManifest < OpenStruct
245
246
  def source_files
246
247
  self.class.find_book_root!
247
248
  md_tex = /.*(?:\.md|\.tex)/
248
- File.readlines(MD_PATH).select { |path| path =~ md_tex }.map(&:strip)
249
+ File.readlines(TXT_PATH).select { |path| path =~ md_tex }.map(&:strip)
249
250
  end
250
251
 
251
252
  def basenames
@@ -263,7 +264,7 @@ class Softcover::BookManifest < OpenStruct
263
264
  end
264
265
 
265
266
  def read_from_md
266
- { chapters: chapter_objects, filename: MD_PATH }
267
+ { chapters: chapter_objects, filename: TXT_PATH }
267
268
  end
268
269
 
269
270
 
@@ -3,6 +3,7 @@ require 'fileutils'
3
3
  module Softcover
4
4
  module Builders
5
5
  class Html < Builder
6
+ include Softcover::Utils
6
7
 
7
8
  def setup
8
9
  Dir.mkdir "html" unless File.directory?("html")
@@ -18,6 +19,8 @@ module Softcover
18
19
  RubyProf.start
19
20
  end
20
21
 
22
+ write_master_latex_file(manifest)
23
+
21
24
  if manifest.markdown?
22
25
  unless options[:'find-overfull']
23
26
  FileUtils.rm(Dir.glob(path("#{manifest.polytex_dir}/*.tex")))
@@ -25,7 +28,7 @@ module Softcover
25
28
  manifest.chapters.each do |chapter|
26
29
  write_latex_files(chapter, options)
27
30
  end
28
- rewrite_master_latex_file
31
+
29
32
  # Reset the manifest to use PolyTeX.
30
33
  self.manifest = Softcover::BookManifest.new(source: :polytex,
31
34
  verify_paths: false,
@@ -66,30 +69,6 @@ module Softcover
66
69
  end
67
70
  end
68
71
 
69
- # Rewrites the master LaTeX file <name>.tex to use chapters from Book.txt.
70
- def rewrite_master_latex_file
71
- master_filename = Dir['*.tex'].reject { |f| f =~ /\.tmp/}.first
72
- lines = File.readlines('Book.txt')
73
- tex_file = []
74
- lines.each do |line|
75
- if line =~ /(.*)(?:\.md|\.tex)\s*$/
76
- tex_file << "\\include{#{manifest.polytex_dir}/#{$1}}"
77
- elsif line =~ /(.*):\s*$/ # frontmatter or mainmatter
78
- tex_file << "\\#{$1}"
79
- elsif line.strip == 'cover'
80
- tex_file << '\\includepdf{images/cover.pdf}'
81
- else # raw command, like 'maketitle' or 'tableofcontents'
82
- tex_file << "\\#{line.strip}"
83
- end
84
- end
85
- tex_file << '\end{document}'
86
- content = File.read(master_filename)
87
- content.gsub!(/(\\begin{document}\n)(.*)/m) do
88
- $1 + tex_file.join("\n") + "\n"
89
- end
90
- File.write(master_filename, content)
91
- end
92
-
93
72
  # Returns the converted HTML.
94
73
  def converted_html(basename)
95
74
  polytex_filename = basename + '.tex'
@@ -2,6 +2,7 @@ module Softcover
2
2
  module Builders
3
3
  class Pdf < Builder
4
4
  include Softcover::Output
5
+ include Softcover::Utils
5
6
 
6
7
  def build!(options={})
7
8
  if manifest.markdown?
@@ -12,6 +13,9 @@ module Softcover
12
13
  self.manifest = Softcover::BookManifest.new(source: :polytex,
13
14
  origin: :markdown)
14
15
  end
16
+
17
+ write_master_latex_file(manifest)
18
+
15
19
  # Build the PolyTeX filename so it accepts both 'foo' and 'foo.tex'.
16
20
  basename = File.basename(manifest.filename, '.tex')
17
21
  book_filename = basename + '.tex'
@@ -22,16 +26,17 @@ module Softcover
22
26
  return # only gets called in test env
23
27
  elsif options[:'find-overfull']
24
28
  tmp_name = book_filename.sub('.tex', '.tmp.tex')
25
- # The we do things, code listings show up as "Overfull", but they're
26
- # actually fine, so filter them out.
29
+ # The way we do things, code listings show up as "Overfull", but
30
+ # they're actually fine, so filter them out.
27
31
  filter_out_listings = "grep -v 3.22281pt"
28
- # It's hard to correlate Overfull line numbers with source files,
32
+ # Because each chapter typically lives in a separate file, it's
33
+ # hard to correlate Overfull line numbers with lines in the source,
29
34
  # so we use grep's -A flag to provide some context instead. Authors
30
- # can then use their text editors to find the corresponding place
31
- # in the text.
35
+ # can then use their text editors' search function to find the
36
+ # corresponding place in the text.
32
37
  show_context = 'grep -A 3 "Overfull \hbox"'
33
38
  cmd = "xelatex #{tmp_name} | #{filter_out_listings} | #{show_context}"
34
- execute cmd
39
+ silence_stream(STDERR) { execute cmd }
35
40
  return
36
41
  end
37
42
 
@@ -66,7 +71,9 @@ module Softcover
66
71
  # Here we use `system` when making a preview because the preview command
67
72
  # needs to run after the main PDF build.
68
73
  if options[:quiet] || options[:silent]
69
- silence { options[:preview] ? system(cmd) : execute(cmd) }
74
+ silence_stream(STDERR) do
75
+ silence { options[:preview] ? system(cmd) : execute(cmd) }
76
+ end
70
77
  else
71
78
  options[:preview] ? system(cmd) : execute(cmd)
72
79
  end
@@ -144,9 +144,7 @@ module Softcover
144
144
  require 'softcover/commands/publisher'
145
145
 
146
146
  invoke :login unless logged_in?
147
-
148
- slug = Softcover::BookManifest.new.slug
149
- if ask("Type '#{slug}' to unpublish:") == slug
147
+ if ask("Type '#{unpublish_slug}' to unpublish:") == unpublish_slug
150
148
  puts "Unpublishing..." unless options[:silent]
151
149
  Softcover::Commands::Publisher.unpublish!
152
150
  else
@@ -172,11 +170,6 @@ module Softcover
172
170
  :default => false,
173
171
  :aliases => "-p",
174
172
  :desc => "Generate a PolyTeX book."
175
- method_option :simple,
176
- :type => :boolean,
177
- :default => false,
178
- :aliases => "-s",
179
- :desc => "Generate a simple book."
180
173
  def new(n)
181
174
  Softcover::Commands::Generator.generate_file_tree(n, options)
182
175
  end
@@ -9,7 +9,6 @@ module Softcover
9
9
  def generate_file_tree(name, options = {})
10
10
  @name = name
11
11
  @markdown = !options[:polytex]
12
- @simple = options[:simple]
13
12
 
14
13
  thor = Thor::Shell::Basic.new
15
14
 
@@ -25,8 +24,6 @@ module Softcover
25
24
  # file before the directory had been created, so we now create all
26
25
  # the directories first.
27
26
  directories.each do |path|
28
- next if path =~ /\/simple_book/ && !@simple
29
- next if path =~ /\/book/ && @simple
30
27
  (cp_path = path.dup).slice! template_dir + "/"
31
28
  unless File.exist?(cp_path)
32
29
  puts "Creating #{cp_path}" unless cp_path =~ /MathJax/
@@ -87,16 +84,9 @@ module Softcover
87
84
  File.expand_path File.join File.dirname(__FILE__), "../template"
88
85
  end
89
86
 
90
- # Returns true for a simple book (no frontmatter, etc.).
91
- def simple?
92
- @simple
93
- end
94
-
95
87
  # Returns a list of all the files and directories used to build the book.
96
88
  def all_files_and_directories
97
- f = files_directories_maybe_markdown
98
- simple? ? f.reject { |p| p =~ /\/book\.tex/ || p =~ /preface/ }
99
- : f.reject { |p| p =~ /simple/ }
89
+ files_directories_maybe_markdown
100
90
  end
101
91
 
102
92
  # Returns the files and directories based on the input format.
@@ -106,8 +96,8 @@ module Softcover
106
96
  # Skip the PolyTeX chapter files, which will be generated later.
107
97
  fds.reject { |e| e =~ /\/chapters\/.*\.tex/ }
108
98
  else
109
- # Skip the Markdown files & Book.txt.
110
- fds.reject { |e| e =~ /(chapters\/.*\.md|Book\.txt)/ }
99
+ # Skip the Markdown files.
100
+ fds.reject { |e| e =~ /chapters\/.*\.md/ }
111
101
  end
112
102
  end
113
103
 
@@ -4,10 +4,14 @@ module Softcover
4
4
  extend self
5
5
 
6
6
  def open!
7
- book = Softcover::Book.new
8
7
  book.open_in_browser
9
8
  end
10
9
 
10
+ # Returns the book to be opened.
11
+ def book
12
+ Softcover::Book.new(origin: Softcover::Utils::source)
13
+ end
14
+
11
15
  end
12
16
  end
13
17
  end
@@ -29,7 +29,9 @@ module Softcover::Commands::Server
29
29
  ignores = ['generated_polytex', '\.tmp\.tex']
30
30
  # Ignore <book>.tex, which gets overwritten each time PolyTeXnic runs,
31
31
  # unless there's no Book.txt, which means the author is using raw LaTeX.
32
- ignores << Regexp.escape(Dir.glob('*.tex').first) if File.exist?('Book.txt')
32
+ if File.exist?(Softcover::BookManifest::TXT_PATH)
33
+ ignores << Regexp.escape(Dir.glob('*.tex').first)
34
+ end
33
35
  /(#{ignores.join('|')})/
34
36
  end
35
37
 
@@ -51,13 +53,13 @@ module Softcover::Commands::Server
51
53
 
52
54
  def start_server(port)
53
55
  require 'softcover/server/app'
54
- rebuild
55
56
  puts "Running Softcover server on http://localhost:#{port}"
56
57
  Softcover::App.set :port, port
57
58
  Softcover::App.run!
58
59
  end
59
60
 
60
61
  def run(port)
62
+ rebuild
61
63
  listen_for_changes
62
64
  start_server port
63
65
  end
@@ -1,11 +1,12 @@
1
1
  ---
2
- title: <%= name %>
3
2
  slug: <%= name %>
4
3
  filename: <%= name %>
5
- subtitle: Change-me
6
- cover: images/cover.png
4
+ title: Title of the Book
5
+ subtitle: Change me
7
6
  description: Change me.
7
+ author: Author Name
8
8
  copyright: <%= Time.new.year %>
9
9
  uuid: <%= SecureRandom.uuid %>
10
+ cover: images/cover.png
10
11
  pdf_preview_page_range: 1..30
11
12
  epub_mobi_preview_chapter_range: 0..1
@@ -130,5 +130,15 @@
130
130
  \newcommand{\heading}[1]{\textbf{#1}}
131
131
  \newcommand{\kode}[1]{\textcolor{darkgreen}{\textbf{\texttt{#1}}}}
132
132
 
133
+ % Subtitle command
134
+ \usepackage{titling}
135
+ \newcommand{\subtitle}[1]{%
136
+ \posttitle{%
137
+ \par\end{center}
138
+ \begin{center}\large#1\end{center}
139
+ \vskip0.5em}%
140
+ }
141
+
133
142
  % Add custom commands
134
143
  \usepackage{custom}
144
+
@@ -13,6 +13,11 @@ module Softcover::Utils
13
13
  Dir.glob(path('chapters/*.md')).empty? ? :polytex : :markdown
14
14
  end
15
15
 
16
+ # Returns the slug to be unpublished.
17
+ def unpublish_slug
18
+ Softcover::BookManifest.new(origin: source).slug
19
+ end
20
+
16
21
  def reset_current_book!
17
22
  @@current_book = nil
18
23
  end
@@ -54,6 +59,65 @@ module Softcover::Utils
54
59
  "#{number.round} #{UNITS[ exponent ]}"
55
60
  end
56
61
 
62
+
63
+ # Writes the master LaTeX file <name>.tex to use chapters from Book.txt.
64
+ # We skip this step if Book.txt doesn't exist, as that means the user
65
+ # is writing raw LaTeX.
66
+ def write_master_latex_file(manifest)
67
+ if File.exist?(Softcover::BookManifest::TXT_PATH)
68
+ File.write(master_filename(manifest), master_content(manifest))
69
+ end
70
+ end
71
+
72
+ # Returns the name of the master LaTeX file.
73
+ def master_filename(manifest)
74
+ "#{manifest.filename}.tex"
75
+ end
76
+
77
+ # Returns the lines of Book.txt as an array.
78
+ def book_txt_lines
79
+ File.readlines(Softcover::BookManifest::TXT_PATH)
80
+ end
81
+
82
+ # Returns the content for the master LaTeX file.
83
+ def master_content(manifest)
84
+ comment = /^\s*#.*$/
85
+ front_or_mainmatter = /(.*):\s*$/
86
+ source_file = /(.*)(?:\.md|\.tex)\s*$/
87
+
88
+ tex_file = [master_latex_header(manifest)]
89
+ book_txt_lines.each do |line|
90
+ if line.match(comment) # commented-out line
91
+ next
92
+ elsif line.match(source_file)
93
+ tex_file << "\\include{#{manifest.polytex_dir}/#{$1}}"
94
+ elsif line.match(front_or_mainmatter) # frontmatter or mainmatter
95
+ tex_file << "\\#{$1}"
96
+ elsif line.strip == 'cover'
97
+ tex_file << '\\includepdf{images/cover.pdf}'
98
+ else # raw command, like 'maketitle' or 'tableofcontents'
99
+ tex_file << "\\#{line.strip}"
100
+ end
101
+ end
102
+ tex_file << '\end{document}'
103
+ tex_file.join("\n")
104
+ end
105
+
106
+ def master_latex_header(manifest)
107
+ subtitle = manifest.subtitle.nil? ? "" : "\\subtitle{#{manifest.subtitle}}"
108
+ <<-EOS
109
+ \\documentclass[14pt]{extbook}
110
+ \\usepackage{softcover}
111
+ \\VerbatimFootnotes % Allows verbatim text in footnotes
112
+ \\title{#{manifest.title}}
113
+ #{subtitle}
114
+ \\author{#{manifest.author}}
115
+ \\date{#{manifest.date}}
116
+
117
+ \\begin{document}
118
+ EOS
119
+ end
120
+
57
121
  # Returns the tmp version of a filename.
58
122
  # E.g., tmpify('foo.tex') => 'foo.tmp.tex'
59
123
  def tmpify(manifest, filename)
@@ -1,3 +1,3 @@
1
1
  module Softcover
2
- VERSION = "0.6.10"
2
+ VERSION = "0.7.0"
3
3
  end
@@ -18,9 +18,9 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_dependency 'polytexnic', '~> 0.6.10'
21
+ gem.add_dependency 'polytexnic', '~> 0.7.0'
22
22
  gem.add_dependency 'msgpack', '~> 0.4.2'
23
- gem.add_dependency 'nokogiri', '~> 1.5.0'
23
+ gem.add_dependency 'nokogiri', '~> 1.6.0'
24
24
  gem.add_dependency 'thor'
25
25
  gem.add_dependency 'activesupport'
26
26
  gem.add_dependency 'rest-client'
@@ -77,24 +77,4 @@ describe Softcover::App do
77
77
  end
78
78
  end
79
79
  end
80
-
81
- context "simple book" do
82
- before(:all) do
83
- generate_book(simple: true)
84
- Softcover::Builders::Html.new.build!
85
- end
86
- after(:all) { remove_book }
87
-
88
- before { chdir_to_book }
89
-
90
- let(:manifest) { Softcover::BookManifest.new }
91
- let(:chapter) { manifest.chapters[0] }
92
-
93
- it 'redirects / to first chapter' do
94
- get '/'
95
- expect(last_response).to be_redirect
96
- expect(last_response.location).to match chapter.slug
97
- end
98
- end
99
-
100
80
  end
@@ -9,8 +9,8 @@ describe Softcover::BookManifest do
9
9
  context "in valid book directory" do
10
10
 
11
11
  describe "basic information" do
12
- its(:title) { should eq "book" }
13
- its(:subtitle) { should eq "Change-me" }
12
+ its(:title) { should eq "Title of the Book" }
13
+ its(:subtitle) { should eq "Change me" }
14
14
  its(:description) { should eq "Change me." }
15
15
  its(:cover) { should eq "images/cover.png" }
16
16
  its(:author) { should eq "Author Name" }
@@ -45,7 +45,7 @@ describe Softcover::BookManifest do
45
45
  context "in a valid book subdirectory" do
46
46
  before { Dir.chdir 'chapters' }
47
47
  describe "finding the manifest in a higher directory" do
48
- its(:title) { should eq "book" }
48
+ its(:slug) { should eq "book" }
49
49
  end
50
50
  end
51
51
 
@@ -124,14 +124,29 @@ describe Softcover::Builders::Html do
124
124
  end
125
125
 
126
126
  describe "master LaTeX file" do
127
- let(:master_file) { Dir['*.tex'].reject { |f| f =~ /\.tmp/}.first }
127
+ let(:master_file) { builder.master_filename(builder.manifest) }
128
128
  subject { File.read(master_file) }
129
+ it { should include "\\title{#{builder.manifest.title}}" }
130
+ it { should include "\\subtitle{#{builder.manifest.subtitle}}" }
131
+ it { should include "\\author{#{builder.manifest.author}}" }
132
+ it { should include '\date{}' }
133
+ it { should include '\begin{document}' }
129
134
  it { should include '\include{generated_polytex/preface}' }
130
135
  it { should include '\include{generated_polytex/a_chapter}' }
131
136
  it { should include '\include{generated_polytex/another_chapter}' }
132
137
  it { should include '\include{generated_polytex/yet_another_chapter}' }
133
138
  it { should include '\end{document}' }
134
139
  end
140
+
141
+ describe "commented-out lines of Book.txt" do
142
+ let(:lines) { ['chapters/foo.md', '# chapters/bar.md'] }
143
+ let(:content) { builder.master_content(builder.manifest) }
144
+ before { builder.stub(:book_txt_lines).and_return(lines) }
145
+ it "should be ignored" do
146
+ expect(content).to include 'chapters/foo'
147
+ expect(content).not_to include 'chapters/bar'
148
+ end
149
+ end
135
150
  end
136
151
  end
137
152
  end
@@ -43,6 +43,14 @@ describe Softcover::Builders::Pdf do
43
43
  it "should write the correct PolyTeXnic commands file" do
44
44
  expect(File.read('polytexnic_commands.sty')).to match /newcommand/
45
45
  end
46
+
47
+ context "after removing Book.txt" do
48
+ before { FileUtils.rm Softcover::BookManifest::TXT_PATH }
49
+ it "should still build the book" do
50
+ expect(Softcover::BookManifest::TXT_PATH).not_to exist
51
+ expect { @builder.build! }.not_to raise_error
52
+ end
53
+ end
46
54
  end
47
55
  end
48
56
 
@@ -36,7 +36,6 @@ describe Softcover::CLI do
36
36
  context "softcover new options" do
37
37
  subject { `softcover help new` }
38
38
  it { should include '-p, [--polytex]' }
39
- it { should include '-s, [--simple]' }
40
39
  end
41
40
 
42
41
  context "softcover new" do
@@ -127,4 +126,25 @@ describe Softcover::CLI do
127
126
 
128
127
  it_should_behave_like "book"
129
128
  end
129
+
130
+ describe "stubbed commands" do
131
+
132
+ context "unpublish" do
133
+ before { Softcover::Utils.stub(:source).and_return(:markdown) }
134
+ it "should have the right slug" do
135
+ Softcover::BookManifest.should_receive(:new).with(origin: :markdown)
136
+ .and_return(OpenStruct.new(slug: ""))
137
+ Softcover::Utils.unpublish_slug
138
+ end
139
+ end
140
+
141
+
142
+ context "open" do
143
+ before { Softcover::Utils.stub(:source).and_return(:markdown) }
144
+ it "should have the right book" do
145
+ Softcover::Book.should_receive(:new).with(origin: :markdown)
146
+ Softcover::Commands::Opener::book
147
+ end
148
+ end
149
+ end
130
150
  end
@@ -29,7 +29,7 @@ describe Softcover::Commands::Generator do
29
29
  subject(:yml) { YAML.load_file(File.join name, 'book.yml') }
30
30
 
31
31
  it "should have the right title" do
32
- expect(yml['title']).to eq name
32
+ expect(yml['title']).to eq "Title of the Book"
33
33
  end
34
34
 
35
35
  it "should have the right copyright year" do
@@ -49,19 +49,15 @@ describe Softcover::Commands::Generator do
49
49
  expect { `softcover build` }.not_to raise_error
50
50
  end
51
51
 
52
- describe "base LaTeX file" do
53
- subject(:base) { 'foo_bar.tex' }
54
- it { should exist }
55
- it "should use the 14-point extbook doctype" do
56
- expect(File.read(base)).to match(/\[14pt\]\{extbook\}/)
57
- end
58
- end
59
-
60
52
  it "should have chapter files" do
61
53
  expect('chapters/a_chapter.tex').to exist
62
54
  expect('chapters/another_chapter.tex').to exist
63
55
  end
64
56
 
57
+ it "should have Book.txt" do
58
+ expect(Softcover::BookManifest::TXT_PATH).to exist
59
+ end
60
+
65
61
  it "should not have the markdown files" do
66
62
  expect('chapters/a_chapter.md').not_to exist
67
63
  end
@@ -108,20 +104,6 @@ describe Softcover::Commands::Generator do
108
104
  it "should have a right style file" do
109
105
  expect('softcover.sty').to exist
110
106
  end
111
-
112
- it "should include the right style file by default" do
113
- book_base = File.read('foo_bar.tex')
114
- expect(book_base).to match(/^\\usepackage{softcover}/)
115
- end
116
- end
117
-
118
- describe "base LaTeX file" do
119
- subject { File.read('foo_bar.tex') }
120
-
121
- it { should match(/\\include{chapters\/a_chapter}/) }
122
- it { should match(/\\include{chapters\/another_chapter}/) }
123
- it { should match(/\\title{.*?}/) }
124
- it { should match(/\\author{.*?}/) }
125
107
  end
126
108
 
127
109
  shared_examples "a chapter" do
@@ -140,128 +122,4 @@ describe Softcover::Commands::Generator do
140
122
  end
141
123
  end
142
124
  end
143
-
144
- context "generate simple book_base in non-book directory" do
145
-
146
- before(:all) do
147
- chdir_to_non_book
148
- @name = 'foo_bar'
149
- Softcover::Commands::Generator.generate_file_tree @name, simple: true,
150
- polytex: true
151
- end
152
-
153
- let(:name) { @name }
154
-
155
- before do
156
- chdir_to_non_book
157
- end
158
-
159
- after(:all) do
160
- chdir_to_non_book
161
- FileUtils.rm_rf name
162
- end
163
-
164
- it "should copy files" do
165
- expect(Softcover::Commands::Generator.verify!).to be_true
166
- end
167
-
168
- context "generated contents from template" do
169
-
170
- before { Dir.chdir(name) }
171
-
172
- it "should build all formats without error" do
173
- expect { `softcover build` }.not_to raise_error
174
- end
175
-
176
- describe "base LaTeX file" do
177
- subject(:base) { 'foo_bar.tex' }
178
- it { should exist }
179
-
180
- describe "contents" do
181
- subject(:text) { File.read(base) }
182
- it { should match /\[14pt\]\{extbook\}/ }
183
- it { should_not match /frontmatter/ }
184
- it { should_not match /mainmatter/ }
185
- end
186
- end
187
-
188
- it "should have chapter files" do
189
- expect('chapters/a_chapter.tex').to exist
190
- expect('chapters/another_chapter.tex').to exist
191
- end
192
-
193
- it "should not have preface file" do
194
- expect('chapters/preface.tex').not_to exist
195
- end
196
- end
197
- end
198
-
199
- context "generate Markdown book in non-book directory" do
200
-
201
- before(:all) do
202
- chdir_to_non_book
203
- @name = 'foo_bar'
204
- Softcover::Commands::Generator.generate_file_tree @name
205
- end
206
-
207
- let(:name) { @name }
208
-
209
- before do
210
- chdir_to_non_book
211
- end
212
-
213
- after(:all) do
214
- chdir_to_non_book
215
- FileUtils.rm_rf name
216
- end
217
-
218
- it "should copy files" do
219
- expect(Softcover::Commands::Generator.verify!).to be_true
220
- end
221
-
222
- context "generated contents from template" do
223
-
224
- before { Dir.chdir(name) }
225
-
226
- it "should build all formats without error" do
227
- expect { `softcover build` }.not_to raise_error
228
- end
229
-
230
- describe "base LaTeX file" do
231
- subject(:base) { 'foo_bar.tex' }
232
- it { should exist }
233
- it "should use the 14-point extbook doctype" do
234
- expect(File.read(base)).to match(/\[14pt\]\{extbook\}/)
235
- end
236
- end
237
-
238
- it "should have the markdown files" do
239
- expect('chapters/a_chapter.md').to exist
240
- expect('chapters/another_chapter.md').to exist
241
- end
242
- end
243
- end
244
-
245
- context "overwriting" do
246
- let(:name) { 'bar' }
247
- before do
248
- chdir_to_non_book
249
- $stdin.should_receive(:gets).and_return("a")
250
-
251
- silence do
252
- 2.times do
253
- Softcover::Commands::Generator.generate_file_tree name, polytex: true
254
- end
255
- end
256
- end
257
-
258
- after do
259
- chdir_to_non_book
260
- FileUtils.rm_rf name
261
- end
262
-
263
- it "should overwrite files" do
264
- expect(Softcover::Commands::Generator.verify!).to be_true
265
- end
266
- end
267
125
  end
@@ -1,8 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
3
  require 'webmock/rspec'
4
-
5
4
  require 'webmock_helpers'
5
+ require 'ostruct'
6
6
 
7
7
  # require 'simplecov'
8
8
  # SimpleCov.start
@@ -160,7 +160,6 @@ module WebmockHelpers
160
160
  Dir.chdir File.join File.dirname(__FILE__), "fixtures/"
161
161
  flags = []
162
162
  flags << '-p' unless options[:markdown]
163
- flags << '-s' if options[:simple]
164
163
  silence { system "softcover new #{name} #{flags.join(' ')}" }
165
164
  chdir_to_book
166
165
  File.mkdir 'html' unless File.exist?('html')
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.10
4
+ version: 0.7.0
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-30 00:00:00.000000000 Z
12
+ date: 2013-12-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: polytexnic
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ~>
19
19
  - !ruby/object:Gem::Version
20
- version: 0.6.10
20
+ version: 0.7.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ~>
26
26
  - !ruby/object:Gem::Version
27
- version: 0.6.10
27
+ version: 0.7.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: msgpack
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - ~>
47
47
  - !ruby/object:Gem::Version
48
- version: 1.5.0
48
+ version: 1.6.0
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ~>
54
54
  - !ruby/object:Gem::Version
55
- version: 1.5.0
55
+ version: 1.6.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: thor
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -368,9 +368,12 @@ files:
368
368
  - .pull_requests/1385518404
369
369
  - .pull_requests/1385766008
370
370
  - .pull_requests/1385778329
371
+ - .pull_requests/1385834422
372
+ - .pull_requests/1385835007
373
+ - .pull_requests/1385862948
374
+ - .pull_requests/1386099285
375
+ - .pull_requests/1386115582
371
376
  - .rspec
372
- - .ruby-gemset
373
- - .ruby-version
374
377
  - Gemfile
375
378
  - LICENSE.txt
376
379
  - README.md
@@ -415,7 +418,6 @@ files:
415
418
  - lib/softcover/template/.softcover-deploy
416
419
  - lib/softcover/template/Book.txt
417
420
  - lib/softcover/template/README.md
418
- - lib/softcover/template/book.tex
419
421
  - lib/softcover/template/book.yml.erb
420
422
  - lib/softcover/template/chapters/a_chapter.md
421
423
  - lib/softcover/template/chapters/a_chapter.tex
@@ -977,7 +979,6 @@ files:
977
979
  - lib/softcover/template/images/cover.png
978
980
  - lib/softcover/template/images/figures/.gitkeep
979
981
  - lib/softcover/template/polytexnic_commands.sty
980
- - lib/softcover/template/simple_book.tex
981
982
  - lib/softcover/template/softcover.sty
982
983
  - lib/softcover/template/upquote.sty
983
984
  - lib/softcover/uploader.rb
@@ -1028,7 +1029,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1028
1029
  version: '0'
1029
1030
  requirements: []
1030
1031
  rubyforge_project:
1031
- rubygems_version: 2.0.6
1032
+ rubygems_version: 2.0.14
1032
1033
  signing_key:
1033
1034
  specification_version: 4
1034
1035
  summary: A typesetting system for technical authors
@@ -1 +0,0 @@
1
- polytexnic
@@ -1 +0,0 @@
1
- 2.0.0-p247
@@ -1,21 +0,0 @@
1
- \documentclass[14pt]{extbook}
2
- \usepackage{softcover}
3
- \VerbatimFootnotes % Allows verbatim text in footnotes
4
-
5
- \title{Title of the Book}
6
- \author{Author Name}
7
- \date{} % Leave blank, enter a date, or remove to use today's date.
8
-
9
- \begin{document}
10
- \includepdf{images/cover.pdf}
11
- \frontmatter
12
- \maketitle
13
- \tableofcontents
14
- % List frontmatter sections here (preface, foreword, etc.).
15
- \include{chapters/preface}
16
- \mainmatter
17
- % List chapters here in the order they should appear in the book.
18
- \include{chapters/a_chapter}
19
- \include{chapters/another_chapter}
20
- \include{chapters/yet_another_chapter}
21
- \end{document}
@@ -1,14 +0,0 @@
1
- \documentclass[14pt]{extbook}
2
- \usepackage{softcover}
3
- \VerbatimFootnotes % Allows verbatim text in footnotes
4
-
5
- \title{Title of the Book}
6
- \author{Author Name}
7
- \date{} % Leave blank, enter a date, or remove to use today's date
8
-
9
- \begin{document}
10
- \maketitle
11
- % List chapters here in the order they should appear in the book.
12
- \include{chapters/a_chapter}
13
- \include{chapters/another_chapter}
14
- \end{document}