neo4j-asciidoctor-extensions 0.0.4 → 0.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.adoc +80 -13
- data/lib/neo4j/asciidoctor/extensions.rb +1 -0
- data/lib/neo4j/asciidoctor/extensions/attribute_update/extension.rb +45 -0
- data/lib/neo4j/asciidoctor/extensions/document_metadata_generator/extension.rb +4 -4
- data/lib/neo4j/asciidoctor/extensions/stage_slug.rb +8 -0
- data/lib/neo4j/rouge/themes/neo.rb +45 -0
- data/lib/neo4j/rouge/themes/neo_forest.rb +47 -0
- data/neo4j-asciidoctor-extensions.gemspec +1 -1
- data/spec/document_metadata_generator_spec.rb +76 -1
- data/spec/stage_slug_spec.rb +35 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b626381905fbdc566cc3b33c79a9b4d25c1e19b117499855e2788414b642ebfc
|
4
|
+
data.tar.gz: f8deb91ca96056010694555067bc881a941134f46f7773d33e6db22f0f3b578c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0513ca555b1fb6106be5b3e3564da63775fc129b428dfb28a90d75cda2cbedb409b0dd685c577c96bf746a8213c7433a383dea4b10872c788319ae6a5342c1b7
|
7
|
+
data.tar.gz: da20878966af3518704eba61ad82b05bdc5c3d110ead0dd386bfd5c544f91fbafe3e705a92adeabf00b56c4d1eda3ce0621d509d3d82bfe6c62728769ffa7f61
|
data/Gemfile.lock
CHANGED
data/README.adoc
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
= Neo4j Asciidoctor Extensions
|
2
|
+
:caution-caption: :fire:
|
2
3
|
:uri-neo4j: https://neo4j.com
|
3
4
|
|
4
5
|
image:https://github.com/neo4j-contrib/neo4j-asciidoctor-extensions/workflows/CI/badge.svg[CI,link=https://github.com/neo4j-contrib/neo4j-asciidoctor-extensions/actions?query=workflow%3ACI]
|
@@ -41,15 +42,30 @@ See below for the complete list of extensions.
|
|
41
42
|
|
42
43
|
The Ruby gem contains 6 distinct extensions:
|
43
44
|
|
44
|
-
===
|
45
|
+
=== Neo4j course attributes
|
45
46
|
|
46
|
-
A postprocessor that adds attributes about the
|
47
|
+
A postprocessor that adds attributes about a course on the `Document`.
|
47
48
|
|
48
|
-
|
49
|
+
[CAUTION]
|
50
|
+
====
|
51
|
+
This extension is tightly coupled to the course publishing project and should not be used for other purposes
|
52
|
+
====
|
53
|
+
|
54
|
+
[source,rb]
|
55
|
+
----
|
56
|
+
require 'neo4j/asciidoctor/extensions/course_document_attributes'
|
57
|
+
----
|
58
|
+
|
59
|
+
=== Cypher syntax role
|
49
60
|
|
50
61
|
A tree processor that adds a role on code blocks using "cypher-syntax" as a language.
|
51
62
|
|
52
|
-
|
63
|
+
==== Usage
|
64
|
+
|
65
|
+
[source,rb]
|
66
|
+
----
|
67
|
+
require 'neo4j/asciidoctor/extensions/cypher_syntax_role'
|
68
|
+
----
|
53
69
|
|
54
70
|
[source]
|
55
71
|
....
|
@@ -62,11 +78,16 @@ A tree processor that adds a role on code blocks using "cypher-syntax" as a lang
|
|
62
78
|
----
|
63
79
|
....
|
64
80
|
|
65
|
-
===
|
81
|
+
=== Metadata generator (YAML)
|
66
82
|
|
67
83
|
A postprocess that generates a metadata file (in YAML format) from a list of document attributes.
|
68
84
|
|
69
|
-
|
85
|
+
==== Usage
|
86
|
+
|
87
|
+
[source,rb]
|
88
|
+
----
|
89
|
+
require 'neo4j/asciidoctor/extensions/document_metadata_generator'
|
90
|
+
----
|
70
91
|
|
71
92
|
.file.adoc
|
72
93
|
[source,adoc]
|
@@ -79,7 +100,7 @@ A postprocess that generates a metadata file (in YAML format) from a list of doc
|
|
79
100
|
----
|
80
101
|
|
81
102
|
.file.yml
|
82
|
-
[source,
|
103
|
+
[source,yaml]
|
83
104
|
----
|
84
105
|
slug: intro-neo4j-4-0
|
85
106
|
parent_path: /intro
|
@@ -104,12 +125,17 @@ taxonomies:
|
|
104
125
|
- 3-6
|
105
126
|
----
|
106
127
|
|
107
|
-
===
|
128
|
+
=== Inline syntax highlighter based on Rouge
|
108
129
|
|
109
130
|
Inline syntax highlighter based on Rouge.
|
110
131
|
It applies syntax highlighting on both monospaced text cypher and `src` inline macro:
|
111
132
|
|
112
|
-
|
133
|
+
==== Usage
|
134
|
+
|
135
|
+
[source,rb]
|
136
|
+
----
|
137
|
+
require 'neo4j/asciidoctor/extensions/inline_highlighter_rouge'
|
138
|
+
----
|
113
139
|
|
114
140
|
[source,adoc]
|
115
141
|
----
|
@@ -118,16 +144,29 @@ It applies syntax highlighting on both monospaced text cypher and `src` inline m
|
|
118
144
|
src:cypher[MATCH (c:Customer {customerName: 'ABCCO'}) RETURN c.BOUGHT.productName]
|
119
145
|
----
|
120
146
|
|
121
|
-
===
|
147
|
+
=== Linear navigation for reveal.js
|
122
148
|
|
123
149
|
A tree process that "flatten" a reveal.js presentation to use a linear navigation.
|
124
150
|
By default, the reveal.js converter will use a vertical navigation for the second levels of section titles (and below).
|
125
151
|
This extension will effectively prevent that by using only first level section titles.
|
126
152
|
|
127
|
-
|
153
|
+
==== Usage
|
154
|
+
|
155
|
+
[source,rb]
|
156
|
+
----
|
157
|
+
require 'neo4j/asciidoctor/extensions/revealjs_linear_navigation'
|
158
|
+
----
|
159
|
+
|
160
|
+
=== Notes aggregator for reveal.js
|
161
|
+
|
128
162
|
A tree processor that aggregates multiple `[.notes]` blocks in a section (slide).
|
129
163
|
|
130
|
-
|
164
|
+
==== Usage
|
165
|
+
|
166
|
+
[source,rb]
|
167
|
+
----
|
168
|
+
require 'neo4j/asciidoctor/extensions/revealjs_speaker_notes_aggregator'
|
169
|
+
----
|
131
170
|
|
132
171
|
[source,adoc]
|
133
172
|
----
|
@@ -146,10 +185,38 @@ This is another speaker note.
|
|
146
185
|
--
|
147
186
|
----
|
148
187
|
|
188
|
+
=== Document attribute update
|
189
|
+
|
190
|
+
A tree processor that update an attribute depending on a given rule.
|
191
|
+
|
192
|
+
==== Usage
|
193
|
+
|
194
|
+
In the example below, we update the value of the `slug` attribute depending on the `stage` attribute:
|
195
|
+
[source,rb]
|
196
|
+
----
|
197
|
+
require 'asciidoctor/extensions'
|
198
|
+
require 'neo4j/asciidoctor/extensions/attribute_update/extension'
|
199
|
+
|
200
|
+
Asciidoctor::Extensions.register do
|
201
|
+
ext = Neo4j::AsciidoctorExtensions::AttributeUpdateTreeProcessor
|
202
|
+
tree_processor ext.new attr_name: 'slug',
|
203
|
+
update_rule: lambda { |document, value|
|
204
|
+
case document.attr('stage')
|
205
|
+
when 'production'
|
206
|
+
value
|
207
|
+
when 'development'
|
208
|
+
"_dev_#{value}"
|
209
|
+
else
|
210
|
+
"_test_#{value}"
|
211
|
+
end
|
212
|
+
}
|
213
|
+
end
|
214
|
+
----
|
215
|
+
|
149
216
|
== Release
|
150
217
|
|
151
218
|
The release process is automated and relies on GitHub Actions.
|
152
|
-
We are using the :robot: `neo4j-oss-build` account to
|
219
|
+
We are using the :robot: `neo4j-oss-build` account to publish on https://rubygems.org/gems/neo4j-asciidoctor-extensions.
|
153
220
|
|
154
221
|
The `RUBYGEMS_API_KEY` secret is configured on GitHub.
|
155
222
|
See the `.github/workflows/release.yml` file for details.
|
@@ -6,3 +6,4 @@ require_relative 'extensions/document_metadata_generator'
|
|
6
6
|
require_relative 'extensions/inline_highlighter_rouge'
|
7
7
|
require_relative 'extensions/revealjs_linear_navigation'
|
8
8
|
require_relative 'extensions/revealjs_speaker_notes_aggregator'
|
9
|
+
require_relative 'extensions/stage_slug'
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal'
|
4
|
+
|
5
|
+
module Neo4j
|
6
|
+
# Asciidoctor extensions by Neo4j
|
7
|
+
module AsciidoctorExtensions
|
8
|
+
include Asciidoctor
|
9
|
+
|
10
|
+
# A tree processor that update an attribute depending on a given rule.
|
11
|
+
#
|
12
|
+
class AttributeUpdateTreeProcessor < Extensions::TreeProcessor
|
13
|
+
use_dsl
|
14
|
+
|
15
|
+
def process(document)
|
16
|
+
if (attribute_name = @config[:attr_name]) &&
|
17
|
+
(current_value = document.attr attribute_name) &&
|
18
|
+
(update_rule = @config[:update_rule])
|
19
|
+
new_value = update_rule.call(document, current_value)
|
20
|
+
document.set_attr attribute_name, new_value if new_value != current_value
|
21
|
+
end
|
22
|
+
document
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# A tree processor that update the "slug" attribute depending on the "stage" attribute.
|
27
|
+
#
|
28
|
+
class StageSlugTreeProcessor < AttributeUpdateTreeProcessor
|
29
|
+
TESTING_SLUG_PREFIX = '_testing_'
|
30
|
+
|
31
|
+
def initialize(config = nil)
|
32
|
+
super
|
33
|
+
@config[:attr_name] = 'slug'
|
34
|
+
@config[:update_rule] = lambda { |document, value|
|
35
|
+
case document.attr('stage')
|
36
|
+
when 'production'
|
37
|
+
value
|
38
|
+
else
|
39
|
+
"#{TESTING_SLUG_PREFIX}#{value}"
|
40
|
+
end
|
41
|
+
}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -69,7 +69,7 @@ module Neo4j
|
|
69
69
|
attr_name = resolve_attr_name(attr_include)
|
70
70
|
if document.attr? attr_name
|
71
71
|
attr_value = resolve_attribute_value(attr_name, document, value_type)
|
72
|
-
metadata[attr_name] = attr_value
|
72
|
+
metadata[attr_name.gsub('-', '_')] = attr_value
|
73
73
|
end
|
74
74
|
end
|
75
75
|
metadata['title'] = document.doctitle
|
@@ -84,7 +84,7 @@ module Neo4j
|
|
84
84
|
def resolve_value_type(attr_include)
|
85
85
|
if attr_include.end_with? '*'
|
86
86
|
ValueType::LIST_STRING
|
87
|
-
elsif attr_include.end_with? '*<>'
|
87
|
+
elsif (attr_include.end_with? '*<>') || (attr_include.end_with? '*<>')
|
88
88
|
ValueType::LIST_TUPLES
|
89
89
|
else
|
90
90
|
ValueType::STRING
|
@@ -95,7 +95,7 @@ module Neo4j
|
|
95
95
|
attr_include
|
96
96
|
.gsub(/\*$/, '')
|
97
97
|
.gsub(/\*<>$/, '')
|
98
|
-
.gsub(
|
98
|
+
.gsub(/\*<>$/, '')
|
99
99
|
end
|
100
100
|
|
101
101
|
def write(metadata, outfile)
|
@@ -118,7 +118,7 @@ module Neo4j
|
|
118
118
|
split_values(attr_name, document)
|
119
119
|
.map do |tuple|
|
120
120
|
key, value = tuple.split('=')
|
121
|
-
{ 'key' => key.strip, 'values' => value.strip.split(';').map(&:strip).reject(&:empty?) }
|
121
|
+
{ 'key' => key.strip, 'values' => (value && value.strip.split(';').map(&:strip).reject(&:empty?)) || [] }
|
122
122
|
end
|
123
123
|
else
|
124
124
|
document.attr attr_name
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'rouge' unless defined? ::Rouge::Lexers
|
5
|
+
|
6
|
+
module Rouge
|
7
|
+
module Themes
|
8
|
+
#
|
9
|
+
# Neo4j (default) theme
|
10
|
+
class Neo < CSSTheme
|
11
|
+
name 'neo'
|
12
|
+
|
13
|
+
style Comment::Multiline,
|
14
|
+
Comment::Preproc,
|
15
|
+
Comment::Single,
|
16
|
+
Comment::Special,
|
17
|
+
Comment, fg: '#75787b'
|
18
|
+
style Error,
|
19
|
+
Generic::Error,
|
20
|
+
Generic::Traceback, fg: '#960050'
|
21
|
+
style Keyword::Constant,
|
22
|
+
Keyword::Declaration,
|
23
|
+
Keyword::Reserved,
|
24
|
+
Name::Constant,
|
25
|
+
Keyword::Type, fg: '#1d75b3'
|
26
|
+
style Literal::String, fg: '#b35e14'
|
27
|
+
style Name::Function,
|
28
|
+
Operator, fg: '#2e383c'
|
29
|
+
style Name::Namespace,
|
30
|
+
Name::Label,
|
31
|
+
Literal::String::Delimiter,
|
32
|
+
Name::Property, fg: '#75438a'
|
33
|
+
style Name::Entity,
|
34
|
+
Name::Builtin::Pseudo,
|
35
|
+
Name::Variable::Global,
|
36
|
+
Name::Variable::Instance,
|
37
|
+
Name::Variable,
|
38
|
+
Text::Whitespace,
|
39
|
+
Text,
|
40
|
+
Name, fg: '#047d65'
|
41
|
+
style Keyword, fg: '#1d75b3'
|
42
|
+
style Literal::String::Symbol, fg: '#9c3328'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'rouge' unless defined? ::Rouge::Lexers
|
5
|
+
|
6
|
+
module Rouge
|
7
|
+
module Themes
|
8
|
+
#
|
9
|
+
# Neo4j forest theme
|
10
|
+
class NeoForest < CSSTheme
|
11
|
+
name 'neo.forest'
|
12
|
+
|
13
|
+
style Comment::Multiline,
|
14
|
+
Comment::Preproc,
|
15
|
+
Comment::Single,
|
16
|
+
Comment::Special,
|
17
|
+
Comment, fg: '#75787b'
|
18
|
+
style Error,
|
19
|
+
Generic::Error,
|
20
|
+
Generic::Traceback, fg: '#960050'
|
21
|
+
style Name::Function,
|
22
|
+
Operator::Word,
|
23
|
+
Keyword,
|
24
|
+
Keyword::Constant,
|
25
|
+
Keyword::Declaration,
|
26
|
+
Keyword::Reserved,
|
27
|
+
Name::Constant,
|
28
|
+
Keyword::Type, fg: '#859900'
|
29
|
+
style Literal::String, fg: '#b58900'
|
30
|
+
style Literal::Number, fg: '#2aa198'
|
31
|
+
style Operator,
|
32
|
+
Name::Namespace,
|
33
|
+
Name::Label,
|
34
|
+
Literal::String::Delimiter,
|
35
|
+
Name::Property,
|
36
|
+
Name::Entity,
|
37
|
+
Name::Builtin::Pseudo,
|
38
|
+
Name::Variable::Global,
|
39
|
+
Name::Variable::Instance,
|
40
|
+
Name::Variable,
|
41
|
+
Text::Whitespace,
|
42
|
+
Text,
|
43
|
+
Name,
|
44
|
+
Literal::String::Symbol, fg: '#333333'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -54,7 +54,7 @@ describe Neo4j::AsciidoctorExtensions::DocumentMetadataGeneratorPostProcessor do
|
|
54
54
|
expect(metadata['slug']).to eql('introduction-neo4j-4-0')
|
55
55
|
expect(metadata['tags']).to eql(%w[intro neo4j])
|
56
56
|
end
|
57
|
-
it 'should generate metadata with taxonomies (list of tuples)' do
|
57
|
+
it 'should generate metadata with taxonomies (list of tuples) using document attribute' do
|
58
58
|
input = <<~'ADOC'
|
59
59
|
= Introduction to Neo4j 4.0
|
60
60
|
:document-metadata-attrs-include: slug,tags*,taxonomies*<>
|
@@ -74,5 +74,80 @@ describe Neo4j::AsciidoctorExtensions::DocumentMetadataGeneratorPostProcessor do
|
|
74
74
|
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'programming_language' }['values']).to eql(%w[java])
|
75
75
|
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'neo4j_version' }['values']).to eql(%w[3-5 3-6])
|
76
76
|
end
|
77
|
+
it 'should generate metadata with taxonomies (list of tuples) using document attribute with pass' do
|
78
|
+
input = <<~'ADOC'
|
79
|
+
= Introduction to Neo4j 4.0
|
80
|
+
:document-metadata-attrs-include: pass:[slug,tags*,taxonomies*<>]
|
81
|
+
:slug: introduction-neo4j-4-0
|
82
|
+
:tags: intro , neo4j,,
|
83
|
+
:taxonomies: os= linux,,programming_language =java, neo4j_version=3-5; 3-6;
|
84
|
+
|
85
|
+
This is a paragraph.
|
86
|
+
ADOC
|
87
|
+
Asciidoctor.convert(input, safe: 'safe', to_file: 'spec/output/test.html')
|
88
|
+
metadata = YAML.load_file('spec/output/test.yml')
|
89
|
+
expect(metadata['title']).to eql('Introduction to Neo4j 4.0')
|
90
|
+
expect(metadata['slug']).to eql('introduction-neo4j-4-0')
|
91
|
+
expect(metadata['tags']).to eql(%w[intro neo4j])
|
92
|
+
taxonomies = metadata['taxonomies']
|
93
|
+
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'os' }['values']).to eql(%w[linux])
|
94
|
+
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'programming_language' }['values']).to eql(%w[java])
|
95
|
+
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'neo4j_version' }['values']).to eql(%w[3-5 3-6])
|
96
|
+
end
|
97
|
+
it 'should generate metadata with taxonomies (list of tuples) using CLI attribute' do
|
98
|
+
input = <<~'ADOC'
|
99
|
+
= Introduction to Neo4j 4.0
|
100
|
+
:slug: introduction-neo4j-4-0
|
101
|
+
:tags: intro , neo4j,,
|
102
|
+
:taxonomies: os= linux,,programming_language =java, neo4j_version=3-5; 3-6;
|
103
|
+
|
104
|
+
This is a paragraph.
|
105
|
+
ADOC
|
106
|
+
Asciidoctor.convert(input, safe: 'safe', to_file: 'spec/output/test.html', attributes: {
|
107
|
+
'document-metadata-attrs-include' => 'slug,tags*,taxonomies*<>'
|
108
|
+
})
|
109
|
+
metadata = YAML.load_file('spec/output/test.yml')
|
110
|
+
expect(metadata['title']).to eql('Introduction to Neo4j 4.0')
|
111
|
+
expect(metadata['slug']).to eql('introduction-neo4j-4-0')
|
112
|
+
expect(metadata['tags']).to eql(%w[intro neo4j])
|
113
|
+
taxonomies = metadata['taxonomies']
|
114
|
+
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'os' }['values']).to eql(%w[linux])
|
115
|
+
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'programming_language' }['values']).to eql(%w[java])
|
116
|
+
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'neo4j_version' }['values']).to eql(%w[3-5 3-6])
|
117
|
+
end
|
118
|
+
it 'should replace - by _ in the attribute name' do
|
119
|
+
input = <<~'ADOC'
|
120
|
+
= Introduction to Neo4j 4.0
|
121
|
+
:slug: introduction-neo4j-4-0
|
122
|
+
:parent-path: /labs
|
123
|
+
|
124
|
+
This is a paragraph.
|
125
|
+
ADOC
|
126
|
+
Asciidoctor.convert(input, safe: 'safe', to_file: 'spec/output/test.html', attributes: {
|
127
|
+
'document-metadata-attrs-include' => 'slug,parent-path'
|
128
|
+
})
|
129
|
+
metadata = YAML.load_file('spec/output/test.yml')
|
130
|
+
expect(metadata['title']).to eql('Introduction to Neo4j 4.0')
|
131
|
+
expect(metadata['slug']).to eql('introduction-neo4j-4-0')
|
132
|
+
expect(metadata['parent_path']).to eql('/labs')
|
133
|
+
end
|
134
|
+
it 'should ignore empty value in taxonomies' do
|
135
|
+
input = <<~'ADOC'
|
136
|
+
= Introduction to Neo4j 4.0
|
137
|
+
:slug: introduction-neo4j-4-0
|
138
|
+
:taxonomies: neo4j_versions= , tags= intro ; neo4j;;
|
139
|
+
|
140
|
+
This is a paragraph.
|
141
|
+
ADOC
|
142
|
+
Asciidoctor.convert(input, safe: 'safe', to_file: 'spec/output/test.html', attributes: {
|
143
|
+
'document-metadata-attrs-include' => 'slug,taxonomies*<>'
|
144
|
+
})
|
145
|
+
metadata = YAML.load_file('spec/output/test.yml')
|
146
|
+
expect(metadata['title']).to eql('Introduction to Neo4j 4.0')
|
147
|
+
expect(metadata['slug']).to eql('introduction-neo4j-4-0')
|
148
|
+
taxonomies = metadata['taxonomies']
|
149
|
+
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'neo4j_versions' }['values']).to eql([])
|
150
|
+
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'tags' }['values']).to eql(%w[intro neo4j])
|
151
|
+
end
|
77
152
|
end
|
78
153
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'asciidoctor'
|
4
|
+
require 'asciidoctor/extensions'
|
5
|
+
require_relative '../lib/neo4j/asciidoctor/extensions/attribute_update/extension'
|
6
|
+
|
7
|
+
describe Neo4j::AsciidoctorExtensions::StageSlugTreeProcessor do
|
8
|
+
context 'convert to html5' do
|
9
|
+
it 'should update slug' do
|
10
|
+
registry = Asciidoctor::Extensions.create
|
11
|
+
registry.tree_processor Neo4j::AsciidoctorExtensions::StageSlugTreeProcessor
|
12
|
+
input = <<~'ADOC'
|
13
|
+
= Introduction to Neo4j 4.0
|
14
|
+
:slug: intro-neo4j-4-0
|
15
|
+
|
16
|
+
{slug}
|
17
|
+
ADOC
|
18
|
+
output = Asciidoctor.convert(input, extension_registry: registry, standalone: false, doctype: 'inline')
|
19
|
+
(expect output).to eql '_testing_intro-neo4j-4-0'
|
20
|
+
end
|
21
|
+
it 'should not update slug' do
|
22
|
+
registry = Asciidoctor::Extensions.create
|
23
|
+
registry.tree_processor Neo4j::AsciidoctorExtensions::StageSlugTreeProcessor
|
24
|
+
input = <<~'ADOC'
|
25
|
+
= Introduction to Neo4j 4.0
|
26
|
+
:stage: production
|
27
|
+
:slug: intro-neo4j-4-0
|
28
|
+
|
29
|
+
{slug}
|
30
|
+
ADOC
|
31
|
+
output = Asciidoctor.convert(input, extension_registry: registry, standalone: false, doctype: 'inline')
|
32
|
+
(expect output).to eql 'intro-neo4j-4-0'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neo4j-asciidoctor-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guillaume Grossetie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04
|
11
|
+
date: 2020-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|
@@ -127,6 +127,7 @@ files:
|
|
127
127
|
- README.adoc
|
128
128
|
- Rakefile
|
129
129
|
- lib/neo4j/asciidoctor/extensions.rb
|
130
|
+
- lib/neo4j/asciidoctor/extensions/attribute_update/extension.rb
|
130
131
|
- lib/neo4j/asciidoctor/extensions/course_document_attributes.rb
|
131
132
|
- lib/neo4j/asciidoctor/extensions/course_document_attributes/extension.rb
|
132
133
|
- lib/neo4j/asciidoctor/extensions/cypher_syntax_role.rb
|
@@ -139,6 +140,9 @@ files:
|
|
139
140
|
- lib/neo4j/asciidoctor/extensions/revealjs_linear_navigation/extension.rb
|
140
141
|
- lib/neo4j/asciidoctor/extensions/revealjs_speaker_notes_aggregator.rb
|
141
142
|
- lib/neo4j/asciidoctor/extensions/revealjs_speaker_notes_aggregator/extension.rb
|
143
|
+
- lib/neo4j/asciidoctor/extensions/stage_slug.rb
|
144
|
+
- lib/neo4j/rouge/themes/neo.rb
|
145
|
+
- lib/neo4j/rouge/themes/neo_forest.rb
|
142
146
|
- neo4j-asciidoctor-extensions.gemspec
|
143
147
|
- spec/.rubocop.yml
|
144
148
|
- spec/cypher_syntax_role_spec.rb
|
@@ -146,6 +150,7 @@ files:
|
|
146
150
|
- spec/inline_highlighter_rouge_spec.rb
|
147
151
|
- spec/revealjs_linear_navigation_spec.rb
|
148
152
|
- spec/revealjs_speaker_notes_aggregator_spec.rb
|
153
|
+
- spec/stage_slug_spec.rb
|
149
154
|
- tasks/bundler.rake
|
150
155
|
- tasks/lint.rake
|
151
156
|
- tasks/rspec.rake
|
@@ -181,3 +186,4 @@ test_files:
|
|
181
186
|
- spec/inline_highlighter_rouge_spec.rb
|
182
187
|
- spec/revealjs_linear_navigation_spec.rb
|
183
188
|
- spec/revealjs_speaker_notes_aggregator_spec.rb
|
189
|
+
- spec/stage_slug_spec.rb
|