jekyll-books 0.2.1 → 0.3.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
  SHA256:
3
- metadata.gz: c59c9ae557b182705af1b72463f36d6b07626f05f29a192643c602c52557b00a
4
- data.tar.gz: 96157a042254c8b62e2a60c9c27395a4bd25a03717ae246179e91595ca125f00
3
+ metadata.gz: 85a22ad3caf46109f426994c389833038857d95cc143e410b9505fb2e3e31456
4
+ data.tar.gz: bc168f8e78a84d14bdafc0b81188ce769d9a16ba2fd4ebc93ec3d9603dd19e95
5
5
  SHA512:
6
- metadata.gz: '09a2d4b4714d0738f7613e902e23c10e57d4312b24d8ab270856a534115d323d0b36fc5890a03fc272cdaeb3a3a0bb78136ea4d0373badfde856b25a9b975840'
7
- data.tar.gz: b3795977654cf4ac24f379a1b942d4c8226b70ab4fd4087969143657c28c7c4f98e824a9a0bd46f71e64cf713f90ce5bb6329c1a54f398288055209cc2e10e63
6
+ metadata.gz: 72c3738c0798c8b8f9dec909ff293e16ae614bc3149006aad0c171e006d2130bb80b507beb1ed250646def706cd3129d782ced540eb3be1f751f7df4a70e3f50
7
+ data.tar.gz: 00d0fae31d30261ce6cac519133e62653364a026377ef027c70c4f36a00f37c5436030707d6d72d4a950003b070fca022be69fea6b7db7a98d6fbaf6a8199250
data/jekyll-books.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "jekyll-books"
5
- spec.version = "0.2.1"
5
+ spec.version = "0.3.0"
6
6
  spec.authors = ["Sharon Zhang"]
7
7
  spec.email = ["zhangshiyu1992@hotmail.com"]
8
8
 
data/lib/_config.yml CHANGED
@@ -7,4 +7,11 @@ books_settings:
7
7
  book:
8
8
  layout: "book"
9
9
  chapter:
10
- layout: "chapter"
10
+ layout: "chapter"
11
+ # 是否自动打包成电子书
12
+ ebooks:
13
+ enabled: true
14
+ formats:
15
+ - "mobi"
16
+ - "pdf"
17
+ - ""
data/lib/jekyll-books.rb CHANGED
@@ -1,2 +1,3 @@
1
1
  require "jekyll/generators/book"
2
- require "jekyll/commands/book"
2
+ require "jekyll/commands/book"
3
+ require "jekyll/hooks/ebook"
@@ -1,5 +1,6 @@
1
1
  require "jekyll/pages/chapter"
2
2
  require "jekyll/pages/book"
3
+ require "jekyll/pages/ebook"
3
4
  require_relative "summary"
4
5
 
5
6
  class BookReader
@@ -23,6 +24,12 @@ class BookReader
23
24
  recursive_read_chapters(summary.read, 1, book_page)
24
25
  add_prev_and_next
25
26
 
27
+ if params["ebook"]["enabled"]
28
+ pages << ebook_page
29
+
30
+ ebook_page.data["book"] = book_page
31
+ end
32
+
26
33
  pages
27
34
  end
28
35
 
@@ -86,4 +93,19 @@ class BookReader
86
93
  })
87
94
  )
88
95
  end
96
+
97
+ def ebook_page
98
+ default_setting = {
99
+ "layout" => "ebook",
100
+ "destination" => "ebooks"
101
+ }
102
+ @ebook_page ||= Jekyll::EbookPage.new(
103
+ site,
104
+ default_setting
105
+ .merge(params["ebook"])
106
+ .merge({
107
+ "name" => name
108
+ })
109
+ )
110
+ end
89
111
  end
@@ -52,4 +52,4 @@ module Jekyll
52
52
  books.reverse!
53
53
  end
54
54
  end
55
- end
55
+ end
@@ -0,0 +1,24 @@
1
+ require "jekyll/pages/ebook"
2
+
3
+ module Jekyll
4
+ Jekyll::Hooks.register :pages, :post_write do |page|
5
+ if page.is_a? Jekyll::EbookPage
6
+ default_setting = {
7
+ "formats" => ["pdf"]
8
+ }
9
+
10
+ configs = Jekyll.configuration()
11
+ books_config = configs["books_settings"] || {}
12
+ ebook_config = default_setting.merge(books_config["ebook"] || {})
13
+ if ebook_config["enabled"]
14
+ input = page.destination("")
15
+ site = page.site
16
+ dir = site.in_dest_dir(page.dir)
17
+ ebook_config["formats"].each do |format|
18
+ output = File.join(dir, "#{page.data["name"]}.#{format}")
19
+ system "ebook-convert #{input} #{output} --title=#{page.data['book']['title']} --authors=#{configs['title']} --level1-toc=//h:h1"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ module Jekyll
2
+ class EbookPage < Page
3
+ def initialize(site, params)
4
+ @site = site
5
+ @base = site.source
6
+ @dir = params["destination"]
7
+ @name = "#{params["name"]}.md"
8
+
9
+ self.process(@name)
10
+
11
+ self.data = {}
12
+ self.data["name"] = params["name"]
13
+ self.data["layout"] = params["layout"] #temp
14
+ end
15
+ end
16
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-books
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Zhang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-21 00:00:00.000000000 Z
11
+ date: 2021-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -58,8 +58,10 @@ files:
58
58
  - lib/jekyll-books/summary.rb
59
59
  - lib/jekyll/commands/book.rb
60
60
  - lib/jekyll/generators/book.rb
61
+ - lib/jekyll/hooks/ebook.rb
61
62
  - lib/jekyll/pages/book.rb
62
63
  - lib/jekyll/pages/chapter.rb
64
+ - lib/jekyll/pages/ebook.rb
63
65
  - lib/util.rb
64
66
  homepage: https://github.com/erlzhang/jekyll-books
65
67
  licenses:
@@ -80,8 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
82
  - !ruby/object:Gem::Version
81
83
  version: '0'
82
84
  requirements: []
83
- rubyforge_project:
84
- rubygems_version: 2.7.8
85
+ rubygems_version: 3.0.3
85
86
  signing_key:
86
87
  specification_version: 4
87
88
  summary: Jekyll books generatoer.