neo4j-asciidoctor-extensions 0.0.5 → 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 +4 -4
- data/Gemfile.lock +3 -3
- data/README.adoc +1 -1
- data/lib/neo4j/asciidoctor/extensions/course_document_attributes/extension.rb +14 -16
- data/lib/neo4j/asciidoctor/extensions/document_metadata_generator/extension.rb +4 -4
- data/lib/neo4j/rouge/themes/neo.rb +45 -0
- data/lib/neo4j/rouge/themes/neo_forest.rb +47 -0
- data/neo4j-asciidoctor-extensions.gemspec +3 -3
- data/spec/document_metadata_generator_spec.rb +76 -1
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ed2835da9be7c20ddf83b173cd740644a00986b0216e1d77d30ca65b359296a
|
4
|
+
data.tar.gz: 0b2d0ef0ec3f5d5c05910d8768e836d9147c045a4cd017f326fa1c261d2212bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5edbf5d0eb1e83d2d82dcbd3e9515f645b48b56d246bb30e9caa005079c7742967bac7bbffc3d73d415c3b968fa8346f3e8116557475e2c8a573e8155902461f
|
7
|
+
data.tar.gz: 83660797c903651ebcabbc8c167faaa19ac42685ad866641f4fb411f70c62a8512bfb986ceb1653a5c73c96753d2aee1a9fa2de08c2b0718fb1f5c97e33fad0d
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
neo4j-asciidoctor-extensions (0.0
|
5
|
-
asciidoctor (~> 2.0
|
4
|
+
neo4j-asciidoctor-extensions (0.3.0)
|
5
|
+
asciidoctor (~> 2.0)
|
6
6
|
asciidoctor-pdf (= 1.5.3)
|
7
|
-
rouge (~> 3.18
|
7
|
+
rouge (~> 3.18)
|
8
8
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
data/README.adoc
CHANGED
@@ -216,7 +216,7 @@ end
|
|
216
216
|
== Release
|
217
217
|
|
218
218
|
The release process is automated and relies on GitHub Actions.
|
219
|
-
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.
|
220
220
|
|
221
221
|
The `RUBYGEMS_API_KEY` secret is configured on GitHub.
|
222
222
|
See the `.github/workflows/release.yml` file for details.
|
@@ -17,18 +17,16 @@ module Neo4j
|
|
17
17
|
TESTING_SLUG_PREFIX = '_testing_'
|
18
18
|
|
19
19
|
def process(document)
|
20
|
-
if (
|
21
|
-
|
22
|
-
path = File.expand_path('../build/online/asciidoctor-module-descriptor.yml', docdir)
|
23
|
-
if File.exist?(path)
|
20
|
+
if (module_descriptor_path = document.attr('module-descriptor-path'))
|
21
|
+
if File.exist?(module_descriptor_path)
|
24
22
|
require 'yaml'
|
25
|
-
module_descriptor = YAML.load_file(
|
26
|
-
if (document_slug = document.attr
|
23
|
+
module_descriptor = YAML.load_file(module_descriptor_path)
|
24
|
+
if (document_slug = document.attr('slug')) && document.attr('stage') != 'production'
|
27
25
|
document_slug = "#{TESTING_SLUG_PREFIX}#{document_slug}"
|
28
|
-
document.set_attr
|
26
|
+
document.set_attr('slug', document_slug)
|
29
27
|
end
|
30
28
|
set_attributes(document, document_slug, module_descriptor)
|
31
|
-
document.set_attribute
|
29
|
+
document.set_attribute('module-name', module_descriptor['module_name'])
|
32
30
|
end
|
33
31
|
end
|
34
32
|
document
|
@@ -38,17 +36,17 @@ module Neo4j
|
|
38
36
|
|
39
37
|
def set_attributes(document, document_slug, module_descriptor)
|
40
38
|
module_descriptor['pages'].each_with_index do |page, index|
|
41
|
-
document.set_attribute
|
42
|
-
document.set_attribute
|
39
|
+
document.set_attribute("module-toc-link-#{index}", page['url'])
|
40
|
+
document.set_attribute("module-toc-title-#{index}", page['title'])
|
43
41
|
page_slug = page['slug']
|
44
42
|
page_slug = "#{TESTING_SLUG_PREFIX}#{page_slug}" unless document.attr('stage') == 'production'
|
45
|
-
document.set_attribute
|
46
|
-
document.set_attribute
|
43
|
+
document.set_attribute("module-toc-slug-#{index}", page_slug)
|
44
|
+
document.set_attribute("module-quiz-#{index}", page['quiz'])
|
47
45
|
next unless document_slug == page_slug
|
48
46
|
|
49
47
|
set_next_attributes(document, page)
|
50
|
-
document.set_attribute
|
51
|
-
document.set_attribute
|
48
|
+
document.set_attribute('module-quiz', page['quiz'])
|
49
|
+
document.set_attribute('module-certificate', page['certificate'])
|
52
50
|
end
|
53
51
|
end
|
54
52
|
|
@@ -57,8 +55,8 @@ module Neo4j
|
|
57
55
|
|
58
56
|
next_page_slug = page['next']['slug']
|
59
57
|
next_page_slug = "#{TESTING_SLUG_PREFIX}#{next_page_slug}" unless document.attr('stage') == 'production'
|
60
|
-
document.set_attr
|
61
|
-
document.set_attr
|
58
|
+
document.set_attr('module-next-slug', next_page_slug, false)
|
59
|
+
document.set_attr('module-next-title', page['next']['title'], false)
|
62
60
|
end
|
63
61
|
end
|
64
62
|
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
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'neo4j-asciidoctor-extensions'
|
5
|
-
s.version = '0.0
|
5
|
+
s.version = '0.3.0'
|
6
6
|
s.summary = 'Asciidoctor extensions by Neo4j.'
|
7
7
|
s.description = 'Asciidoctor extensions by Neo4j.'
|
8
8
|
|
@@ -18,9 +18,9 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
19
19
|
s.require_paths = ['lib']
|
20
20
|
|
21
|
-
s.add_runtime_dependency 'asciidoctor', '~> 2.0
|
21
|
+
s.add_runtime_dependency 'asciidoctor', '~> 2.0'
|
22
22
|
s.add_runtime_dependency 'asciidoctor-pdf', '1.5.3'
|
23
|
-
s.add_runtime_dependency 'rouge', '~> 3.18
|
23
|
+
s.add_runtime_dependency 'rouge', '~> 3.18'
|
24
24
|
|
25
25
|
s.add_development_dependency 'asciidoctor-revealjs', '~> 4.0'
|
26
26
|
s.add_development_dependency 'rake', '~> 12.3.2'
|
@@ -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
|
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.3.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-
|
11
|
+
date: 2020-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.0
|
19
|
+
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.0
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: asciidoctor-pdf
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.18
|
47
|
+
version: '3.18'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.18
|
54
|
+
version: '3.18'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: asciidoctor-revealjs
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,6 +141,8 @@ files:
|
|
141
141
|
- lib/neo4j/asciidoctor/extensions/revealjs_speaker_notes_aggregator.rb
|
142
142
|
- lib/neo4j/asciidoctor/extensions/revealjs_speaker_notes_aggregator/extension.rb
|
143
143
|
- lib/neo4j/asciidoctor/extensions/stage_slug.rb
|
144
|
+
- lib/neo4j/rouge/themes/neo.rb
|
145
|
+
- lib/neo4j/rouge/themes/neo_forest.rb
|
144
146
|
- neo4j-asciidoctor-extensions.gemspec
|
145
147
|
- spec/.rubocop.yml
|
146
148
|
- spec/cypher_syntax_role_spec.rb
|