asciidoctor-html5s 0.1.0.beta.4 → 0.1.0.beta.5
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 +5 -5
- data/README.adoc +31 -3
- data/data/templates/helpers.rb +34 -22
- data/data/templates/inline_quoted.html.slim +6 -3
- data/data/templates/stem.html.slim +1 -1
- data/lib/asciidoctor/html5s/attached_colist_treeprocessor.rb +1 -1
- data/lib/asciidoctor/html5s/converter.rb +510 -2102
- data/lib/asciidoctor/html5s/version.rb +1 -1
- data/lib/asciidoctor/html5s.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6edb5fed9a549c826fe6cee650e693100626d9e1ad1fe464c1c35e458f7ee7b0
|
4
|
+
data.tar.gz: 80d81e62638bca8e8df3025dac8f6fe8be758941fa8887368acc12b7d8adae95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7aac1db96dd77420ff7e42deefdf378a0f965cc85b61db850cc37e24bbd81ab037371521049cac9315166a581ba2d9bc5aabda6574eb088b50ecac921209f038
|
7
|
+
data.tar.gz: 4a9a897ac7ca4fdba8ca69452a8e5c8b1138f69d6f6fa096cd859022609f1955fa40788c79f328c34575c388feb034fcc28a58cf7cd91745fda8f424f8287ff1
|
data/README.adoc
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
ifdef::env-github[]
|
8
8
|
image:https://travis-ci.org/{gh-name}.svg?branch={gh-branch}[Build Status, link="https://travis-ci.org/{gh-name}"]
|
9
9
|
image:https://img.shields.io/gem/v/{gem-name}.svg?style=flat[Gem Version, link="https://rubygems.org/gems/{gem-name}"]
|
10
|
+
image:https://img.shields.io/npm/v/{gem-name}.svg?style=flat[npm Version, link="https://www.npmjs.org/package/{gem-name}"]
|
10
11
|
endif::env-github[]
|
11
12
|
|
12
13
|
This project provides alternative HTML5 converter (backend) for http://asciidoctor.org/[Asciidoctor] that focuses on correct semantics, accessibility and compatibility with common typographic CSS styles.
|
@@ -29,15 +30,17 @@ This project provides alternative HTML5 converter (backend) for http://asciidoct
|
|
29
30
|
|
30
31
|
== Requirements
|
31
32
|
|
32
|
-
* https://www.ruby-lang.org/[Ruby] 2.0
|
33
|
-
* https://rubygems.org/gems/asciidoctor/[Asciidoctor] 1.5.5+
|
34
|
-
* https://rubygems.org/gems/thread_safe/[thread_safe] (not required, but recommended)
|
33
|
+
* https://www.ruby-lang.org/[Ruby] 2.0+, http://jruby.org/[JRuby] 9.1+ or https://nodejs.org/[Node.js]
|
34
|
+
* https://rubygems.org/gems/asciidoctor/[Asciidoctor] 1.5.5+ or https://www.npmjs.com/package/asciidoctor.js[asciidoctor.js] 1.5.5
|
35
|
+
* https://rubygems.org/gems/thread_safe/[thread_safe] (not required, but recommended for Ruby MRI)
|
35
36
|
|
36
37
|
Note: This converter consists of https://github.com/slim-template/slim/[Slim] templates, but they are precompiled into pure Ruby code using https://github.com/jirutka/asciidoctor-templates-compiler/[asciidoctor-templates-compiler], so you don’t need Slim to use it!
|
37
38
|
|
38
39
|
|
39
40
|
== Installation
|
40
41
|
|
42
|
+
=== Ruby
|
43
|
+
|
41
44
|
Install {gem-name} from Rubygems:
|
42
45
|
|
43
46
|
[source, sh, subs="+attributes"]
|
@@ -49,12 +52,37 @@ or to get the latest development version:
|
|
49
52
|
gem install --pre {gem-name}
|
50
53
|
|
51
54
|
|
55
|
+
=== Node.js
|
56
|
+
|
57
|
+
Install {gem-name} from npmjs.com:
|
58
|
+
|
59
|
+
[source, sh, subs="+attributes"]
|
60
|
+
npm install --save {gem-name}
|
61
|
+
|
62
|
+
|
52
63
|
== Usage
|
53
64
|
|
65
|
+
=== CLI
|
66
|
+
|
54
67
|
[source, sh, subs="+attributes"]
|
55
68
|
asciidoctor -r {gem-name} -b html5s FILE...
|
56
69
|
|
57
70
|
|
71
|
+
=== Node.js
|
72
|
+
|
73
|
+
[source, js, subs="+attributes"]
|
74
|
+
----
|
75
|
+
// Load asciidoctor.js and {gem-name}.
|
76
|
+
const asciidoctor = require('asciidoctor.js')()
|
77
|
+
require('{gem-name}')
|
78
|
+
|
79
|
+
// Convert the content to HTML using html5s converter.
|
80
|
+
const content = "Hello, *world!*!"
|
81
|
+
const html = asciidoctor.convert(content, { backend: 'html5s' })
|
82
|
+
console.log(html)
|
83
|
+
----
|
84
|
+
|
85
|
+
|
58
86
|
== License
|
59
87
|
|
60
88
|
This project is licensed under http://opensource.org/licenses/MIT/[MIT License].
|
data/data/templates/helpers.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
require 'asciidoctor'
|
2
1
|
require 'asciidoctor/html5s'
|
3
|
-
require 'date'
|
4
|
-
require 'json'
|
2
|
+
require 'date' unless RUBY_PLATFORM == 'opal'
|
5
3
|
|
6
4
|
# Add custom functions to this module that you want to use in your Slim
|
7
5
|
# templates. Within the template you can invoke them as top-level functions
|
@@ -9,27 +7,31 @@ require 'json'
|
|
9
7
|
module Slim::Helpers
|
10
8
|
|
11
9
|
# URIs of external assets.
|
12
|
-
FONT_AWESOME_URI = '//
|
13
|
-
HIGHLIGHTJS_BASE_URI = '//
|
14
|
-
|
10
|
+
FONT_AWESOME_URI = '//cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css'
|
11
|
+
HIGHLIGHTJS_BASE_URI = '//cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.12.0/build/'
|
12
|
+
KATEX_CSS_URI = '//cdn.jsdelivr.net/npm/katex@0.8.3/dist/katex.min.css'
|
13
|
+
KATEX_JS_URI = '//cdn.jsdelivr.net/npm/katex@0.8.3/dist/katex.min.js'
|
15
14
|
|
16
15
|
# Defaults
|
17
16
|
DEFAULT_HIGHLIGHTJS_THEME = 'github'
|
18
17
|
DEFAULT_SECTNUMLEVELS = 3
|
19
18
|
DEFAULT_TOCLEVELS = 2
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
20
|
+
KATEX_RENDER_CODE = <<-JS.gsub(/\s+/, ' ')
|
21
|
+
document.addEventListener("DOMContentLoaded", function() {
|
22
|
+
var elements = document.getElementsByClassName("math");
|
23
|
+
for (var i = 0; i < elements.length; i++) {
|
24
|
+
var el = elements[i];
|
25
|
+
if (el.getAttribute("data-lang") !== "tex") {
|
26
|
+
continue;
|
27
|
+
}
|
28
|
+
katex.render(el.textContent.slice(2, -2), el, {
|
29
|
+
"displayMode": el.nodeName.toUpperCase() !== "SPAN",
|
30
|
+
"throwOnError": false,
|
31
|
+
});
|
32
|
+
}
|
33
|
+
});
|
34
|
+
JS
|
33
35
|
|
34
36
|
VOID_ELEMENTS = %w(area base br col command embed hr img input keygen link
|
35
37
|
meta param source track wbr)
|
@@ -214,6 +216,9 @@ module Slim::Helpers
|
|
214
216
|
##
|
215
217
|
# Delimite the given equation as a STEM of the specified type.
|
216
218
|
#
|
219
|
+
# Note: This is not needed nor used for KaTeX, but keep this for the case
|
220
|
+
# user wants to use a different method.
|
221
|
+
#
|
217
222
|
# @param equation [String] the equation to delimite.
|
218
223
|
# @param type [#to_sym] the type of the STEM renderer (latexmath, or asciimath).
|
219
224
|
# @return [String] the delimited equation.
|
@@ -360,6 +365,13 @@ module Slim::Helpers
|
|
360
365
|
end
|
361
366
|
end
|
362
367
|
|
368
|
+
##
|
369
|
+
# @return [String] language of STEM block or inline node (tex or asciimath).
|
370
|
+
def stem_lang
|
371
|
+
value = (inline? ? type : style).to_s
|
372
|
+
value == 'latexmath' ? 'tex' : value
|
373
|
+
end
|
374
|
+
|
363
375
|
def link_rel
|
364
376
|
'noopener' if option?('noopener') || attr(:window) == '_blank'
|
365
377
|
end
|
@@ -514,7 +526,7 @@ is book and it's a child of a book part. Excluding block content."
|
|
514
526
|
# @return [String, nil] the revision date in ISO 8601, or nil if not
|
515
527
|
# available or in invalid format.
|
516
528
|
def revdate_iso
|
517
|
-
::Date.parse(revdate).iso8601
|
529
|
+
::Date.parse(revdate).iso8601 if defined? ::Date
|
518
530
|
rescue ArgumentError
|
519
531
|
nil
|
520
532
|
end
|
@@ -560,8 +572,9 @@ is book and it's a child of a book part. Excluding block content."
|
|
560
572
|
end
|
561
573
|
|
562
574
|
if attr? 'stem'
|
563
|
-
|
564
|
-
scripts << {
|
575
|
+
styles << { href: KATEX_CSS_URI }
|
576
|
+
scripts << { src: KATEX_JS_URI }
|
577
|
+
scripts << { text: KATEX_RENDER_CODE }
|
565
578
|
end
|
566
579
|
|
567
580
|
case attr 'source-highlighter'
|
@@ -579,7 +592,6 @@ is book and it's a child of a book part. Excluding block content."
|
|
579
592
|
hjs_theme = attr 'highlightjs-theme', DEFAULT_HIGHLIGHTJS_THEME
|
580
593
|
|
581
594
|
scripts << { src: [hjs_base, 'highlight.min.js'] }
|
582
|
-
scripts << { src: [hjs_base, 'lang/common.min.js'] }
|
583
595
|
scripts << { text: 'hljs.initHighlightingOnLoad()' }
|
584
596
|
styles << { href: [hjs_base, "styles/#{hjs_theme}.min.css"] }
|
585
597
|
end
|
@@ -20,7 +20,10 @@
|
|
20
20
|
= html_tag_if role?, :span, :class=>role
|
21
21
|
| ‘#{text}’
|
22
22
|
- when :asciimath, :latexmath
|
23
|
-
span.math =delimit_stem text, type
|
23
|
+
span.math data-lang=stem_lang =(delimit_stem text, type)
|
24
24
|
- else
|
25
|
-
|
26
|
-
=text
|
25
|
+
- if role == 'line-through' || role == 'del'
|
26
|
+
del =text
|
27
|
+
- else
|
28
|
+
= html_tag_if role?, :span, :class=>role
|
29
|
+
=text
|
@@ -1,2 +1,2 @@
|
|
1
1
|
= block_with_caption :top, :class=>'stem-block'
|
2
|
-
.math =(delimit_stem content, style)
|
2
|
+
.math data-lang=stem_lang =(delimit_stem content, style)
|