softcover 1.5.11 → 1.6.0

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: 9271b77de55b41ba59269be86695d5f07b8d680e9e563d29a0a616559c7905e9
4
- data.tar.gz: caf61a0d47c3fe3bfbe90496529cc30457b95fa8b40961afc125ccffbc071131
3
+ metadata.gz: 886ab5a917abf3257be857060db1093474d3c7f44f8beecc1efbf06aed972862
4
+ data.tar.gz: aff32e009c3e4ca5098394186602116b6c6fc63c87cadd73c9ab5bd96f2cae95
5
5
  SHA512:
6
- metadata.gz: a2c9a933f1262b686c43dc6babd675996fc17ce7e620f0b9e8308001e770b931af34189ef6af51a3e619a5440dc6529ee026b226a8d9e542749cbacc9ee9f771
7
- data.tar.gz: 53a6989b47ff4ad782a6c796f25e2c59863bdf2694b2696ede22064182fb674c91d5a8dc29722e6740a8b747e9b8cba35452321be9e3809eb2a0093808238c55
6
+ metadata.gz: cdce663475b349497cdb1aa53f472d26ccf8f9043fcdde5590ff46ea73c33692dd54b766810e3c31b1386876f2f71a1fd2e445a8063d0bd403fb1105955b5c9a
7
+ data.tar.gz: 20c08b57bb53e0e0189096b60f8fe33a665129b4ea7980d51d899c184cead1ec7b262f9044bdd8ac7989e5ac7ec90cbe4c3c24476f94028c9936b244ebda7c1f
data/.circleci/config.yml CHANGED
@@ -20,10 +20,8 @@ jobs:
20
20
  sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh
21
21
  echo 'export PATH=$PATH:`echo ~`' >> $BASH_ENV
22
22
  curl -O -L https://github.com/IDPF/epubcheck/releases/download/v4.0.2/epubcheck-4.0.2.zip && unzip epubcheck-4.0.2.zip -d ~
23
- curl -o ~/kindlegen http://softcover-binaries.s3.amazonaws.com/kindlegen && chmod +x ~/kindlegen
24
- wget https://softcover-static.s3.amazonaws.com/Bodoni%2072%20Smallcaps%20Book.ttf && sudo cp 'Bodoni 72 Smallcaps Book.ttf' /usr/share/fonts/truetype/bodoni-classic
25
23
  sudo fc-cache -fsv
26
- # gem i softcover && softcover check # NOTE: enable to troubleshoot tex, gs, calibre, epubcheck, kindlegen issus
24
+ # gem i softcover && softcover check # NOTE: enable to troubleshoot tex, gs, calibre, epubcheck, issus
27
25
  - ruby/bundle-install
28
26
  - run:
29
27
  name: specs
data/.travis.yml CHANGED
@@ -12,9 +12,8 @@ before_install:
12
12
  - sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh
13
13
  - export PATH=$PATH:`echo ~`
14
14
  - curl -O -L https://github.com/IDPF/epubcheck/releases/download/v4.0.2/epubcheck-4.0.2.zip && unzip epubcheck-4.0.2.zip -d ~
15
- - curl -o ~/kindlegen http://softcover-binaries.s3.amazonaws.com/kindlegen && chmod +x ~/kindlegen
16
15
  - wget https://softcover-static.s3.amazonaws.com/Bodoni%2072%20Smallcaps%20Book.ttf && sudo cp 'Bodoni 72 Smallcaps Book.ttf' /usr/share/fonts/truetype/bodoni-classic
17
16
  - sudo fc-cache -fsv
18
- # - gem i softcover && softcover check # NOTE: enable to troubleshoot tex, gs, calibre, epubcheck, kindlegen issus
17
+ # - gem i softcover && softcover check # NOTE: enable to troubleshoot tex, gs, calibre, epubcheck, issus
19
18
 
20
- script: "bundle exec rspec -f d"
19
+ script: "bundle exec rspec -f d"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- softcover (1.5.11)
4
+ softcover (1.6.0)
5
5
  activesupport (~> 4.2.3)
6
6
  async_sinatra (~> 1.1.0)
7
7
  coffee-script (>= 2.2.0)
@@ -82,7 +82,7 @@ GEM
82
82
  msgpack (1.2.10)
83
83
  multi_json (1.14.1)
84
84
  netrc (0.11.0)
85
- nokogiri (1.10.8)
85
+ nokogiri (1.10.9)
86
86
  mini_portile2 (~> 2.4.0)
87
87
  nokogumbo (1.5.0)
88
88
  nokogiri
@@ -229,8 +229,9 @@ module Softcover
229
229
  texmath_dir = File.join(images_dir, 'texmath')
230
230
  mkdir images_dir
231
231
  mkdir texmath_dir
232
-
233
- File.write(path("epub/OEBPS/#{cover_filename}"), cover_page) if cover?(options)
232
+ if cover?(options)
233
+ File.write(path("epub/OEBPS/#{cover_filename}"), cover_page)
234
+ end
234
235
 
235
236
  pngs = []
236
237
  chapters.each_with_index do |chapter, i|
@@ -314,7 +315,7 @@ module Softcover
314
315
  # Workaround for bug in Inkscape 0.91 on MacOS X:
315
316
  # extract height/width from svg attributes and move them to style attr
316
317
  svg_height = svg['height'] # in ex
317
- svg_width = svg['width'] # in ex
318
+ svg_width = svg['width'] # in ex
318
319
  svg['style'] += ' height:'+svg_height+';' + ' width:'+svg_width+';'
319
320
  svg.remove_attribute('height')
320
321
  svg.remove_attribute('width')
@@ -323,25 +324,26 @@ module Softcover
323
324
  first_child.replace(svg) unless svg == first_child
324
325
  output = svg.to_xhtml
325
326
  svg_filename = File.join(texmath_dir, "#{digest(output)}.svg")
326
- svg_abspath = File.join("#{Dir.pwd}", svg_filename)
327
+ svg_abspath = File.join("#{Dir.pwd}", svg_filename)
327
328
  File.write(svg_filename, output)
328
329
  # Convert to PNG named:
329
330
  png_filename = svg_filename.sub('.svg', '.png')
330
- png_abspath = svg_abspath.sub('.svg', '.png')
331
+ png_abspath = svg_abspath.sub('.svg', '.png')
331
332
  pngs << png_filename
332
333
  #
333
334
  # Settings for texmath images in ePub / mobi
334
335
  ex2em_height_scaling = 0.51 # =1ex/1em for math png height
335
336
  ex2em_valign_scaling = 0.481482 # =1ex/1em for math png vertical-align
336
- ex2pt_scale_factor = 15 # =1ex/1pt scaling for SVG-->PNG conv.
337
+ ex2px_scale_factor = 20 # =1ex/1px scaling for SVG-->PNG conv.
337
338
  # These are used a three-step process below: Compute, Convert, Replace
338
- # STEP1: compute height and vertical-align in `em` units
339
+ # STEP1: compute height and vertical-align in `ex` units
339
340
  svg_height_in_ex = Float(svg_height.gsub('ex',''))
340
341
  # MathJax sets SVG height in `ex` units but we want `em` units for PNG
341
342
  png_height = (svg_height_in_ex * ex2em_height_scaling).to_s + 'em'
342
343
  # Extract vertical-align css proprty for inline math equations:
343
344
  if svg.parent.parent.attr('class') == "inline_math"
344
- vertical_align = svg['style'].scan(/vertical-align: (.*?);/).flatten.first
345
+ vertical_align = svg['style'].scan(/vertical-align: (.*?);/)
346
+ vertical_align = vertical_align.flatten.first
345
347
  if vertical_align
346
348
  valign_in_ex = Float(vertical_align.gsub('ex',''))
347
349
  png_valign = (valign_in_ex * ex2em_valign_scaling).to_s + 'em'
@@ -353,24 +355,27 @@ module Softcover
353
355
  end
354
356
  # STEP2: Generate PNG from each SVG (unless PNG exists already).
355
357
  unless File.exist?(png_filename)
356
- h = ex2pt_scale_factor * svg_height_in_ex # = PNG height in pt
357
358
  unless options[:silent] || options[:quiet]
358
359
  puts "Creating #{png_filename}"
359
360
  end
360
- # generate png from the MathJax_SVG using inkscape
361
- cmd = "#{inkscape} -f #{svg_abspath} -e #{png_abspath} -h #{h}pt"
361
+ # Generate png from the MathJax_SVG using Inkscape
362
+ # Use the -d option to get a sensible size:
363
+ # Resolution for bitmaps and rasterized filters
364
+ cmd = "#{inkscape} #{svg_abspath} -o #{png_abspath} -d 2"
362
365
  if options[:silent]
363
366
  silence { silence_stream(STDERR) { system cmd } }
364
367
  else
368
+ puts cmd
365
369
  silence_stream(STDERR) { system cmd }
366
370
  end
367
371
  end
368
372
  rm svg_filename
369
373
  # STEP 3: Replace svg element with an equivalent png.
370
374
  png = Nokogiri::XML::Node.new('img', source)
371
- png['src'] = File.join('images', 'texmath', File.basename(png_filename))
372
- png['alt'] = png_filename.sub('.png', '')
373
- png['style'] = 'height:' + png_height + ';'
375
+ png['src'] = File.join('images', 'texmath',
376
+ File.basename(png_filename))
377
+ png['alt'] = png_filename.sub('.png', '')
378
+ png['style'] = 'height:' + png_height + ';'
374
379
  if png_valign
375
380
  png['style'] += ' vertical-align:' + png_valign + ';'
376
381
  end
@@ -24,12 +24,8 @@ module Softcover
24
24
  # Returns the command for making a MOBI, based on the options.
25
25
  def mobi_command(filename, options={})
26
26
  silent = options[:silent] || Softcover.test?
27
- if options[:kindlegen] || options[:amazon]
28
- cmd = "#{kindlegen} ebooks/#{filename}.epub"
29
- else
30
- cmd = "#{calibre} ebooks/#{filename}.epub ebooks/#{filename}.mobi" +
31
- " #{calibre_options}"
32
- end
27
+ cmd = "#{calibre} ebooks/#{filename}.epub ebooks/#{filename}.mobi" +
28
+ " #{calibre_options}"
33
29
  puts cmd unless (options[:quiet] || silent)
34
30
  cmd
35
31
  end
@@ -57,10 +53,6 @@ module Softcover
57
53
  end
58
54
  opts.join(" ")
59
55
  end
60
-
61
- def kindlegen
62
- @kindlegen ||= executable(dependency_filename(:kindlegen))
63
- end
64
56
  end
65
57
  end
66
- end
58
+ end
data/lib/softcover/cli.rb CHANGED
@@ -45,9 +45,6 @@ module Softcover
45
45
  desc: "Run PDF generator in nonstopmode",
46
46
  type: :boolean
47
47
  elsif format == 'mobi'
48
- method_option :kindlegen, aliases: '-k',
49
- desc: "Use KindleGen to build the MOBI",
50
- type: :boolean
51
48
  method_option :amazon, aliases: '-a',
52
49
  desc: "Build for Amazon KDP", type: :boolean
53
50
  end
@@ -40,7 +40,6 @@ module Softcover
40
40
  [:phantomjs, 'PhantomJS'],
41
41
  [:inkscape, 'Inkscape'],
42
42
  [:calibre, 'Calibre'],
43
- [:kindlegen, 'KindleGen'],
44
43
  [:java, 'Java'],
45
44
  [:zip, 'zip'],
46
45
  [:epubcheck, 'EpubCheck'],
@@ -71,11 +70,6 @@ module Softcover
71
70
  message = "PhantomJS (https://phantomjs.org/download.html)\n"
72
71
  message += " ∟ Put bin/phantomjs version 2 somewhere on your path,"
73
72
  message += " e.g., in /usr/local/bin"
74
- when :kindlegen
75
- url = 'https://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000765211'
76
- message = "KindleGen (#{url})\n"
77
- message += " ∟ Put the kindlegen executable on your path,"
78
- message += " e.g., in /usr/local/bin"
79
73
  when :calibre
80
74
  url = 'https://calibre-ebook.com/'
81
75
  message = "Calibre (#{url})\n"
@@ -263,7 +263,7 @@ module Softcover::Utils
263
263
  version_4 = path('epubcheck-4.0.2/epubcheck.jar')
264
264
  first_path(version_4) || get_filename(:'epubcheck') || ""
265
265
  when :inkscape
266
- default = '/Applications/Inkscape.app/Contents/Resources/bin/inkscape'
266
+ default = '/Applications/Inkscape.app/Contents/MacOS/inkscape'
267
267
  filename_or_default(:inkscape, default)
268
268
  when :phantomjs
269
269
  phantomjs = get_filename(label)
@@ -1,3 +1,3 @@
1
1
  module Softcover
2
- VERSION = "1.5.11"
2
+ VERSION = "1.6.0"
3
3
  end
@@ -37,24 +37,6 @@ describe Softcover::Builders::Mobi do
37
37
  end
38
38
  end
39
39
 
40
- context "kindlegen" do
41
- let(:command) do
42
- @builder.mobi_command(@builder.mobi_filename, kindlegen: true)
43
- end
44
- it "should use Amazon.com's kindlegen" do
45
- expect(command).to include 'kindlegen'
46
- end
47
- end
48
-
49
- context "amazon" do
50
- let(:command) do
51
- @builder.mobi_command(@builder.mobi_filename, amazon: true)
52
- end
53
- it "should use Amazon.com's kindlegen" do
54
- expect(command).to include 'kindlegen'
55
- end
56
- end
57
-
58
40
  context "preview" do
59
41
  let(:filename) do
60
42
  @builder.mobi_filename(preview: true)
data/spec/cli_spec.rb CHANGED
@@ -43,7 +43,6 @@ describe Softcover::CLI do
43
43
  subject { `softcover help build:mobi` }
44
44
  it { should include '-q, [--quiet]' }
45
45
  it { should include '-s, [--silent]' }
46
- it { should include '-k, [--kindlegen]' }
47
46
  it { should include '-a, [--amazon]' }
48
47
  end
49
48
 
@@ -139,7 +138,6 @@ describe Softcover::CLI do
139
138
  context "command-line options" do
140
139
  subject(:options) { `softcover help build:mobi` }
141
140
  it { should_not include 'calibre' }
142
- it { should include 'kindlegen' }
143
141
  end
144
142
  end
145
143
  end
@@ -35,7 +35,6 @@ describe Softcover::Commands::Check do
35
35
  it { should match /Checking for PhantomJS.*Missing/ }
36
36
  it { should match /Checking for Inkscape.*Missing/ }
37
37
  it { should match /Checking for Calibre.*Missing/ }
38
- it { should match /Checking for KindleGen.*Missing/ }
39
38
  it { should match /Checking for Java.*Missing/ }
40
39
  it { should match /Checking for EpubCheck.*Missing/ }
41
40
  it { should match /Checking for ImageMagick.*Missing/ }
@@ -46,7 +45,6 @@ describe Softcover::Commands::Check do
46
45
  it { should match /PhantomJS/ }
47
46
  it { should match /Inkscape/ }
48
47
  it { should match /Calibre/ }
49
- it { should match /KindleGen/ }
50
48
  it { should match /Java/ }
51
49
  it { should match /EpubCheck/ }
52
50
  it { should match /ImageMagick/ }
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.5.11
4
+ version: 1.6.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: 2020-02-25 00:00:00.000000000 Z
12
+ date: 2020-03-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: polytexnic