softcover 1.6.3 → 1.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d11057ebeea09cb563797b0bd041806d981e9731a35d25f3b2c4a8197982f4e2
4
- data.tar.gz: af6811fa06aff4fc4e2502aaf6410540d754dd61c335072134fca94f7fa40a19
3
+ metadata.gz: '03961f991d4553331d9dad48a1f3cda5754cd493e12c6161ba9157955831cbe7'
4
+ data.tar.gz: c9780421d820bb9e9068daebff29a2aff74ee4f958cae2292ee5f6bb79739e65
5
5
  SHA512:
6
- metadata.gz: a6abbbdee93d942c6dd4f2368a3d8288f5e7e06c10407d819ca014ce00109f62bfe7b773258551e2f6d60553ee5ee723369ab59503488397861732a86d09dac6
7
- data.tar.gz: 9fd31614391b186465d4b610d2cd06799e82941d1998b4342918120790e08f81610032b085ba932092c6660c55cc858700941e4c75e7ca5398ea0e86140c13f5
6
+ metadata.gz: c5a786aa431d8b3fb533275a3951750846b7555fb7513346d91205caa81a30767303fe3854d44d0c6cb97323986ba11d0c1a0ab6b0c8c0147fc379e2f56ec2dc
7
+ data.tar.gz: 4a673b41f0e6105f973a7066ef66ba42c0fde254b8d1d2ba9541e3a2a100d68069d54a96fda7931bdd7707e96c90cc4dd67d7e59e2e91a4755a50376b5a8d4b8
data/Gemfile.lock CHANGED
@@ -1,23 +1,22 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- softcover (1.6.3)
4
+ softcover (1.7.2)
5
5
  activesupport (~> 4.2.3)
6
6
  async_sinatra (~> 1.1.0)
7
7
  coffee-script (>= 2.2.0)
8
8
  curb (>= 0.9.7)
9
9
  i18n (>= 0.7.0)
10
10
  kramdown (>= 1.6.0)
11
- listen (~> 1.3.1)
11
+ listen (~> 3.2.1)
12
12
  maruku (~> 0.7.1)
13
13
  msgpack (~> 1.2.0)
14
14
  nokogiri (>= 1.6.0, < 2.0)
15
- polytexnic (~> 1.5.16)
16
- pygments.rb (~> 1.2.1)
17
- rb-fsevent (~> 0.9.3)
15
+ polytexnic (~> 1.6)
16
+ pygments.rb (~> 2.1)
18
17
  rest-client (>= 1.8.0)
19
18
  ruby-progressbar (~> 1.10)
20
- sanitize (~> 4.6.3)
19
+ sanitize (>= 4.6.3, < 5.3.0)
21
20
  sinatra (~> 1.4.4)
22
21
  sinatra-respond_to (~> 0.9.0)
23
22
  thin (~> 1.6.1)
@@ -26,7 +25,7 @@ PATH
26
25
  GEM
27
26
  remote: https://rubygems.org/
28
27
  specs:
29
- activesupport (4.2.11.1)
28
+ activesupport (4.2.11.3)
30
29
  i18n (~> 0.7)
31
30
  minitest (~> 5.1)
32
31
  thread_safe (~> 0.3, >= 0.3.4)
@@ -36,84 +35,83 @@ GEM
36
35
  async_sinatra (1.1.0)
37
36
  rack (>= 1.4.1)
38
37
  sinatra (>= 1.3.2)
39
- coderay (1.1.2)
38
+ coderay (1.1.3)
40
39
  coffee-script (2.4.1)
41
40
  coffee-script-source
42
41
  execjs
43
42
  coffee-script-source (1.12.2)
44
- concurrent-ruby (1.1.6)
43
+ concurrent-ruby (1.1.8)
45
44
  coveralls (0.8.23)
46
45
  json (>= 1.8, < 3)
47
46
  simplecov (~> 0.16.1)
48
47
  term-ansicolor (~> 1.3)
49
48
  thor (>= 0.19.4, < 2.0)
50
49
  tins (~> 1.6)
51
- crack (0.4.3)
52
- safe_yaml (~> 1.0.0)
50
+ crack (0.4.5)
51
+ rexml
53
52
  crass (1.0.6)
54
- curb (0.9.10)
53
+ curb (0.9.11)
55
54
  daemons (1.3.1)
56
- diff-lcs (1.3)
57
- docile (1.3.2)
55
+ diff-lcs (1.4.4)
56
+ docile (1.3.5)
58
57
  domain_name (0.5.20190701)
59
58
  unf (>= 0.0.5, < 1.0.0)
60
59
  eventmachine (1.2.7)
61
60
  execjs (2.7.0)
62
- ffi (1.12.2)
61
+ ffi (1.14.2)
63
62
  hashdiff (1.0.1)
64
63
  http-accept (1.7.0)
65
64
  http-cookie (1.0.3)
66
65
  domain_name (~> 0.5)
67
66
  i18n (0.9.5)
68
67
  concurrent-ruby (~> 1.0)
69
- json (2.3.0)
70
- kramdown (1.17.0)
71
- listen (1.3.1)
72
- rb-fsevent (>= 0.9.3)
73
- rb-inotify (>= 0.9)
74
- rb-kqueue (>= 0.2)
68
+ json (2.3.1)
69
+ kramdown (2.3.0)
70
+ rexml
71
+ listen (3.2.1)
72
+ rb-fsevent (~> 0.10, >= 0.10.3)
73
+ rb-inotify (~> 0.9, >= 0.9.10)
75
74
  maruku (0.7.3)
76
75
  method_source (1.0.0)
77
76
  mime-types (3.3.1)
78
77
  mime-types-data (~> 3.2015)
79
- mime-types-data (3.2019.1009)
80
- mini_portile2 (2.4.0)
81
- minitest (5.14.0)
78
+ mime-types-data (3.2021.0225)
79
+ mini_portile2 (2.5.0)
80
+ minitest (5.14.4)
82
81
  msgpack (1.2.10)
83
- multi_json (1.14.1)
84
82
  netrc (0.11.0)
85
- nokogiri (1.10.9)
86
- mini_portile2 (~> 2.4.0)
87
- nokogumbo (1.5.0)
88
- nokogiri
89
- polytexnic (1.5.16)
83
+ nokogiri (1.11.1)
84
+ mini_portile2 (~> 2.5.0)
85
+ racc (~> 1.4)
86
+ nokogumbo (2.0.4)
87
+ nokogiri (~> 1.8, >= 1.8.4)
88
+ polytexnic (1.6.2)
90
89
  json (~> 2.3.0)
91
- kramdown (~> 1.17)
90
+ kramdown (>= 1.17, < 3.0)
92
91
  msgpack (~> 1.2.0)
93
- nokogiri (~> 1.10.8)
94
- pygments.rb (~> 1.2.1)
95
- pry (0.13.1)
92
+ nokogiri (>= 1.6.0, < 2.0)
93
+ pygments.rb (~> 2.1)
94
+ pry (0.14.0)
96
95
  coderay (~> 1.1)
97
96
  method_source (~> 1.0)
98
- public_suffix (4.0.4)
99
- pygments.rb (1.2.1)
100
- multi_json (>= 1.0.0)
97
+ public_suffix (4.0.6)
98
+ pygments.rb (2.1.0)
99
+ racc (1.5.2)
101
100
  rack (1.6.13)
102
101
  rack-protection (1.5.5)
103
102
  rack
104
103
  rack-test (1.1.0)
105
104
  rack (>= 1.0, < 3)
106
- rake (13.0.1)
107
- rb-fsevent (0.9.8)
105
+ rake (13.0.3)
106
+ rb-fsevent (0.10.4)
108
107
  rb-inotify (0.10.1)
109
108
  ffi (~> 1.0)
110
- rb-kqueue (0.2.5)
111
- ffi (>= 0.5.0)
112
109
  rest-client (2.1.0)
113
110
  http-accept (>= 1.7.0, < 2.0)
114
111
  http-cookie (>= 1.0.2, < 2.0)
115
112
  mime-types (>= 1.16, < 4.0)
116
113
  netrc (~> 0.8)
114
+ rexml (3.2.4)
117
115
  rspec (2.14.1)
118
116
  rspec-core (~> 2.14.0)
119
117
  rspec-expectations (~> 2.14.0)
@@ -122,13 +120,13 @@ GEM
122
120
  rspec-expectations (2.14.5)
123
121
  diff-lcs (>= 1.1.3, < 2.0)
124
122
  rspec-mocks (2.14.6)
125
- ruby-prof (1.3.1)
126
- ruby-progressbar (1.10.1)
123
+ ruby-prof (1.4.3)
124
+ ruby-progressbar (1.11.0)
127
125
  safe_yaml (1.0.4)
128
- sanitize (4.6.6)
126
+ sanitize (5.2.3)
129
127
  crass (~> 1.0.2)
130
- nokogiri (>= 1.4.4)
131
- nokogumbo (~> 1.4)
128
+ nokogiri (>= 1.8.0)
129
+ nokogumbo (~> 2.0)
132
130
  simplecov (0.16.1)
133
131
  docile (~> 1.1)
134
132
  json (>= 1.8, < 3)
@@ -147,17 +145,17 @@ GEM
147
145
  daemons (~> 1.0, >= 1.0.9)
148
146
  eventmachine (~> 1.0, >= 1.0.4)
149
147
  rack (~> 1.0)
150
- thor (1.0.1)
148
+ thor (1.1.0)
151
149
  thread_safe (0.3.6)
152
150
  tilt (2.0.10)
153
- tins (1.24.1)
151
+ tins (1.28.0)
154
152
  sync
155
- tzinfo (1.2.7)
153
+ tzinfo (1.2.9)
156
154
  thread_safe (~> 0.1)
157
155
  unf (0.1.4)
158
156
  unf_ext
159
157
  unf_ext (0.0.7.7)
160
- webmock (3.8.3)
158
+ webmock (3.12.0)
161
159
  addressable (>= 2.3.6)
162
160
  crack (>= 0.3.2)
163
161
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -162,6 +162,12 @@ body #book {
162
162
  margin-top: -0.4em;
163
163
  }
164
164
 
165
+ #book .code .highlight .linenos {
166
+ color: #666;
167
+ font-weight: normal;
168
+ }
169
+
170
+ /* Include `.lineno` for backward-compatibility with Pygments 1. */
165
171
  #book .code .highlight .lineno {
166
172
  color: #666;
167
173
  font-weight: normal;
@@ -434,7 +440,7 @@ body #book {
434
440
  color: red;
435
441
  }
436
442
 
437
- #book .sc {
443
+ #book .smallcaps {
438
444
  font-variant: small-caps;
439
445
  }
440
446
 
@@ -162,6 +162,12 @@ body #book {
162
162
  margin-top: -0.4em;
163
163
  }
164
164
 
165
+ #book .code .highlight .linenos {
166
+ color: #666;
167
+ font-weight: normal;
168
+ }
169
+
170
+ /* Include `.lineno` for backward-compatibility with Pygments 1. */
165
171
  #book .code .highlight .lineno {
166
172
  color: #666;
167
173
  font-weight: normal;
@@ -434,7 +440,7 @@ body #book {
434
440
  color: red;
435
441
  }
436
442
 
437
- #book .sc {
443
+ #book .smallcaps {
438
444
  font-variant: small-caps;
439
445
  }
440
446
 
@@ -31,25 +31,10 @@ module Softcover
31
31
  def ensure_style_file_locations
32
32
  styles_dir = Softcover::Directories::STYLES
33
33
  mkdir styles_dir
34
- fix_custom_include
35
34
  files = Dir.glob('*.sty')
36
35
  FileUtils.mv(files, styles_dir)
37
36
  end
38
37
 
39
- # Fixes the custom include.
40
- # The template includes the custom style file as an example
41
- # of file inclusion. Unfortunately, the location of 'custom.sty', has
42
- # changed, which will result in older templates spontaneously breaking.
43
- def fix_custom_include
44
- first_chapter = File.join('chapters', 'a_chapter.tex')
45
- if File.exist?(first_chapter)
46
- text = File.read(first_chapter)
47
- text.gsub!('<<(custom.sty',
48
- "<<(#{Softcover::Directories::STYLES}/custom.sty" )
49
- File.write(first_chapter, text)
50
- end
51
- end
52
-
53
38
  # Writes out the PolyTeXnic commands from polytexnic.
54
39
  def write_polytexnic_commands_file
55
40
  Polytexnic.write_polytexnic_style_file(styles_dir)
@@ -83,4 +68,4 @@ module Softcover
83
68
  end
84
69
 
85
70
  end
86
- end
71
+ end
data/lib/softcover/cli.rb CHANGED
@@ -205,8 +205,8 @@ module Softcover
205
205
  method_option :polytex,
206
206
  :type => :boolean,
207
207
  :default => false,
208
- :aliases => "-p",
209
- :desc => "Generate a PolyTeX document."
208
+ :aliases => %w[-p --latex -l],
209
+ :desc => "Generate a LaTeX document."
210
210
  method_option :article,
211
211
  :type => :boolean,
212
212
  :default => false,
@@ -267,7 +267,7 @@ module Softcover
267
267
  # ===============================================
268
268
  # Utilities
269
269
  # ===============================================
270
- desc "exercises", "Add exercise id elements as spans (warning: files are overwritten)"
270
+ desc "exercises", "Add exercise id elements as spans"
271
271
  define_method "exercises" do
272
272
  Softcover::Commands::Exercises.add_to_chapters!
273
273
  end
@@ -43,7 +43,7 @@ module Softcover
43
43
  [:java, 'Java'],
44
44
  [:zip, 'zip'],
45
45
  [:epubcheck, 'EpubCheck'],
46
- [:python2, 'Python 2']
46
+ [:python3, 'Python 3']
47
47
  ]
48
48
  end
49
49
 
@@ -86,8 +86,8 @@ module Softcover
86
86
  message += " ∟ Unzip and place epubcheck-4.2.2/ in a directory on your path"
87
87
  when :inkscape
88
88
  message = "Inkscape (https://inkscape.org/)"
89
- when :python2
90
- message = "Configure your shell so that `python` runs Python 2"
89
+ when :python3
90
+ message = "Configure your shell so that `python3` runs Python 3"
91
91
  else
92
92
  raise "Unknown label #{label}"
93
93
  end
@@ -11,16 +11,14 @@ module Softcover::Commands::Server
11
11
  return if defined?(@no_listener) && @no_listener
12
12
  server_pid = Process.pid
13
13
  filter_regex = /(\.md|\.tex|custom\.sty|custom\.css|Book\.txt|book\.yml)$/
14
- @listener = Listen.to('.')
15
- @listener.filter(filter_regex)
16
-
17
- @listener.change do |modified|
14
+ @listener = Listen.to('.', only: filter_regex, ignore: /html\//) do |modified|
18
15
  first_modified = modified.try(:first)
19
16
  unless first_modified =~ ignore_regex
20
17
  rebuild first_modified
21
18
  Process.kill("HUP", server_pid)
22
19
  end
23
20
  end
21
+
24
22
  @listener.start
25
23
  end
26
24
 
@@ -65,3 +63,15 @@ module Softcover::Commands::Server
65
63
  start_server port, bind
66
64
  end
67
65
  end
66
+
67
+ # Listen >=2.8 patch to silence duplicate directory errors. USE AT YOUR OWN RISK
68
+ require 'listen/record/symlink_detector'
69
+ module Listen
70
+ class Record
71
+ class SymlinkDetector
72
+ def _fail(_, _)
73
+ fail Error, "Don't watch locally-symlinked directory twice"
74
+ end
75
+ end
76
+ end
77
+ end
@@ -274,12 +274,9 @@ module Softcover::Utils
274
274
  else
275
275
  ""
276
276
  end
277
- when :python2
278
- python = get_filename(:python2)
279
- # Python 2 stupidly outputs the version number to STDERR instead of STDOUT.
280
- require 'open3'
281
- stdout, stderr, status = Open3.capture3("#{python} --version")
282
- stderr.match(/Python 2/) ? python : ""
277
+ when :python3
278
+ python = get_filename(:python3)
279
+ `#{python} --version`.match(/Python 3\.*/) ? python : ""
283
280
  else
284
281
  get_filename(label)
285
282
  end
@@ -1,3 +1,3 @@
1
1
  module Softcover
2
- VERSION = "1.6.3"
2
+ VERSION = "1.7.2"
3
3
  end
data/softcover.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["michael@softcover.io"]
11
11
  gem.description = %q{Command-line interface for softcover.io}
12
12
  gem.summary = %q{An ebook production system & sales and marketing platform for technical authors}
13
- gem.homepage = "http://manual.softcover.io/book"
13
+ gem.homepage = "https://github.com/softcover/softcover"
14
14
  gem.license = "MIT"
15
15
 
16
16
  gem.files = `git ls-files`.split($/)
@@ -18,7 +18,7 @@ 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', '~> 1.5.16'
21
+ gem.add_dependency 'polytexnic', '~> 1.6'
22
22
  gem.add_dependency 'msgpack', '~> 1.2.0'
23
23
  gem.add_dependency 'nokogiri', '>= 1.6.0', '< 2.0'
24
24
  gem.add_dependency 'thor', '>= 0.18.1', '< 2.0'
@@ -28,7 +28,7 @@ Gem::Specification.new do |gem|
28
28
  gem.add_dependency 'curb', '>= 0.9.7'
29
29
  gem.add_dependency 'ruby-progressbar', '~> 1.10'
30
30
  gem.add_dependency 'maruku', '~> 0.7.1'
31
- gem.add_dependency 'pygments.rb', '~> 1.2.1'
31
+ gem.add_dependency 'pygments.rb', '~> 2.1'
32
32
  gem.add_dependency 'kramdown', '>= 1.6.0'
33
33
 
34
34
  gem.add_dependency 'sinatra', '~> 1.4.4'
@@ -36,7 +36,6 @@ Gem::Specification.new do |gem|
36
36
  gem.add_dependency 'async_sinatra', '~> 1.1.0'
37
37
  gem.add_dependency 'sinatra-respond_to', '~> 0.9.0'
38
38
  gem.add_dependency 'coffee-script', '>= 2.2.0'
39
- gem.add_dependency 'listen', '~> 1.3.1'
40
- gem.add_dependency 'rb-fsevent', '~> 0.9.3'
41
- gem.add_dependency 'sanitize', '~> 4.6.3'
39
+ gem.add_dependency 'listen', '~> 3.2.1'
40
+ gem.add_dependency 'sanitize', '>= 4.6.3', '< 5.3.0'
42
41
  end
@@ -73,7 +73,7 @@ describe Softcover::Builders::Pdf do
73
73
 
74
74
  context "after removing Book.txt" do
75
75
  before { FileUtils.rm Softcover::BookManifest::TXT_PATH }
76
- it "should still build the book" do
76
+ it "should still build the book (run ulimit -n 1024 if this fails)" do
77
77
  expect(Softcover::BookManifest::TXT_PATH).not_to exist
78
78
  expect { @builder.build! }.not_to raise_error
79
79
  end
data/spec/cli_spec.rb CHANGED
@@ -48,7 +48,7 @@ describe Softcover::CLI do
48
48
 
49
49
  context "softcover new options" do
50
50
  subject { `softcover help new` }
51
- it { should include '-p, [--polytex]' }
51
+ it { should include '-p, --latex, -l, [--polytex]' }
52
52
  it { should include '-a, [--article]' }
53
53
  end
54
54
 
@@ -155,6 +155,19 @@ describe Softcover::CLI do
155
155
  it_should_behave_like "book"
156
156
  end
157
157
 
158
+ describe "LaTeX books" do
159
+
160
+ before(:all) do
161
+ remove_book
162
+ chdir_to_fixtures
163
+ silence { `softcover new book --latex` }
164
+ chdir_to_book
165
+ end
166
+ after(:all) { remove_book }
167
+
168
+ it_should_behave_like "book"
169
+ end
170
+
158
171
  describe "Markdown books" do
159
172
 
160
173
  before(:all) do
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: 1.6.3
4
+ version: 1.7.2
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: 2020-05-15 00:00:00.000000000 Z
12
+ date: 2021-03-06 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: 1.5.16
20
+ version: '1.6'
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: 1.5.16
27
+ version: '1.6'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: msgpack
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -169,14 +169,14 @@ dependencies:
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: 1.2.1
172
+ version: '2.1'
173
173
  type: :runtime
174
174
  prerelease: false
175
175
  version_requirements: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: 1.2.1
179
+ version: '2.1'
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: kramdown
182
182
  requirement: !ruby/object:Gem::Requirement
@@ -267,42 +267,34 @@ dependencies:
267
267
  requirements:
268
268
  - - "~>"
269
269
  - !ruby/object:Gem::Version
270
- version: 1.3.1
270
+ version: 3.2.1
271
271
  type: :runtime
272
272
  prerelease: false
273
273
  version_requirements: !ruby/object:Gem::Requirement
274
274
  requirements:
275
275
  - - "~>"
276
276
  - !ruby/object:Gem::Version
277
- version: 1.3.1
278
- - !ruby/object:Gem::Dependency
279
- name: rb-fsevent
280
- requirement: !ruby/object:Gem::Requirement
281
- requirements:
282
- - - "~>"
283
- - !ruby/object:Gem::Version
284
- version: 0.9.3
285
- type: :runtime
286
- prerelease: false
287
- version_requirements: !ruby/object:Gem::Requirement
288
- requirements:
289
- - - "~>"
290
- - !ruby/object:Gem::Version
291
- version: 0.9.3
277
+ version: 3.2.1
292
278
  - !ruby/object:Gem::Dependency
293
279
  name: sanitize
294
280
  requirement: !ruby/object:Gem::Requirement
295
281
  requirements:
296
- - - "~>"
282
+ - - ">="
297
283
  - !ruby/object:Gem::Version
298
284
  version: 4.6.3
285
+ - - "<"
286
+ - !ruby/object:Gem::Version
287
+ version: 5.3.0
299
288
  type: :runtime
300
289
  prerelease: false
301
290
  version_requirements: !ruby/object:Gem::Requirement
302
291
  requirements:
303
- - - "~>"
292
+ - - ">="
304
293
  - !ruby/object:Gem::Version
305
294
  version: 4.6.3
295
+ - - "<"
296
+ - !ruby/object:Gem::Version
297
+ version: 5.3.0
306
298
  description: Command-line interface for softcover.io
307
299
  email:
308
300
  - michael@softcover.io
@@ -608,7 +600,7 @@ files:
608
600
  - spec/utils_spec.rb
609
601
  - spec/webmock_helpers.rb
610
602
  - tasks/run_specs.rake
611
- homepage: http://manual.softcover.io/book
603
+ homepage: https://github.com/softcover/softcover
612
604
  licenses:
613
605
  - MIT
614
606
  metadata: {}
@@ -627,7 +619,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
627
619
  - !ruby/object:Gem::Version
628
620
  version: '0'
629
621
  requirements: []
630
- rubygems_version: 3.0.3
622
+ rubygems_version: 3.1.2
631
623
  signing_key:
632
624
  specification_version: 4
633
625
  summary: An ebook production system & sales and marketing platform for technical authors