asciidoctor-epub3 2.1.3 → 2.2.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.
@@ -105,8 +105,10 @@ module Asciidoctor
105
105
  @footnotes = []
106
106
 
107
107
  basebackend 'html'
108
+ filetype 'epub'
108
109
  outfilesuffix '.epub'
109
110
  htmlsyntax 'xml'
111
+ supports_templates true
110
112
  end
111
113
 
112
114
  def convert(node, name = nil, _opts = {})
@@ -587,8 +589,7 @@ document.addEventListener('DOMContentLoaded', function(event, reader) {
587
589
  def convert_example(node)
588
590
  id_attr = node.id ? %( id="#{node.id}") : ''
589
591
  title_div = if node.title?
590
- %(<div class="example-title">#{node.title}</div>
591
- )
592
+ %(<div class="example-title">#{node.captioned_title}</div>)
592
593
  else
593
594
  ''
594
595
  end
@@ -735,6 +736,7 @@ document.addEventListener('DOMContentLoaded', function(event, reader) {
735
736
  end
736
737
 
737
738
  def convert_sidebar(node)
739
+ id_attribute = node.id ? %( id="#{node.id}") : ''
738
740
  classes = ['sidebar']
739
741
  if node.title?
740
742
  classes << 'titled'
@@ -747,7 +749,7 @@ document.addEventListener('DOMContentLoaded', function(event, reader) {
747
749
  title_attr = title_el = ''
748
750
  end
749
751
 
750
- %(<aside class="#{classes * ' '}"#{title_attr} epub:type="sidebar">
752
+ %(<aside#{id_attribute} class="#{classes * ' '}"#{title_attr} epub:type="sidebar">
751
753
  #{title_el}<div class="content">
752
754
  #{output_content node}
753
755
  </div>
@@ -866,7 +868,7 @@ document.addEventListener('DOMContentLoaded', function(event, reader) {
866
868
  class_attribute = %( class="#{classes.join ' '}")
867
869
 
868
870
  lines << %(<div#{id_attribute}#{class_attribute}>)
869
- lines << %(<div class="title">#{node.title}</div>) if node.title?
871
+ lines << %(<div class="list-heading">#{node.title}</div>) if node.title?
870
872
 
871
873
  case (style = node.style)
872
874
  when 'itemized', 'ordered'
@@ -956,7 +958,7 @@ document.addEventListener('DOMContentLoaded', function(event, reader) {
956
958
  ol_start_attr = node.attr?('start') ? %( start="#{node.attr 'start'}") : ''
957
959
  id_attribute = node.id ? %( id="#{node.id}") : ''
958
960
  lines = [%(<div#{id_attribute} class="#{div_classes * ' '}">)]
959
- lines << %(<h3 class="list-heading">#{node.title}</h3>) if node.title?
961
+ lines << %(<div class="list-heading">#{node.title}</div>) if node.title?
960
962
  lines << %(<ol#{ol_class_attr}#{ol_start_attr}#{node.option?('reversed') ? ' reversed="reversed"' : ''}>)
961
963
  node.items.each do |item|
962
964
  li_classes = [item.role].compact
@@ -985,7 +987,7 @@ document.addEventListener('DOMContentLoaded', function(event, reader) {
985
987
  ul_class_attr = ul_classes.empty? ? '' : %( class="#{ul_classes * ' '}")
986
988
  id_attribute = node.id ? %( id="#{node.id}") : ''
987
989
  lines = [%(<div#{id_attribute} class="#{div_classes * ' '}">)]
988
- lines << %(<h3 class="list-heading">#{node.title}</h3>) if node.title?
990
+ lines << %(<div class="list-heading">#{node.title}</div>) if node.title?
989
991
  lines << %(<ul#{ul_class_attr}>)
990
992
  node.items.each do |item|
991
993
  li_classes = [item.role].compact
@@ -1505,7 +1507,8 @@ body > svg {
1505
1507
  </svg></body>
1506
1508
  </html>)
1507
1509
 
1508
- @book.add_ordered_item %(#{name}.xhtml), content: content.to_ios, id: name
1510
+ @book.prefixes['calibre'] = 'https://calibre-ebook.com'
1511
+ @book.add_ordered_item(%(#{name}.xhtml), content: content.to_ios, id: name).add_property('calibre:title-page')
1509
1512
  end
1510
1513
 
1511
1514
  def get_frontmatter_files(doc, workdir)
@@ -1623,31 +1626,35 @@ body > svg {
1623
1626
 
1624
1627
  def nav_level(items, depth, state = {})
1625
1628
  lines = []
1626
- lines << '<ol>'
1627
- items.each do |item|
1628
- # index = (state[:index] = (state.fetch :index, 0) + 1)
1629
- if (chapter_filename = get_chapter_filename item).nil?
1630
- item_label = sanitize_xml get_numbered_title(item), :pcdata
1631
- item_href = %(#{state[:content_doc_href]}##{item.id})
1632
- else
1633
- # NOTE: we sanitize the chapter titles because we use formatting to control layout
1634
- item_label = if item.context == :document
1635
- sanitize_doctitle_xml item, :cdata
1636
- else
1637
- sanitize_xml get_numbered_title(item), :cdata
1638
- end
1639
- item_href = (state[:content_doc_href] = %(#{chapter_filename}.xhtml))
1640
- end
1641
- lines << %(<li><a href="#{item_href}">#{item_label}</a>)
1642
- if depth.zero? || (child_sections = item.sections).empty?
1643
- lines[-1] = %(#{lines[-1]}</li>)
1644
- else
1645
- lines << (nav_level child_sections, depth - 1, state)
1646
- lines << '</li>'
1629
+
1630
+ if depth.positive?
1631
+ lines << '<ol>'
1632
+ items.each do |item|
1633
+ # index = (state[:index] = (state.fetch :index, 0) + 1)
1634
+ if (chapter_filename = get_chapter_filename item).nil?
1635
+ item_label = sanitize_xml get_numbered_title(item), :pcdata
1636
+ item_href = %(#{state[:content_doc_href]}##{item.id})
1637
+ else
1638
+ # NOTE: we sanitize the chapter titles because we use formatting to control layout
1639
+ item_label = if item.context == :document
1640
+ sanitize_doctitle_xml item, :cdata
1641
+ else
1642
+ sanitize_xml get_numbered_title(item), :cdata
1643
+ end
1644
+ item_href = (state[:content_doc_href] = %(#{chapter_filename}.xhtml))
1645
+ end
1646
+ lines << %(<li><a href="#{item_href}">#{item_label}</a>)
1647
+ if (child_sections = item.sections).empty?
1648
+ lines[-1] = %(#{lines[-1]}</li>)
1649
+ else
1650
+ lines << (nav_level child_sections, depth - 1, state)
1651
+ lines << '</li>'
1652
+ end
1653
+ state.delete :content_doc_href unless chapter_filename.nil?
1647
1654
  end
1648
- state.delete :content_doc_href unless chapter_filename.nil?
1655
+ lines << '</ol>'
1649
1656
  end
1650
- lines << '</ol>'
1657
+
1651
1658
  lines * LF
1652
1659
  end
1653
1660
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class File
4
- # NOTE: remove once minimum required Ruby version is at least 2.7
4
+ # TODO: remove once minimum required Ruby version is at least 2.7
5
5
  unless respond_to? :absolute_path?
6
6
  def self.absolute_path?(path)
7
7
  Pathname.new(path).absolute?
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Asciidoctor
4
4
  module Epub3
5
- VERSION = '2.1.3'
5
+ VERSION = '2.2.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,16 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-epub3
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Allen
8
8
  - Sarah White
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2024-05-12 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: asciidoctor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: gepub
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: mime-types
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sass
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
14
69
  - !ruby/object:Gem::Dependency
15
70
  name: asciidoctor-diagram
16
71
  requirement: !ruby/object:Gem::Requirement
@@ -54,165 +109,159 @@ dependencies:
54
109
  - !ruby/object:Gem::Version
55
110
  version: 1.1.0
56
111
  - !ruby/object:Gem::Dependency
57
- name: pygments.rb
112
+ name: concurrent-ruby
58
113
  requirement: !ruby/object:Gem::Requirement
59
114
  requirements:
60
115
  - - "~>"
61
116
  - !ruby/object:Gem::Version
62
- version: 2.4.0
117
+ version: '1.0'
63
118
  type: :development
64
119
  prerelease: false
65
120
  version_requirements: !ruby/object:Gem::Requirement
66
121
  requirements:
67
122
  - - "~>"
68
123
  - !ruby/object:Gem::Version
69
- version: 2.4.0
124
+ version: '1.0'
70
125
  - !ruby/object:Gem::Dependency
71
- name: rake
126
+ name: epubcheck-ruby
72
127
  requirement: !ruby/object:Gem::Requirement
73
128
  requirements:
74
129
  - - "~>"
75
130
  - !ruby/object:Gem::Version
76
- version: 13.2.0
131
+ version: 5.2.0.0
77
132
  type: :development
78
133
  prerelease: false
79
134
  version_requirements: !ruby/object:Gem::Requirement
80
135
  requirements:
81
136
  - - "~>"
82
137
  - !ruby/object:Gem::Version
83
- version: 13.2.0
138
+ version: 5.2.0.0
84
139
  - !ruby/object:Gem::Dependency
85
- name: rouge
140
+ name: pygments.rb
86
141
  requirement: !ruby/object:Gem::Requirement
87
142
  requirements:
88
143
  - - "~>"
89
144
  - !ruby/object:Gem::Version
90
- version: '3.0'
145
+ version: 3.0.0
91
146
  type: :development
92
147
  prerelease: false
93
148
  version_requirements: !ruby/object:Gem::Requirement
94
149
  requirements:
95
150
  - - "~>"
96
151
  - !ruby/object:Gem::Version
97
- version: '3.0'
152
+ version: 3.0.0
98
153
  - !ruby/object:Gem::Dependency
99
- name: rspec
154
+ name: rake
100
155
  requirement: !ruby/object:Gem::Requirement
101
156
  requirements:
102
157
  - - "~>"
103
158
  - !ruby/object:Gem::Version
104
- version: 3.13.0
159
+ version: 13.2.0
105
160
  type: :development
106
161
  prerelease: false
107
162
  version_requirements: !ruby/object:Gem::Requirement
108
163
  requirements:
109
164
  - - "~>"
110
165
  - !ruby/object:Gem::Version
111
- version: 3.13.0
166
+ version: 13.2.0
112
167
  - !ruby/object:Gem::Dependency
113
- name: rubocop
168
+ name: rouge
114
169
  requirement: !ruby/object:Gem::Requirement
115
170
  requirements:
116
171
  - - "~>"
117
172
  - !ruby/object:Gem::Version
118
- version: 1.50.2
173
+ version: '3.0'
119
174
  type: :development
120
175
  prerelease: false
121
176
  version_requirements: !ruby/object:Gem::Requirement
122
177
  requirements:
123
178
  - - "~>"
124
179
  - !ruby/object:Gem::Version
125
- version: 1.50.2
180
+ version: '3.0'
126
181
  - !ruby/object:Gem::Dependency
127
- name: rubocop-rake
182
+ name: rspec
128
183
  requirement: !ruby/object:Gem::Requirement
129
184
  requirements:
130
185
  - - "~>"
131
186
  - !ruby/object:Gem::Version
132
- version: 0.6.0
187
+ version: 3.13.0
133
188
  type: :development
134
189
  prerelease: false
135
190
  version_requirements: !ruby/object:Gem::Requirement
136
191
  requirements:
137
192
  - - "~>"
138
193
  - !ruby/object:Gem::Version
139
- version: 0.6.0
194
+ version: 3.13.0
140
195
  - !ruby/object:Gem::Dependency
141
- name: rubocop-rspec
196
+ name: rubocop
142
197
  requirement: !ruby/object:Gem::Requirement
143
198
  requirements:
144
199
  - - "~>"
145
200
  - !ruby/object:Gem::Version
146
- version: 2.20.0
201
+ version: 1.70.0
147
202
  type: :development
148
203
  prerelease: false
149
204
  version_requirements: !ruby/object:Gem::Requirement
150
205
  requirements:
151
206
  - - "~>"
152
207
  - !ruby/object:Gem::Version
153
- version: 2.20.0
208
+ version: 1.70.0
154
209
  - !ruby/object:Gem::Dependency
155
- name: asciidoctor
210
+ name: rubocop-rake
156
211
  requirement: !ruby/object:Gem::Requirement
157
212
  requirements:
158
213
  - - "~>"
159
214
  - !ruby/object:Gem::Version
160
- version: '2.0'
161
- type: :runtime
215
+ version: 0.6.0
216
+ type: :development
162
217
  prerelease: false
163
218
  version_requirements: !ruby/object:Gem::Requirement
164
219
  requirements:
165
220
  - - "~>"
166
221
  - !ruby/object:Gem::Version
167
- version: '2.0'
222
+ version: 0.6.0
168
223
  - !ruby/object:Gem::Dependency
169
- name: gepub
224
+ name: rubocop-rspec
170
225
  requirement: !ruby/object:Gem::Requirement
171
226
  requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: 1.0.0
175
- - - "<="
227
+ - - "~>"
176
228
  - !ruby/object:Gem::Version
177
- version: 1.0.15
178
- type: :runtime
229
+ version: '3.3'
230
+ type: :development
179
231
  prerelease: false
180
232
  version_requirements: !ruby/object:Gem::Requirement
181
233
  requirements:
182
- - - ">="
183
- - !ruby/object:Gem::Version
184
- version: 1.0.0
185
- - - "<="
234
+ - - "~>"
186
235
  - !ruby/object:Gem::Version
187
- version: 1.0.15
236
+ version: '3.3'
188
237
  - !ruby/object:Gem::Dependency
189
- name: mime-types
238
+ name: slim
190
239
  requirement: !ruby/object:Gem::Requirement
191
240
  requirements:
192
241
  - - "~>"
193
242
  - !ruby/object:Gem::Version
194
- version: '3.0'
195
- type: :runtime
243
+ version: '5.0'
244
+ type: :development
196
245
  prerelease: false
197
246
  version_requirements: !ruby/object:Gem::Requirement
198
247
  requirements:
199
248
  - - "~>"
200
249
  - !ruby/object:Gem::Version
201
- version: '3.0'
250
+ version: '5.0'
202
251
  - !ruby/object:Gem::Dependency
203
- name: sass
252
+ name: tilt
204
253
  requirement: !ruby/object:Gem::Requirement
205
254
  requirements:
206
- - - ">="
255
+ - - "~>"
207
256
  - !ruby/object:Gem::Version
208
- version: '0'
209
- type: :runtime
257
+ version: '2.0'
258
+ type: :development
210
259
  prerelease: false
211
260
  version_requirements: !ruby/object:Gem::Requirement
212
261
  requirements:
213
- - - ">="
262
+ - - "~>"
214
263
  - !ruby/object:Gem::Version
215
- version: '0'
264
+ version: '2.0'
216
265
  description: 'An extension for Asciidoctor that converts AsciiDoc documents to EPUB3
217
266
  e-book format.
218
267
 
@@ -293,7 +342,6 @@ homepage: https://github.com/asciidoctor/asciidoctor-epub3
293
342
  licenses:
294
343
  - MIT
295
344
  metadata: {}
296
- post_install_message:
297
345
  rdoc_options: []
298
346
  require_paths:
299
347
  - lib
@@ -301,15 +349,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
301
349
  requirements:
302
350
  - - ">="
303
351
  - !ruby/object:Gem::Version
304
- version: 2.6.0
352
+ version: 2.7.0
305
353
  required_rubygems_version: !ruby/object:Gem::Requirement
306
354
  requirements:
307
355
  - - ">="
308
356
  - !ruby/object:Gem::Version
309
357
  version: '0'
310
358
  requirements: []
311
- rubygems_version: 3.5.9
312
- signing_key:
359
+ rubygems_version: 3.6.7
313
360
  specification_version: 4
314
361
  summary: Converts AsciiDoc documents to EPUB3 e-book format
315
362
  test_files: []