asciidoctor-html5s 0.1.0.beta.4 → 0.1.0.beta.5
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|